From d893ac690cfe34e922d34a65a1ca526f8297c129 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 13 Oct 2011 22:14:41 +0000 Subject: [PATCH 001/119] rename confusing constants (no functional change) - OB_BOUND_POLYT --> OB_BOUND_CONVEX_HULL - OB_BOUND_POLYH --> OB_BOUND_TRIANGLE_MESH --- source/blender/makesdna/DNA_object_types.h | 14 +++++++------- source/blender/makesrna/intern/rna_object.c | 14 +++++++------- .../Converter/BL_BlenderDataConversion.cpp | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index f0c7cf8cc45..6faf86b74a5 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -412,14 +412,14 @@ typedef struct DupliObject { #define OB_EMPTY_IMAGE 8 /* boundtype */ -#define OB_BOUND_BOX 0 -#define OB_BOUND_SPHERE 1 -#define OB_BOUND_CYLINDER 2 -#define OB_BOUND_CONE 3 -#define OB_BOUND_POLYH 4 -#define OB_BOUND_POLYT 5 +#define OB_BOUND_BOX 0 +#define OB_BOUND_SPHERE 1 +#define OB_BOUND_CYLINDER 2 +#define OB_BOUND_CONE 3 +#define OB_BOUND_TRIANGLE_MESH 4 +#define OB_BOUND_CONVEX_HULL 5 /* #define OB_BOUND_DYN_MESH 6 */ /*UNUSED*/ -#define OB_BOUND_CAPSULE 7 +#define OB_BOUND_CAPSULE 7 /* **************** BASE ********************* */ diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 428599af977..bbbec3bcf9a 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -83,8 +83,8 @@ static EnumPropertyItem collision_bounds_items[] = { {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", ""}, {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", ""}, {OB_BOUND_CONE, "CONE", 0, "Cone", ""}, - {OB_BOUND_POLYT, "CONVEX_HULL", 0, "Convex Hull", ""}, - {OB_BOUND_POLYH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""}, + {OB_BOUND_CONVEX_HULL, "CONVEX_HULL", 0, "Convex Hull", ""}, + {OB_BOUND_TRIANGLE_MESH, "TRIANGLE_MESH", 0, "Triangle Mesh", ""}, {OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", ""}, //{OB_DYN_MESH, "DYNAMIC_MESH", 0, "Dynamic Mesh", ""}, {0, NULL, 0, NULL, NULL}}; @@ -430,8 +430,8 @@ static EnumPropertyItem *rna_Object_collision_bounds_itemf(bContext *UNUSED(C), EnumPropertyItem *item= NULL; int totitem= 0; - RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYH); - RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_POLYT); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_TRIANGLE_MESH); + RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONVEX_HULL); if(ob->body_type!=OB_BODY_TYPE_SOFT) { RNA_enum_items_add_value(&item, &totitem, collision_bounds_items, OB_BOUND_CONE); @@ -934,9 +934,9 @@ static void rna_GameObjectSettings_physics_type_set(PointerRNA *ptr, int value) ob->gameflag &= ~(OB_RIGID_BODY|OB_OCCLUDER|OB_SENSOR|OB_NAVMESH); /* assume triangle mesh, if no bounds chosen for soft body */ - if ((ob->gameflag & OB_BOUNDS) && (ob->boundtypegameflag & OB_BOUNDS) && (ob->boundtypeboundtype=OB_BOUND_POLYH; + ob->boundtype= OB_BOUND_TRIANGLE_MESH; } /* create a BulletSoftBody structure if not already existing */ if (!ob->bsoft) @@ -1804,7 +1804,7 @@ static void rna_def_object(BlenderRNA *brna) {OB_BOUND_SPHERE, "SPHERE", 0, "Sphere", "Draw bounds as sphere"}, {OB_BOUND_CYLINDER, "CYLINDER", 0, "Cylinder", "Draw bounds as cylinder"}, {OB_BOUND_CONE, "CONE", 0, "Cone", "Draw bounds as cone"}, - {OB_BOUND_POLYH, "POLYHEDRON", 0, "Polyhedron", "Draw bounds as polyhedron"}, + {OB_BOUND_TRIANGLE_MESH, "POLYHEDRON", 0, "Polyhedron", "Draw bounds as polyhedron"}, {OB_BOUND_CAPSULE, "CAPSULE", 0, "Capsule", "Draw bounds as capsule"}, {0, NULL, 0, NULL, NULL}}; diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index 8633a14de03..e6783d7c106 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1590,7 +1590,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, objprop.m_boundobject.box.m_extends[1]=2.f*bb.m_extends[1]; objprop.m_boundobject.box.m_extends[2]=2.f*bb.m_extends[2]; break; - case OB_BOUND_POLYT: + case OB_BOUND_CONVEX_HULL: if (blenderobject->type == OB_MESH) { objprop.m_boundclass = KX_BOUNDPOLYTOPE; @@ -1598,7 +1598,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, } // Object is not a mesh... fall through OB_BOUND_POLYH to // OB_BOUND_SPHERE - case OB_BOUND_POLYH: + case OB_BOUND_TRIANGLE_MESH: if (blenderobject->type == OB_MESH) { objprop.m_boundclass = KX_BOUNDMESH; From 9e17ecf0100af4e95f32a7b03673e880a9fc8d1e Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Thu, 13 Oct 2011 22:19:29 +0000 Subject: [PATCH 002/119] Fixing [#28907] Frozen playback. Also fixing two more crashes when audio files don't exist/cannot be read and apply a changed file path of a sound, reported by Jens Verwiebe in IRC. --- intern/audaspace/intern/AUD_NULLDevice.cpp | 8 ++++---- source/blender/blenkernel/intern/sound.c | 11 ++++++++--- .../editors/space_sequencer/sequencer_draw.c | 3 +++ source/blender/makesrna/intern/rna_sequencer.c | 2 ++ .../blender/windowmanager/intern/wm_event_system.c | 13 ++++++++----- 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/intern/audaspace/intern/AUD_NULLDevice.cpp b/intern/audaspace/intern/AUD_NULLDevice.cpp index b7d658aafe6..cb76f9eab88 100644 --- a/intern/audaspace/intern/AUD_NULLDevice.cpp +++ b/intern/audaspace/intern/AUD_NULLDevice.cpp @@ -69,7 +69,7 @@ bool AUD_NULLDevice::AUD_NULLHandle::seek(float position) float AUD_NULLDevice::AUD_NULLHandle::getPosition() { - return 0.0f; + return std::numeric_limits::quiet_NaN(); } AUD_Status AUD_NULLDevice::AUD_NULLHandle::getStatus() @@ -79,7 +79,7 @@ AUD_Status AUD_NULLDevice::AUD_NULLHandle::getStatus() float AUD_NULLDevice::AUD_NULLHandle::getVolume() { - return 0.0f; + return std::numeric_limits::quiet_NaN(); } bool AUD_NULLDevice::AUD_NULLHandle::setVolume(float volume) @@ -89,7 +89,7 @@ bool AUD_NULLDevice::AUD_NULLHandle::setVolume(float volume) float AUD_NULLDevice::AUD_NULLHandle::getPitch() { - return 0.0f; + return std::numeric_limits::quiet_NaN(); } bool AUD_NULLDevice::AUD_NULLHandle::setPitch(float pitch) @@ -153,7 +153,7 @@ void AUD_NULLDevice::unlock() float AUD_NULLDevice::getVolume() const { - return 0; + return std::numeric_limits::quiet_NaN(); } void AUD_NULLDevice::setVolume(float volume) diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index f2d92154c66..649b4f0b724 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -295,7 +295,10 @@ void sound_cache(struct bSound* sound) AUD_unload(sound->cache); sound->cache = AUD_bufferSound(sound->handle); - sound->playback_handle = sound->cache; + if(sound->cache) + sound->playback_handle = sound->cache; + else + sound->playback_handle = sound->handle; } void sound_cache_notifying(struct Main* main, struct bSound* sound) @@ -332,6 +335,8 @@ void sound_load(struct Main *bmain, struct bSound* sound) sound->playback_handle = NULL; } + sound_free_waveform(sound); + // XXX unused currently #if 0 switch(sound->type) @@ -625,7 +630,7 @@ float sound_sync_scene(struct Scene *scene) else return AUD_getPosition(scene->sound_scene_handle); } - return 0.0f; + return .0f/.0f; } int sound_scene_playing(struct Scene *scene) @@ -782,7 +787,7 @@ static void sound_start_play_scene(struct Scene *UNUSED(scene)) {} void sound_play_scene(struct Scene *UNUSED(scene)) {} void sound_stop_scene(struct Scene *UNUSED(scene)) {} void sound_seek_scene(struct Main *UNUSED(bmain), struct Scene *UNUSED(scene)) {} -float sound_sync_scene(struct Scene *UNUSED(scene)) { return 0.0f; } +float sound_sync_scene(struct Scene *UNUSED(scene)) { return .0f/.0f; } int sound_scene_playing(struct Scene *UNUSED(scene)) { return -1; } int sound_read_sound_buffer(struct bSound* UNUSED(sound), float* UNUSED(buffer), int UNUSED(length), float UNUSED(start), float UNUSED(end)) { return 0; } void sound_read_waveform(struct bSound* sound) { (void)sound; } diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index 8f1ea6fe254..13e54c9a4c0 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -192,6 +192,9 @@ static void drawseqwave(Scene *scene, Sequence *seq, float x1, float y1, float x waveform = seq->sound->waveform; + if(!waveform) + return; + startsample = floor((seq->startofs + seq->anim_startofs)/FPS * SOUND_WAVE_SAMPLES_PER_SECOND); endsample = ceil((seq->startofs + seq->anim_startofs + seq->enddisp - seq->startdisp)/FPS * SOUND_WAVE_SAMPLES_PER_SECOND); samplestep = (endsample-startsample) * stepsize / (x2-x1); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index a75166c3e99..92739148b99 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -453,6 +453,8 @@ static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value) PointerRNA id_ptr; RNA_id_pointer_create((ID *)seq->sound, &id_ptr); RNA_string_set(&id_ptr, "filepath", value); + sound_load(G.main, seq->sound); + sound_update_scene_sound(seq->scene_sound, seq->sound); } BLI_split_dirfile(value, dir, name); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index cafee6b49ca..074151c9abe 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1790,11 +1790,14 @@ void wm_event_do_handlers(bContext *C) } if(playing == 0) { - int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f; - if(ncfra != scene->r.cfra) { - scene->r.cfra = ncfra; - ED_update_for_newframe(CTX_data_main(C), scene, win->screen, 1); - WM_event_add_notifier(C, NC_WINDOW, NULL); + float time = sound_sync_scene(scene); + if(finite(time)) { + int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f; + if(ncfra != scene->r.cfra) { + scene->r.cfra = ncfra; + ED_update_for_newframe(CTX_data_main(C), scene, win->screen, 1); + WM_event_add_notifier(C, NC_WINDOW, NULL); + } } } From 0c0259d93100bdbcd19c4c9deda6799de2a1f075 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 14 Oct 2011 02:31:04 +0000 Subject: [PATCH 003/119] fix [#28909] OpenCollada export / import sintel lite v2.1 crashes on import. --- source/blender/collada/AnimationImporter.cpp | 70 ++++++++++--------- .../makesrna/rna_cleanup/rna_cleaner.py | 2 +- .../makesrna/rna_cleanup/rna_cleaner_merge.py | 2 +- .../Converter/BL_BlenderDataConversion.cpp | 2 +- 4 files changed, 40 insertions(+), 36 deletions(-) diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index 61f1b1dfa08..f3a6e2371bb 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -962,30 +962,32 @@ void AnimationImporter::translate_Animations ( COLLADAFW::Node * node , for (unsigned int j = 0; j < matBinds.getCount(); j++) { const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial(); const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]); - const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects(); - COLLADAFW::EffectCommon *efc = commonEffects[0]; - if((animType->material & MATERIAL_SHININESS) != 0){ - const COLLADAFW::FloatOrParam *shin = &(efc->getShininess()); - const COLLADAFW::UniqueId& listid = shin->getAnimationList(); - Assign_float_animations( listid, AnimCurves , "specular_hardness" ); - } + if (ef != NULL) { /* can be NULL [#28909] */ + const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects(); + COLLADAFW::EffectCommon *efc = commonEffects[0]; + if((animType->material & MATERIAL_SHININESS) != 0){ + const COLLADAFW::FloatOrParam *shin = &(efc->getShininess()); + const COLLADAFW::UniqueId& listid = shin->getAnimationList(); + Assign_float_animations( listid, AnimCurves , "specular_hardness" ); + } - if((animType->material & MATERIAL_IOR) != 0){ - const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction()); - const COLLADAFW::UniqueId& listid = ior->getAnimationList(); - Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" ); - } + if((animType->material & MATERIAL_IOR) != 0){ + const COLLADAFW::FloatOrParam *ior = &(efc->getIndexOfRefraction()); + const COLLADAFW::UniqueId& listid = ior->getAnimationList(); + Assign_float_animations( listid, AnimCurves , "raytrace_transparency.ior" ); + } - if((animType->material & MATERIAL_SPEC_COLOR) != 0){ - const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular()); - const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList(); - Assign_color_animations( listid, AnimCurves , "specular_color" ); - } + if((animType->material & MATERIAL_SPEC_COLOR) != 0){ + const COLLADAFW::ColorOrTexture *cot = &(efc->getSpecular()); + const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList(); + Assign_color_animations( listid, AnimCurves , "specular_color" ); + } - if((animType->material & MATERIAL_DIFF_COLOR) != 0){ - const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse()); - const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList(); - Assign_color_animations( listid, AnimCurves , "diffuse_color" ); + if((animType->material & MATERIAL_DIFF_COLOR) != 0){ + const COLLADAFW::ColorOrTexture *cot = &(efc->getDiffuse()); + const COLLADAFW::UniqueId& listid = cot->getColor().getAnimationList(); + Assign_color_animations( listid, AnimCurves , "diffuse_color" ); + } } } } @@ -1051,14 +1053,16 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD for (unsigned int j = 0; j < matBinds.getCount(); j++) { const COLLADAFW::UniqueId & matuid = matBinds[j].getReferencedMaterial(); const COLLADAFW::Effect *ef = (COLLADAFW::Effect *) (FW_object_map[matuid]); - const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects(); - if(!commonEffects.empty()) { - COLLADAFW::EffectCommon *efc = commonEffects[0]; - types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS); - types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR); - types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR); - // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY); - types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR); + if (ef != NULL) { /* can be NULL [#28909] */ + const COLLADAFW::CommonEffectPointerArray& commonEffects = ef->getCommonEffects(); + if(!commonEffects.empty()) { + COLLADAFW::EffectCommon *efc = commonEffects[0]; + types->material = setAnimType(&(efc->getShininess()),(types->material), MATERIAL_SHININESS); + types->material = setAnimType(&(efc->getSpecular().getColor()),(types->material), MATERIAL_SPEC_COLOR); + types->material = setAnimType(&(efc->getDiffuse().getColor()),(types->material), MATERIAL_DIFF_COLOR); + // types->material = setAnimType(&(efc->get()),(types->material), MATERIAL_TRANSPARENCY); + types->material = setAnimType(&(efc->getIndexOfRefraction()),(types->material), MATERIAL_IOR); + } } } } @@ -1067,10 +1071,10 @@ AnimationImporter::AnimMix* AnimationImporter::get_animation_type ( const COLLAD int AnimationImporter::setAnimType ( const COLLADAFW::Animatable * prop , int types, int addition) { - const COLLADAFW::UniqueId& listid = prop->getAnimationList(); - if (animlist_map.find(listid) != animlist_map.end()) - return types|addition; - else return types; + const COLLADAFW::UniqueId& listid = prop->getAnimationList(); + if (animlist_map.find(listid) != animlist_map.end()) + return types|addition; + else return types; } // Is not used anymore. diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index ae17ade36d7..5df6e9a86ff 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python3.1 +#! /usr/bin/env python3 """ This script is used to help cleaning RNA api. diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py index 8d2fe07b774..89d95b5a627 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python3.1 +#! /usr/bin/env python3 import sys diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp index e6783d7c106..0f5176af60c 100644 --- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp +++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp @@ -1596,7 +1596,7 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj, objprop.m_boundclass = KX_BOUNDPOLYTOPE; break; } - // Object is not a mesh... fall through OB_BOUND_POLYH to + // Object is not a mesh... fall through OB_BOUND_TRIANGLE_MESH to // OB_BOUND_SPHERE case OB_BOUND_TRIANGLE_MESH: if (blenderobject->type == OB_MESH) From 13490b1ac3ee1a98a4e968555df53a4699f23f27 Mon Sep 17 00:00:00 2001 From: Andrew Wiggin Date: Fri, 14 Oct 2011 05:07:53 +0000 Subject: [PATCH 004/119] Fix MSVC build ( .0f/.0f fires a compiler error ) --- source/blender/blenkernel/BKE_sound.h | 1 + source/blender/blenkernel/intern/sound.c | 4 ++-- source/blender/editors/screen/screen_ops.c | 2 +- source/blender/windowmanager/intern/wm_event_system.c | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index 3728dd41089..081fb8dc132 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -35,6 +35,7 @@ * \author nzc */ +#define SOUND_ERR_FLT FLT_MIN #define SOUND_WAVE_SAMPLES_PER_SECOND 250 struct PackedFile; diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 649b4f0b724..b9a02df423e 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -630,7 +630,7 @@ float sound_sync_scene(struct Scene *scene) else return AUD_getPosition(scene->sound_scene_handle); } - return .0f/.0f; + return SOUND_ERR_FLT; } int sound_scene_playing(struct Scene *scene) @@ -787,7 +787,7 @@ static void sound_start_play_scene(struct Scene *UNUSED(scene)) {} void sound_play_scene(struct Scene *UNUSED(scene)) {} void sound_stop_scene(struct Scene *UNUSED(scene)) {} void sound_seek_scene(struct Main *UNUSED(bmain), struct Scene *UNUSED(scene)) {} -float sound_sync_scene(struct Scene *UNUSED(scene)) { return .0f/.0f; } +float sound_sync_scene(struct Scene *UNUSED(scene)) { return SOUND_ERR_FLT; } int sound_scene_playing(struct Scene *UNUSED(scene)) { return -1; } int sound_read_sound_buffer(struct bSound* UNUSED(sound), float* UNUSED(buffer), int UNUSED(length), float UNUSED(start), float UNUSED(end)) { return 0; } void sound_read_waveform(struct bSound* sound) { (void)sound; } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index a2be1e8fa6f..8d9190ac80c 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2814,7 +2814,7 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), wmEvent *e else if (sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0; else sync= (scene->flag & SCE_FRAME_DROP); - if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene))) + if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && ((time = sound_sync_scene(scene)) != SOUND_ERR_FLT)) scene->r.cfra = (double)time * FPS + 0.5; else { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 074151c9abe..4055b6c7d9e 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -33,7 +33,6 @@ #include #include -#include #include "DNA_listBase.h" #include "DNA_screen_types.h" @@ -47,6 +46,7 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" +#include "BLI_math.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -1791,7 +1791,7 @@ void wm_event_do_handlers(bContext *C) if(playing == 0) { float time = sound_sync_scene(scene); - if(finite(time)) { + if(time != SOUND_ERR_FLT) { int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f; if(ncfra != scene->r.cfra) { scene->r.cfra = ncfra; From eaff9a1c1b420dde7f291c8fb8715f18dd512f64 Mon Sep 17 00:00:00 2001 From: Andrew Wiggin Date: Fri, 14 Oct 2011 07:41:45 +0000 Subject: [PATCH 005/119] Reverting my windows build fix because it breaks the bug fix committed in r40995 --- source/blender/blenkernel/BKE_sound.h | 1 - source/blender/blenkernel/intern/sound.c | 4 ++-- source/blender/editors/screen/screen_ops.c | 2 +- source/blender/windowmanager/intern/wm_event_system.c | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/source/blender/blenkernel/BKE_sound.h b/source/blender/blenkernel/BKE_sound.h index 081fb8dc132..3728dd41089 100644 --- a/source/blender/blenkernel/BKE_sound.h +++ b/source/blender/blenkernel/BKE_sound.h @@ -35,7 +35,6 @@ * \author nzc */ -#define SOUND_ERR_FLT FLT_MIN #define SOUND_WAVE_SAMPLES_PER_SECOND 250 struct PackedFile; diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index b9a02df423e..649b4f0b724 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -630,7 +630,7 @@ float sound_sync_scene(struct Scene *scene) else return AUD_getPosition(scene->sound_scene_handle); } - return SOUND_ERR_FLT; + return .0f/.0f; } int sound_scene_playing(struct Scene *scene) @@ -787,7 +787,7 @@ static void sound_start_play_scene(struct Scene *UNUSED(scene)) {} void sound_play_scene(struct Scene *UNUSED(scene)) {} void sound_stop_scene(struct Scene *UNUSED(scene)) {} void sound_seek_scene(struct Main *UNUSED(bmain), struct Scene *UNUSED(scene)) {} -float sound_sync_scene(struct Scene *UNUSED(scene)) { return SOUND_ERR_FLT; } +float sound_sync_scene(struct Scene *UNUSED(scene)) { return .0f/.0f; } int sound_scene_playing(struct Scene *UNUSED(scene)) { return -1; } int sound_read_sound_buffer(struct bSound* UNUSED(sound), float* UNUSED(buffer), int UNUSED(length), float UNUSED(start), float UNUSED(end)) { return 0; } void sound_read_waveform(struct bSound* sound) { (void)sound; } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 8d9190ac80c..a2be1e8fa6f 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -2814,7 +2814,7 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), wmEvent *e else if (sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0; else sync= (scene->flag & SCE_FRAME_DROP); - if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && ((time = sound_sync_scene(scene)) != SOUND_ERR_FLT)) + if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene))) scene->r.cfra = (double)time * FPS + 0.5; else { diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 4055b6c7d9e..074151c9abe 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -33,6 +33,7 @@ #include #include +#include #include "DNA_listBase.h" #include "DNA_screen_types.h" @@ -46,7 +47,6 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_math.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -1791,7 +1791,7 @@ void wm_event_do_handlers(bContext *C) if(playing == 0) { float time = sound_sync_scene(scene); - if(time != SOUND_ERR_FLT) { + if(finite(time)) { int ncfra = sound_sync_scene(scene) * (float)FPS + 0.5f; if(ncfra != scene->r.cfra) { scene->r.cfra = ncfra; From 8868f9455c4a1469b58a454c0ccc9b81a2cb42a2 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Fri, 14 Oct 2011 07:56:33 +0000 Subject: [PATCH 006/119] Hopefully fixing windows build problems with this hack now. :-) --- source/blender/blenkernel/intern/sound.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 649b4f0b724..07df12d5468 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -63,6 +63,10 @@ #include "BKE_sequencer.h" #include "BKE_scene.h" +// evil quiet NaN definition +static const int NAN_INT = 0x7FC00000; +#define NAN_FLT *((float*)(&NAN_INT)) + #ifdef WITH_AUDASPACE // evil global ;-) static int sound_cfra; @@ -630,7 +634,7 @@ float sound_sync_scene(struct Scene *scene) else return AUD_getPosition(scene->sound_scene_handle); } - return .0f/.0f; + return NAN_FLT; } int sound_scene_playing(struct Scene *scene) @@ -787,7 +791,7 @@ static void sound_start_play_scene(struct Scene *UNUSED(scene)) {} void sound_play_scene(struct Scene *UNUSED(scene)) {} void sound_stop_scene(struct Scene *UNUSED(scene)) {} void sound_seek_scene(struct Main *UNUSED(bmain), struct Scene *UNUSED(scene)) {} -float sound_sync_scene(struct Scene *UNUSED(scene)) { return .0f/.0f; } +float sound_sync_scene(struct Scene *UNUSED(scene)) { return NAN_FLT; } int sound_scene_playing(struct Scene *UNUSED(scene)) { return -1; } int sound_read_sound_buffer(struct bSound* UNUSED(sound), float* UNUSED(buffer), int UNUSED(length), float UNUSED(start), float UNUSED(end)) { return 0; } void sound_read_waveform(struct bSound* sound) { (void)sound; } From 309721c2e47291841faf1b38acf3fb5024be9f2d Mon Sep 17 00:00:00 2001 From: Andrew Wiggin Date: Fri, 14 Oct 2011 08:06:59 +0000 Subject: [PATCH 007/119] Other part of the MSVC build fix (need definition for "finite" macro from BLI_math.h) --- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 074151c9abe..33e98007fed 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -33,7 +33,6 @@ #include #include -#include #include "DNA_listBase.h" #include "DNA_screen_types.h" @@ -47,6 +46,7 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" +#include "BLI_math.h" #include "BKE_blender.h" #include "BKE_context.h" From e5e201ccd839f149d113798f944bb6862b80804d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 14 Oct 2011 11:24:20 +0000 Subject: [PATCH 008/119] Fix for first part of #28911: driver not working properly since 2.594 Missed id type set for driver target when setting target id. Patch by me and Campbell. --- source/blender/blenkernel/intern/ipo.c | 4 ++++ source/blender/editors/interface/interface_anim.c | 1 + 2 files changed, 5 insertions(+) diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 91f3c7a22ba..609f6cd38f1 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -1034,12 +1034,14 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver) /* first bone target */ dtar= &dvar->targets[0]; dtar->id= (ID *)idriver->ob; + dtar->idtype= ID_OB; if (idriver->name[0]) BLI_strncpy(dtar->pchan_name, idriver->name, sizeof(dtar->pchan_name)); /* second bone target (name was stored in same var as the first one) */ dtar= &dvar->targets[1]; dtar->id= (ID *)idriver->ob; + dtar->idtype= ID_OB; if (idriver->name[0]) // xxx... for safety BLI_strncpy(dtar->pchan_name, idriver->name+DRIVER_NAME_OFFS, sizeof(dtar->pchan_name)); } @@ -1051,6 +1053,7 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver) /* only requires a single target */ dtar= &dvar->targets[0]; dtar->id= (ID *)idriver->ob; + dtar->idtype= ID_OB; if (idriver->name[0]) BLI_strncpy(dtar->pchan_name, idriver->name, sizeof(dtar->pchan_name)); dtar->transChan= adrcode_to_dtar_transchan(idriver->adrcode); @@ -1065,6 +1068,7 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver) /* only requires single target */ dtar= &dvar->targets[0]; dtar->id= (ID *)idriver->ob; + dtar->idtype= ID_OB; dtar->transChan= adrcode_to_dtar_transchan(idriver->adrcode); } } diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index c35996701ee..6c661ba014e 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -179,6 +179,7 @@ int ui_but_anim_expression_create(uiBut *but, const char *str) dtar = &dvar->targets[0]; dtar->id = (ID *)CTX_data_scene(C); // XXX: should we check that C is valid first? + dtar->idtype= ID_SCE; dtar->rna_path = BLI_sprintfN("frame_current"); } From 43de42824f4b7d20188d80aedf175054d8e1c552 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 14 Oct 2011 12:17:35 +0000 Subject: [PATCH 009/119] cmake's find glew wasnt working right - if glew wasnt found installing the package would not help since the not-found result was cached. --- build_files/cmake/Modules/FindGLEW.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_files/cmake/Modules/FindGLEW.cmake b/build_files/cmake/Modules/FindGLEW.cmake index c791327c8da..7e1b00d0923 100644 --- a/build_files/cmake/Modules/FindGLEW.cmake +++ b/build_files/cmake/Modules/FindGLEW.cmake @@ -51,9 +51,9 @@ ELSE (WIN32) ENDIF (WIN32) IF (GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 1 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") + SET(GLEW_FOUND TRUE) ELSE (GLEW_INCLUDE_PATH) - SET( GLEW_FOUND 0 CACHE STRING "Set to 1 if GLEW is found, 0 otherwise") + SET(GLEW_FOUND FALSE) ENDIF (GLEW_INCLUDE_PATH) MARK_AS_ADVANCED( GLEW_FOUND ) From 22e4f9e3bbdce90f8c3fca6b16ee09a7e9917ddd Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 14 Oct 2011 12:20:58 +0000 Subject: [PATCH 010/119] Fix #28914: crash loading file saved with cycles builds in trunk. The cause is an unknown node socket type in node groups. Ideally the node system should handle this better and remove the unknown sockets from groups, but this is a bit of a risky fix to do now, so instead the shader socket type has been added, since this is a simple change and the code has been tested well. --- source/blender/nodes/intern/node_socket.c | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c index aabaf5b86de..51e48b84383 100644 --- a/source/blender/nodes/intern/node_socket.c +++ b/source/blender/nodes/intern/node_socket.c @@ -128,6 +128,21 @@ static bNodeSocketType node_socket_type_boolean = { /* buttonfunc */ NULL, }; +/****************** SHADER ******************/ + +static bNodeSocketType node_socket_type_shader = { + /* type */ SOCK_SHADER, + /* ui_name */ "Shader", + /* ui_description */ "Shader", + /* ui_icon */ 0, + /* ui_color */ {100,200,100,255}, + + /* value_structname */ NULL, + /* value_structsize */ 0, + + /* buttonfunc */ NULL, +}; + /****************** MESH ******************/ static bNodeSocketType node_socket_type_mesh = { @@ -153,6 +168,7 @@ void node_socket_type_init(bNodeSocketType *types[]) INIT_TYPE(rgba); INIT_TYPE(int); INIT_TYPE(boolean); + INIT_TYPE(shader); INIT_TYPE(mesh); #undef INIT_TYPE @@ -241,6 +257,17 @@ struct bNodeSocket *nodeAddOutputRGBA(struct bNodeTree *ntree, struct bNode *nod return sock; } +struct bNodeSocket *nodeAddInputShader(struct bNodeTree *ntree, struct bNode *node, const char *name) +{ + bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_IN, name, SOCK_SHADER); + return sock; +} +struct bNodeSocket *nodeAddOutputShader(struct bNodeTree *ntree, struct bNode *node, const char *name) +{ + bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_OUT, name, SOCK_SHADER); + return sock; +} + struct bNodeSocket *nodeAddInputMesh(struct bNodeTree *ntree, struct bNode *node, const char *name) { bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_IN, name, SOCK_MESH); @@ -271,6 +298,9 @@ struct bNodeSocket *node_add_input_from_template(struct bNodeTree *ntree, struct case SOCK_RGBA: sock = nodeAddInputRGBA(ntree, node, stemp->name, stemp->val1, stemp->val2, stemp->val3, stemp->val4); break; + case SOCK_SHADER: + sock = nodeAddInputShader(ntree, node, stemp->name); + break; case SOCK_MESH: sock = nodeAddInputMesh(ntree, node, stemp->name); break; @@ -299,6 +329,9 @@ struct bNodeSocket *node_add_output_from_template(struct bNodeTree *ntree, struc case SOCK_RGBA: sock = nodeAddOutputRGBA(ntree, node, stemp->name); break; + case SOCK_SHADER: + sock = nodeAddOutputShader(ntree, node, stemp->name); + break; case SOCK_MESH: sock = nodeAddOutputMesh(ntree, node, stemp->name); break; From fdc0edefce7c75371479cd720aba3f9d3ba24924 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 14 Oct 2011 13:10:11 +0000 Subject: [PATCH 011/119] Split language menu into two columns: - Nearly done for languages with >80% strings translated - In progress for languages which aren't translated enough still. --- source/blender/makesrna/intern/rna_userdef.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 11157e67741..7fb6f2de15b 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2511,20 +2511,22 @@ static void rna_def_userdef_system(BlenderRNA *brna) /* locale according to http://www.roseindia.net/tutorials/I18N/locales-list.shtml */ /* if you edit here, please also edit the source/blender/blenfont/intern/blf_lang.c 's locales */ static EnumPropertyItem language_items[] = { + {0, "", 0, "Nearly done", ""}, {0, "DEFAULT", 0, N_("Default (Default)"), ""}, {1, "ENGLISH", 0, N_("English (English)"), "en_US"}, + {8, "FRENCH", 0, N_("French (Française)"), "fr_FR"}, + {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"}, + {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"}, + {0, "", 0, "In progress", ""}, {2, "JAPANESE", 0, N_("Japanese (日本語)"), "ja_JP"}, {3, "DUTCH", 0, N_("Dutch (Nederlandse taal)"), "nl_NL"}, {4, "ITALIAN", 0, N_("Italian (Italiano)"), "it_IT"}, {5, "GERMAN", 0, N_("German (Deutsch)"), "de_DE"}, {6, "FINNISH", 0, N_("Finnish (Suomi)"), "fi_FI"}, {7, "SWEDISH", 0, N_("Swedish (Svenska)"), "sv_SE"}, - {8, "FRENCH", 0, N_("French (Française)"), "fr_FR"}, - {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"}, {10, "CATALAN", 0, N_("Catalan (Català)"), "ca_AD"}, {11, "CZECH", 0, N_("Czech (Český)"), "cs_CZ"}, {12, "BRAZILIAN_PORTUGUESE", 0, N_("Brazilian Portuguese (Português do Brasil)"), "pt_BR"}, - {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"}, {14, "TRADITIONAL_CHINESE", 0, N_("Traditional Chinese (繁體中文)"), "zh_TW"}, {15, "RUSSIAN", 0, N_("Russian (Русский)"), "ru_RU"}, {16, "CROATIAN", 0, N_("Croatian (Hrvatski)"), "hr_HR"}, From f66cbcb1ad04b60fe1f8dc6bac19ef0c9fd81996 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 14 Oct 2011 13:13:13 +0000 Subject: [PATCH 012/119] Remove final e from Francaise --- source/blender/makesrna/intern/rna_userdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 7fb6f2de15b..28525042eda 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2514,7 +2514,7 @@ static void rna_def_userdef_system(BlenderRNA *brna) {0, "", 0, "Nearly done", ""}, {0, "DEFAULT", 0, N_("Default (Default)"), ""}, {1, "ENGLISH", 0, N_("English (English)"), "en_US"}, - {8, "FRENCH", 0, N_("French (Française)"), "fr_FR"}, + {8, "FRENCH", 0, N_("French (Français)"), "fr_FR"}, {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"}, {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"}, {0, "", 0, "In progress", ""}, From 9252d425d248273f2afd821870e68f52c9d3aa70 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 14 Oct 2011 14:01:39 +0000 Subject: [PATCH 013/119] cmake: use cached results for RPM build & dont print annoying rpmbuild missing on every re-run of cmake. --- build_files/cmake/RpmBuild.cmake | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/build_files/cmake/RpmBuild.cmake b/build_files/cmake/RpmBuild.cmake index 2c821a9dd7a..2fdd0a72932 100644 --- a/build_files/cmake/RpmBuild.cmake +++ b/build_files/cmake/RpmBuild.cmake @@ -3,17 +3,24 @@ # Authors: Rohit Yadav # -find_program(RPMBUILD - NAMES rpmbuild - PATHS "/usr/bin") +if(NOT DEFINED RPMBUILD) -mark_as_advanced(RPMBUILD) + find_program(RPMBUILD + NAMES rpmbuild + PATHS "/usr/bin") + + mark_as_advanced(RPMBUILD) + + if(RPMBUILD) + message(STATUS "RPM Build Found: ${RPMBUILD}") + else(RPMBUILD) + message(STATUS "RPM Build Not Found (rpmbuild). RPM generation will not be available") + endif() + +endif() if(RPMBUILD) - get_filename_component(RPMBUILD_PATH ${RPMBUILD} ABSOLUTE) - message(STATUS "Found rpmbuild : ${RPMBUILD_PATH}") - set(RPMBUILD_FOUND "YES") + set(RPMBUILD_FOUND TRUE) else(RPMBUILD) - message(STATUS "rpmbuild NOT found. RPM generation will not be available") - set(RPMBUILD_FOUND "NO") -endif() + set(RPMBUILD_FOUND FALSE) +endif() \ No newline at end of file From 9f6d67484cc6fbb9db575ecff2a1ee8c1768d1b5 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Fri, 14 Oct 2011 16:58:21 +0000 Subject: [PATCH 014/119] Fix for [#28916] 2.6 RC2 - Bake Sound to FCurve Crash --- .../FX/AUD_DynamicIIRFilterReader.cpp | 3 +- intern/audaspace/FX/AUD_IIRFilterReader.cpp | 15 ++-- intern/audaspace/intern/AUD_C-API.cpp | 77 +++++++++++-------- 3 files changed, 54 insertions(+), 41 deletions(-) diff --git a/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp b/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp index ed9b2d3871d..f1edccb22fb 100644 --- a/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp +++ b/intern/audaspace/FX/AUD_DynamicIIRFilterReader.cpp @@ -32,7 +32,8 @@ AUD_DynamicIIRFilterReader::AUD_DynamicIIRFilterReader(AUD_Reference reader, AUD_Reference factory) : - AUD_IIRFilterReader(reader, std::vector(), std::vector()) + AUD_IIRFilterReader(reader, std::vector(), std::vector()), + m_factory(factory) { sampleRateChanged(reader->getSpecs().rate); } diff --git a/intern/audaspace/FX/AUD_IIRFilterReader.cpp b/intern/audaspace/FX/AUD_IIRFilterReader.cpp index 1bfb9b97b62..90f7e1e3cb0 100644 --- a/intern/audaspace/FX/AUD_IIRFilterReader.cpp +++ b/intern/audaspace/FX/AUD_IIRFilterReader.cpp @@ -36,11 +36,14 @@ AUD_IIRFilterReader::AUD_IIRFilterReader(AUD_Reference reader, const std::vector& a) : AUD_BaseIIRFilterReader(reader, b.size(), a.size()), m_a(a), m_b(b) { - for(int i = 1; i < m_a.size(); i++) - m_a[i] /= m_a[0]; - for(int i = 0; i < m_b.size(); i++) - m_b[i] /= m_a[0]; - m_a[0] = 1; + if(m_a.size()) + { + for(int i = 1; i < m_a.size(); i++) + m_a[i] /= m_a[0]; + for(int i = 0; i < m_b.size(); i++) + m_b[i] /= m_a[0]; + m_a[0] = 1; + } } sample_t AUD_IIRFilterReader::filter() @@ -58,7 +61,7 @@ sample_t AUD_IIRFilterReader::filter() void AUD_IIRFilterReader::setCoefficients(const std::vector& b, const std::vector& a) { - setLengths(m_b.size(), m_a.size()); + setLengths(b.size(), a.size()); m_a = a; m_b = b; } diff --git a/intern/audaspace/intern/AUD_C-API.cpp b/intern/audaspace/intern/AUD_C-API.cpp index af053df9c50..66e3a0ed7e9 100644 --- a/intern/audaspace/intern/AUD_C-API.cpp +++ b/intern/audaspace/intern/AUD_C-API.cpp @@ -826,42 +826,51 @@ float* AUD_readSoundBuffer(const char* filename, float low, float high, AUD_Reference file = new AUD_FileFactory(filename); - AUD_Reference reader = file->createReader(); - AUD_SampleRate rate = reader->getSpecs().rate; - - sound = new AUD_ChannelMapperFactory(file, specs); - - if(high < rate) - sound = new AUD_LowpassFactory(sound, high); - if(low > 0) - sound = new AUD_HighpassFactory(sound, low); - - sound = new AUD_EnvelopeFactory(sound, attack, release, threshold, 0.1f); - sound = new AUD_LinearResampleFactory(sound, specs); - - if(square) - sound = new AUD_SquareFactory(sound, sthreshold); - - if(accumulate) - sound = new AUD_AccumulatorFactory(sound, additive); - else if(additive) - sound = new AUD_SumFactory(sound); - - reader = sound->createReader(); - - if(reader.isNull()) - return NULL; - - int len; int position = 0; - bool eos; - do + + try { - len = samplerate; - buffer.resize((position + len) * sizeof(float), true); - reader->read(len, eos, buffer.getBuffer() + position); - position += len; - } while(!eos); + AUD_Reference reader = file->createReader(); + + AUD_SampleRate rate = reader->getSpecs().rate; + + sound = new AUD_ChannelMapperFactory(file, specs); + + if(high < rate) + sound = new AUD_LowpassFactory(sound, high); + if(low > 0) + sound = new AUD_HighpassFactory(sound, low); + + sound = new AUD_EnvelopeFactory(sound, attack, release, threshold, 0.1f); + sound = new AUD_LinearResampleFactory(sound, specs); + + if(square) + sound = new AUD_SquareFactory(sound, sthreshold); + + if(accumulate) + sound = new AUD_AccumulatorFactory(sound, additive); + else if(additive) + sound = new AUD_SumFactory(sound); + + reader = sound->createReader(); + + if(reader.isNull()) + return NULL; + + int len; + bool eos; + do + { + len = samplerate; + buffer.resize((position + len) * sizeof(float), true); + reader->read(len, eos, buffer.getBuffer() + position); + position += len; + } while(!eos); + } + catch(AUD_Exception&) + { + return NULL; + } float* result = (float*)malloc(position * sizeof(float)); memcpy(result, buffer.getBuffer(), position * sizeof(float)); From afcf581fb06920c415ca9d1c23cdfb235274d323 Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Fri, 14 Oct 2011 17:27:55 +0000 Subject: [PATCH 015/119] OSX: commit the needed steps for compiling with gcc 4.6.1 and OMP_NUM_THREADS env variable setting --- build_files/scons/tools/Blender.py | 10 ++++++++++ source/darwin/blender.app/Contents/Info.plist | 17 ++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index b9632bfffa7..2be464fc6fe 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -582,6 +582,16 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'find %s/%s.app -name __MACOSX -exec rm -rf {} \;'%(installdir, binary) commands.getoutput(cmd) + if env['CC'].endswith('4.6.1'): # for correct errorhandling with gcc 4.6.1 we need the gcc.dylib to link, thus distribute in app-bundle + cmd = 'mkdir %s/%s.app/Contents/MacOS/lib'%(installdir, binary) + commands.getoutput(cmd) + instname = env['BF_CXX'] + cmd = 'cp %s/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/lib/'%(instname, installdir, binary) + commands.getoutput(cmd) + cmd = 'install_name_tool -id @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/lib/libgcc_s.1.dylib'%(installdir, binary) + commands.getoutput(cmd) + cmd = 'install_name_tool -change %s/lib/libgcc_s.1.dylib @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/%s'%(instname, installdir, binary, binary) + commands.getoutput(cmd) # extract copy system python, be sure to update other build systems # when making changes to the files that are copied. diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist index 23941d91075..a25c629ce68 100644 --- a/source/darwin/blender.app/Contents/Info.plist +++ b/source/darwin/blender.app/Contents/Info.plist @@ -1,33 +1,27 @@ - - + + CFBundleInfoDictionaryVersion 6.0 - CFBundleExecutable blender - CFBundlePackageType APPL CFBundleSignature ???? - CFBundleIconFile blender icon.icns - CFBundleName Blender CFBundleIdentifier org.blenderfoundation.blender - CFBundleVersion ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation CFBundleShortVersionString ${MACOSX_BUNDLE_SHORT_VERSION_STRING} CFBundleGetInfoString ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation - CFBundleDocumentTypes @@ -46,8 +40,13 @@ CFBundleTypeRole Editor LSIsAppleDefaultForType - + + LSEnvironment + + OMP_NUM_THREADS + 2 + From e7095450e7e47a5b05238a70bd75ca836f4332ba Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Fri, 14 Oct 2011 17:54:37 +0000 Subject: [PATCH 016/119] OSX: commit the omp_set_simulation_threads applescript and copy-routines --- build_files/scons/tools/Blender.py | 2 + .../Contents/Info.plist | 44 ++++++++++++++++++ .../Contents/MacOS/applet | Bin 0 -> 34480 bytes .../Contents/PkgInfo | 1 + .../Contents/Resources/Scripts/main.scpt | Bin 0 -> 2936 bytes .../Contents/Resources/applet.icns | Bin 0 -> 40291 bytes .../Contents/Resources/applet.rsrc | Bin 0 -> 362 bytes .../Resources/description.rtfd/TXT.rtf | 4 ++ 8 files changed, 51 insertions(+) create mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist create mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet create mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index 2be464fc6fe..f54ab102415 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -592,6 +592,8 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'install_name_tool -change %s/lib/libgcc_s.1.dylib @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/%s'%(instname, installdir, binary, binary) commands.getoutput(cmd) + cmd = 'cp -R %s/source/darwin/set_simulation_threads.app %s/'%(bldroot, installdir) # the omp_num_threads applescript + commands.getoutput(cmd) # extract copy system python, be sure to update other build systems # when making changes to the files that are copied. diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist new file mode 100644 index 00000000000..e7a5b09b079 --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + English + CFBundleExecutable + applet + CFBundleIconFile + applet + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + set_simulation_threads + CFBundlePackageType + APPL + CFBundleSignature + aplt + LSMinimumSystemVersionByArchitecture + + x86_64 + 10.6 + + LSRequiresCarbon + + WindowState + + dividerCollapsed + + eventLogLevel + -1 + name + ScriptWindowState + positionOfDivider + 467 + savedFrame + 943 372 886 806 0 0 1920 1178 + selectedTabView + result + + + diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet new file mode 100755 index 0000000000000000000000000000000000000000..0079f4b19d448615de26af5c84a0a6195d511bfc GIT binary patch literal 34480 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 literal 0 HcmV?d00001 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns new file mode 100644 index 0000000000000000000000000000000000000000..fcc1f09273d73cb424494118a39d8b391ce00bcc GIT binary patch literal 40291 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 Date: Fri, 14 Oct 2011 20:11:19 +0000 Subject: [PATCH 017/119] Delete applescript for recommit --- .../Contents/Info.plist | 44 ------------------ .../Contents/MacOS/applet | Bin 34480 -> 0 bytes .../Contents/PkgInfo | 1 - .../Contents/Resources/Scripts/main.scpt | Bin 2936 -> 0 bytes .../Contents/Resources/applet.icns | Bin 40291 -> 0 bytes .../Contents/Resources/applet.rsrc | Bin 362 -> 0 bytes .../Resources/description.rtfd/TXT.rtf | 4 -- 7 files changed, 49 deletions(-) delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist delete mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet delete mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist deleted file mode 100644 index e7a5b09b079..00000000000 --- a/source/darwin/set_simulation_threads.app/Contents/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleAllowMixedLocalizations - - CFBundleDevelopmentRegion - English - CFBundleExecutable - applet - CFBundleIconFile - applet - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - set_simulation_threads - CFBundlePackageType - APPL - CFBundleSignature - aplt - LSMinimumSystemVersionByArchitecture - - x86_64 - 10.6 - - LSRequiresCarbon - - WindowState - - dividerCollapsed - - eventLogLevel - -1 - name - ScriptWindowState - positionOfDivider - 467 - savedFrame - 943 372 886 806 0 0 1920 1178 - selectedTabView - result - - - diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet deleted file mode 100755 index 0079f4b19d448615de26af5c84a0a6195d511bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34480 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 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns deleted file mode 100644 index fcc1f09273d73cb424494118a39d8b391ce00bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40291 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 Date: Fri, 14 Oct 2011 20:12:34 +0000 Subject: [PATCH 018/119] OSX:recommit applescript, fixed an issue --- .../Contents/Info.plist | 44 ++++++++++++++++++ .../Contents/MacOS/applet | Bin 0 -> 34480 bytes .../Contents/PkgInfo | 1 + .../Contents/Resources/Scripts/main.scpt | Bin 0 -> 4432 bytes .../Contents/Resources/applet.icns | Bin 0 -> 40291 bytes .../Contents/Resources/applet.rsrc | Bin 0 -> 362 bytes .../Resources/description.rtfd/TXT.rtf | 4 ++ 7 files changed, 49 insertions(+) create mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist create mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet create mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist new file mode 100644 index 00000000000..f71939a7795 --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + English + CFBundleExecutable + applet + CFBundleIconFile + applet + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + set_simulation_threads + CFBundlePackageType + APPL + CFBundleSignature + aplt + LSMinimumSystemVersionByArchitecture + + x86_64 + 10.6 + + LSRequiresCarbon + + WindowState + + dividerCollapsed + + eventLogLevel + -1 + name + ScriptWindowState + positionOfDivider + 284 + savedFrame + 284 477 1474 522 0 0 1920 1178 + selectedTabView + result + + + diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet new file mode 100755 index 0000000000000000000000000000000000000000..0079f4b19d448615de26af5c84a0a6195d511bfc GIT binary patch literal 34480 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 kX{m7X!AN3H-i0yMjI_%Ek)@64)vn=q^ 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 literal 0 HcmV?d00001 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf b/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf new file mode 100644 index 00000000000..0d0a60c08b5 --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf @@ -0,0 +1,4 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230 +{\fonttbl} +{\colortbl;\red255\green255\blue255;} +} \ No newline at end of file From cae655f81fe219223d9ff9afaf0ddf8e126c7c80 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 01:32:49 +0000 Subject: [PATCH 019/119] fix for weight paint vertex select, it broke vertex paint when left on. --- source/blender/editors/space_view3d/drawobject.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index df1c743b5cd..eb2e821e398 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -6723,7 +6723,10 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec } else { Mesh *me= ob->data; - if(me->editflag & ME_EDIT_VERT_SEL) { + if( (me->editflag & ME_EDIT_VERT_SEL) && + /* currently vertex select only supports weight paint */ + (ob->mode & OB_MODE_WEIGHT_PAINT)) + { DerivedMesh *dm = mesh_get_derived_final(scene, ob, scene->customdata_mask); glColor3ub(0, 0, 0); From f9c41eaaf80fdddb24d5b95cadb51ac859c2d301 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Sat, 15 Oct 2011 01:42:26 +0000 Subject: [PATCH 020/119] Fix for [#28823] Boids use uninitialized memory. * Boids need the random velocity vector always. --- source/blender/blenkernel/intern/particle_system.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 6b601ed4b1a..7b2d621aff2 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -1607,8 +1607,8 @@ void psys_get_birth_coordinates(ParticleSimulationData *sim, ParticleData *pa, P } - /* -velocity */ - if(part->randfac != 0.0f){ + /* -velocity (boids need this even if there's no random velocity) */ + if(part->randfac != 0.0f || (part->phystype==PART_PHYS_BOIDS && pa->boid)){ r_vel[0] = 2.0f * (PSYS_FRAND(p + 10) - 0.5f); r_vel[1] = 2.0f * (PSYS_FRAND(p + 11) - 0.5f); r_vel[2] = 2.0f * (PSYS_FRAND(p + 12) - 0.5f); From 317b649bb241726d8be1a700cd0028f28914595d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 03:56:05 +0000 Subject: [PATCH 021/119] fix for buffer overrun with BLI_split_dirfile(...), was simple to do since many places don't check for filename lengyj of 79 chars which is the limit for the file selector. Add max dir and file length args. --- source/blender/blenkernel/intern/pointcache.c | 2 +- source/blender/blenkernel/intern/sequencer.c | 4 ++-- source/blender/blenlib/BLI_path_util.h | 2 +- source/blender/blenlib/intern/bpath.c | 4 ++-- source/blender/blenlib/intern/path_util.c | 19 ++++++++-------- source/blender/blenlib/intern/winstuff.c | 3 +-- source/blender/blenloader/intern/writefile.c | 4 ++-- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/collada/ImageExporter.cpp | 2 +- source/blender/editors/space_file/file_ops.c | 4 ++-- source/blender/editors/space_file/filesel.c | 6 ++--- .../editors/space_sequencer/sequencer_add.c | 2 +- .../editors/space_sequencer/space_sequencer.c | 2 +- .../blender/makesrna/intern/rna_sequencer.c | 22 ++++--------------- source/gameengine/Ketsji/KX_PythonInit.cpp | 4 ++-- 15 files changed, 34 insertions(+), 48 deletions(-) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index fb69db17b97..bc5bc87b1fa 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -910,7 +910,7 @@ static int ptcache_path(PTCacheID *pid, char *filename) else if (G.relbase_valid || lib) { char file[MAX_PTCACHE_PATH]; /* we dont want the dir, only the file */ - BLI_split_dirfile(blendfilename, NULL, file); + BLI_split_dirfile(blendfilename, NULL, file, 0, sizeof(file)); i = strlen(file); /* remove .blend */ diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 5a2c53f5b9b..00534400cf1 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -3647,7 +3647,7 @@ Sequence *sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo /* we only need 1 element to store the filename */ strip->stripdata= se= MEM_callocN(sizeof(StripElem), "stripelem"); - BLI_split_dirfile(seq_load->path, strip->dir, se->name); + BLI_split_dirfile(seq_load->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name)); seq->scene_sound = sound_add_scene_sound(scene, seq, seq_load->start_frame, seq_load->start_frame + strip->len, 0); @@ -3706,7 +3706,7 @@ Sequence *sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo /* we only need 1 element for MOVIE strips */ strip->stripdata= se= MEM_callocN(sizeof(StripElem), "stripelem"); - BLI_split_dirfile(seq_load->path, strip->dir, se->name); + BLI_split_dirfile(seq_load->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name)); calc_sequence_disp(scene, seq); diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 81fc8a50db6..4f7f7b482b5 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -103,7 +103,7 @@ void BLI_setenv_if_new(const char *env, const char* val); void BLI_make_file_string(const char *relabase, char *string, const char *dir, const char *file); void BLI_make_exist(char *dir); void BLI_make_existing_file(const char *name); -void BLI_split_dirfile(const char *string, char *dir, char *file); +void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen); void BLI_join_dirfile(char *string, const size_t maxlen, const char *dir, const char *file); char *BLI_path_basename(char *path); int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const char *base_dir, const char *src_dir, const char *dest_dir); diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 485b8137a02..4e4f8b3cade 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -400,7 +400,7 @@ static void seq_setpath(struct BPathIterator *bpi, const char *path) if (SEQ_HAS_PATH(seq)) { if (ELEM3(seq->type, SEQ_IMAGE, SEQ_MOVIE, SEQ_SOUND)) { - BLI_split_dirfile(path, seq->strip->dir, seq->strip->stripdata->name); + BLI_split_dirfile(path, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name)); } else { /* simple case */ @@ -903,7 +903,7 @@ void findMissingFiles(Main *bmain, const char *str) //XXX waitcursor( 1 ); - BLI_split_dirfile(str, dirname, NULL); + BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0); BLI_bpathIterator_init(&bpi, bmain, bmain->name, 0); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index ab7d082c432..fe1d869f898 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -894,7 +894,7 @@ static int get_path_local(char *targetpath, const char *folder_name, const char } /* use argv[0] (bprogname) to get the path to the executable */ - BLI_split_dirfile(bprogname, bprogdir, NULL); + BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0); /* try EXECUTABLE_DIR/2.5x/folder_name - new default directory for local blender installed files */ if(test_path(targetpath, bprogdir, blender_version_decimal(ver), relfolder)) @@ -966,7 +966,7 @@ static int get_path_system(char *targetpath, const char *folder_name, const char char bprogdir[FILE_MAX]; /* use argv[0] (bprogname) to get the path to the executable */ - BLI_split_dirfile(bprogname, bprogdir, NULL); + BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0); if(folder_name) { if (subfolder_name) { @@ -1411,21 +1411,22 @@ int BLI_replace_extension(char *path, size_t maxlen, const char *ext) * - dosnt use CWD, or deal with relative paths. * - Only fill's in *dir and *file when they are non NULL * */ -void BLI_split_dirfile(const char *string, char *dir, char *file) +void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen) { char *lslash_str = BLI_last_slash(string); - int lslash= lslash_str ? (int)(lslash_str - string) + 1 : 0; + size_t lslash= lslash_str ? (size_t)(lslash_str - string) + 1 : 0; if (dir) { if (lslash) { - BLI_strncpy( dir, string, lslash + 1); /* +1 to include the slash and the last char */ - } else { + BLI_strncpy( dir, string, MIN2(dirlen, lslash + 1)); /* +1 to include the slash and the last char */ + } + else { dir[0] = '\0'; } } if (file) { - strcpy( file, string+lslash); + BLI_strncpy(file, string+lslash, filelen); } } @@ -1515,7 +1516,7 @@ int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const if (rel) rel[0]= 0; - BLI_split_dirfile(base_dir, blend_dir, NULL); + BLI_split_dirfile(base_dir, blend_dir, NULL, sizeof(blend_dir), 0); if (src_dir[0]=='\0') return 0; @@ -1526,7 +1527,7 @@ int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const BLI_path_abs(path, base_dir); /* get the directory part */ - BLI_split_dirfile(path, dir, base); + BLI_split_dirfile(path, dir, base, sizeof(dir), sizeof(base)); len= strlen(blend_dir); diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c index 3b14abb0bee..9594197ef90 100644 --- a/source/blender/blenlib/intern/winstuff.c +++ b/source/blender/blenlib/intern/winstuff.c @@ -53,11 +53,10 @@ int BLI_getInstallationDir( char * str ) { char dir[FILE_MAXDIR]; - char file[FILE_MAXFILE]; int a; GetModuleFileName(NULL,str,FILE_MAXDIR+FILE_MAXFILE); - BLI_split_dirfile(str,dir,file); /* shouldn't be relative */ + BLI_split_dirfile(str, dir, NULL, sizeof(dir), 0); /* shouldn't be relative */ a = strlen(dir); if(dir[a-1] == '\\') dir[a-1]=0; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index cbc312a75e9..6e9e3da3b42 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2678,8 +2678,8 @@ int BLO_write_file(Main *mainvar, const char *filepath, int write_flags, ReportL if(write_flags & G_FILE_RELATIVE_REMAP) { char dir1[FILE_MAXDIR+FILE_MAXFILE]; char dir2[FILE_MAXDIR+FILE_MAXFILE]; - BLI_split_dirfile(filepath, dir1, NULL); - BLI_split_dirfile(mainvar->name, dir2, NULL); + BLI_split_dirfile(filepath, dir1, NULL, sizeof(dir1), 0); + BLI_split_dirfile(mainvar->name, dir2, NULL, sizeof(dir2), 0); /* just incase there is some subtle difference */ BLI_cleanup_dir(mainvar->name, dir1); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index e98f551a097..056d74aabfb 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -884,7 +884,7 @@ bool DocumentImporter::writeImage( const COLLADAFW::Image* image ) char dir[FILE_MAX]; char full_path[FILE_MAX]; - BLI_split_dirfile(filename, dir, NULL); + BLI_split_dirfile(filename, dir, NULL, sizeof(dir), 0); BLI_join_dirfile(full_path, sizeof(full_path), dir, filepath.c_str()); Image *ima = BKE_add_image_file(full_path); if (!ima) { diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index 747f3c783d7..53c43677c18 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -97,7 +97,7 @@ void ImagesExporter::operator()(Material *ma, Object *ob) char src[FILE_MAX]; char dir[FILE_MAX]; - BLI_split_dirfile(this->export_settings->filepath, dir, NULL); + BLI_split_dirfile(this->export_settings->filepath, dir, NULL, sizeof(dir), 0); BKE_rebase_path(abs, sizeof(abs), rel, sizeof(rel), G.main->name, image->name, dir); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 0955d264ca8..559873bd601 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -666,7 +666,7 @@ void file_operator_to_sfile(SpaceFile *sfile, wmOperator *op) if((prop= RNA_struct_find_property(op->ptr, "filepath"))) { char filepath[FILE_MAX]; RNA_property_string_get(op->ptr, prop, filepath); - BLI_split_dirfile(filepath, sfile->params->dir, sfile->params->file); + BLI_split_dirfile(filepath, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file)); } else { if((prop= RNA_struct_find_property(op->ptr, "filename"))) { @@ -1143,7 +1143,7 @@ int file_directory_exec(bContext *C, wmOperator *UNUSED(unused)) if(BLI_exists(sfile->params->dir) && BLI_is_dir(sfile->params->dir) == 0) { char path[sizeof(sfile->params->dir)]; BLI_strncpy(path, sfile->params->dir, sizeof(path)); - BLI_split_dirfile(path, sfile->params->dir, sfile->params->file); + BLI_split_dirfile(path, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file)); } BLI_cleanup_dir(G.main->name, sfile->params->dir); diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index 6cc42b2a751..f36145aaba0 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -113,7 +113,7 @@ short ED_fileselect_set_params(SpaceFile *sfile) if (!sfile->params) { sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams"); /* set path to most recently opened .blend */ - BLI_split_dirfile(G.main->name, sfile->params->dir, sfile->params->file); + BLI_split_dirfile(G.main->name, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file)); sfile->params->filter_glob[0] = '\0'; } @@ -142,7 +142,7 @@ short ED_fileselect_set_params(SpaceFile *sfile) sfile->params->file[0]= '\0'; } else { - BLI_split_dirfile(name, sfile->params->dir, sfile->params->file); + BLI_split_dirfile(name, sfile->params->dir, sfile->params->file, sizeof(sfile->params->dir), sizeof(sfile->params->file)); } } else { @@ -613,7 +613,7 @@ void autocomplete_directory(struct bContext *C, char *str, void *UNUSED(arg_v)) DIR *dir; struct dirent *de; - BLI_split_dirfile(str, dirname, NULL); + BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0); dir = opendir(dirname); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 1c4b0130897..7fa4e62359a 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -321,7 +321,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad char dir_only[FILE_MAX]; char file_only[FILE_MAX]; - BLI_split_dirfile(seq_load.path, dir_only, NULL); + BLI_split_dirfile(seq_load.path, dir_only, NULL, sizeof(dir_only), 0); RNA_BEGIN(op->ptr, itemptr, "files") { RNA_string_get(&itemptr, "name", file_only); diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 5c2013ee863..45908801147 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -362,7 +362,7 @@ static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop) PointerRNA itemptr; char dir[FILE_MAX], file[FILE_MAX]; - BLI_split_dirfile(drag->path, dir, file); + BLI_split_dirfile(drag->path, dir, file, sizeof(dir), sizeof(file)); RNA_string_set(drop->ptr, "directory", dir); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 92739148b99..b90f10693ac 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -443,7 +443,6 @@ static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator * static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value) { Sequence *seq= (Sequence*)(ptr->data); - char dir[FILE_MAX], name[FILE_MAX]; if(seq->type == SEQ_SOUND && seq->sound) { /* for sound strips we need to update the sound as well. @@ -457,9 +456,7 @@ static void rna_Sequence_filepath_set(PointerRNA *ptr, const char *value) sound_update_scene_sound(seq->scene_sound, seq->sound); } - BLI_split_dirfile(value, dir, name); - BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); - BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); + BLI_split_dirfile(value, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name)); } static void rna_Sequence_filepath_get(PointerRNA *ptr, char *value) @@ -481,11 +478,7 @@ static int rna_Sequence_filepath_length(PointerRNA *ptr) static void rna_Sequence_proxy_filepath_set(PointerRNA *ptr, const char *value) { StripProxy *proxy= (StripProxy*)(ptr->data); - char dir[FILE_MAX], name[FILE_MAX]; - - BLI_split_dirfile(value, dir, name); - BLI_strncpy(proxy->dir, dir, sizeof(proxy->dir)); - BLI_strncpy(proxy->file, name, sizeof(proxy->file)); + BLI_split_dirfile(value, proxy->dir, proxy->file, sizeof(proxy->dir), sizeof(proxy->file)); } static void rna_Sequence_proxy_filepath_get(PointerRNA *ptr, char *value) @@ -541,20 +534,13 @@ static int rna_Sequence_input_count_get(PointerRNA *ptr) /*static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value) { Sequence *seq= (Sequence*)(ptr->data); - char dir[FILE_MAX], name[FILE_MAX]; - - BLI_split_dirfile(value, dir, name); - BLI_strncpy(seq->strip->dir, dir, sizeof(seq->strip->dir)); - BLI_strncpy(seq->strip->stripdata->name, name, sizeof(seq->strip->stripdata->name)); + BLI_split_dirfile(value, seq->strip->dir, seq->strip->stripdata->name, sizeof(seq->strip->dir), sizeof(seq->strip->stripdata->name)); } static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) { StripElem *elem= (StripElem*)(ptr->data); - char name[FILE_MAX]; - - BLI_split_dirfile(value, NULL, name); - BLI_strncpy(elem->name, name, sizeof(elem->name)); + BLI_split_dirfile(value, NULL, elem->name, 0, sizeof(elem->name)); }*/ static void rna_Sequence_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr) diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index 62ca2910c60..40917a67c2f 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -502,7 +502,7 @@ static PyObject* gPyGetBlendFileList(PyObject*, PyObject* args) BLI_path_abs(cpath, gp_GamePythonPath); } else { /* Get the dir only */ - BLI_split_dirfile(gp_GamePythonPath, cpath, NULL); + BLI_split_dirfile(gp_GamePythonPath, cpath, NULL, sizeof(cpath), 0); } if((dp = opendir(cpath)) == NULL) { @@ -1732,7 +1732,7 @@ static void initPySysObjects__append(PyObject *sys_path, char *filename) PyObject *item; char expanded[FILE_MAXDIR + FILE_MAXFILE]; - BLI_split_dirfile(filename, expanded, NULL); /* get the dir part of filename only */ + BLI_split_dirfile(filename, expanded, NULL, sizeof(expanded), 0); /* get the dir part of filename only */ BLI_path_abs(expanded, gp_GamePythonPath); /* filename from lib->filename is (always?) absolute, so this may not be needed but it wont hurt */ BLI_cleanup_file(gp_GamePythonPath, expanded); /* Dont use BLI_cleanup_dir because it adds a slash - BREAKS WIN32 ONLY */ item= PyUnicode_DecodeFSDefault(expanded); From 5da894b1fe1214866d7b343fabab848e8f32a581 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 05:01:47 +0000 Subject: [PATCH 022/119] misc edits - cmake/windows was installing locale & font when internationalization was disabled, twice when enabled. - file selector was using the string size-1, where this isn't needed since string buttons expected this value to be the sizeof(), accounting for '\0'. - use const char for extension checking funcs. - minor pep8 edits --- po/update_msg.py | 8 +++++--- release/scripts/startup/bl_ui/space_view3d.py | 1 + source/blender/blenloader/BLO_readfile.h | 2 +- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/editors/include/ED_fileselect.h | 2 +- source/blender/editors/space_file/file_draw.c | 4 ++-- source/blender/editors/space_file/filelist.c | 4 ++-- source/creator/CMakeLists.txt | 10 +--------- 8 files changed, 14 insertions(+), 19 deletions(-) diff --git a/po/update_msg.py b/po/update_msg.py index 5986d96f14b..7cc7ee50b63 100644 --- a/po/update_msg.py +++ b/po/update_msg.py @@ -135,10 +135,12 @@ def dump_messages_rna(messages): item.identifier, ) # Here identifier and name can be the same! - if item.name: # and item.name != item.identifier: - messages.setdefault(item.name, []).append(msgsrc) + if item.name: # and item.name != item.identifier: + messages.setdefault(item.name, + []).append(msgsrc) if item.description: - messages.setdefault(item.description, []).append(msgsrc) + messages.setdefault(item.description, + []).append(msgsrc) def walkRNA(bl_rna): diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 9b93fd18bac..068e5a2659a 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -985,6 +985,7 @@ class VIEW3D_MT_make_links(Menu): layout.operator("object.join_uvs") # stupid place to add this! + class VIEW3D_MT_object_game(Menu): bl_label = "Game" diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h index 47931477728..e7be98d955d 100644 --- a/source/blender/blenloader/BLO_readfile.h +++ b/source/blender/blenloader/BLO_readfile.h @@ -204,7 +204,7 @@ BLO_blendhandle_close( #define GROUP_MAX 32 -int BLO_has_bfile_extension(char *str); +int BLO_has_bfile_extension(const char *str); /* return ok when a blenderfile, in dir is the filename, * in group the type of libdata diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 7d84eeba9c8..76070e42f29 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1048,7 +1048,7 @@ void blo_freefiledata(FileData *fd) /* ************ DIV ****************** */ -int BLO_has_bfile_extension(char *str) +int BLO_has_bfile_extension(const char *str) { return (BLI_testextensie(str, ".ble") || BLI_testextensie(str, ".blend") || BLI_testextensie(str, ".blend.gz")); } diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h index 1eedd7ec782..df4113ca07a 100644 --- a/source/blender/editors/include/ED_fileselect.h +++ b/source/blender/editors/include/ED_fileselect.h @@ -106,7 +106,7 @@ void ED_fileselect_clear(struct bContext *C, struct SpaceFile *sfile); void ED_fileselect_exit(struct bContext *C, struct SpaceFile *sfile); -int ED_file_extension_icon(char *relname); +int ED_file_extension_icon(const char *relname); #endif /* ED_FILES_H */ diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 611bf79603e..85edcce35ca 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -181,7 +181,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) but = uiDefButTextO(block, TEX, "FILE_OT_directory", 0, "", min_x, line1_y, line1_w-chan_offs, btn_h, - params->dir, 0.0, (float)FILE_MAX-1, 0, 0, + params->dir, 0.0, (float)FILE_MAX, 0, 0, UI_translate_do_tooltip(N_("File path"))); uiButSetCompleteFunc(but, autocomplete_directory, NULL); uiButSetFlag(but, UI_BUT_NO_UTF8); @@ -189,7 +189,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) if((params->flag & FILE_DIRSEL_ONLY) == 0) { but = uiDefBut(block, TEX, B_FS_FILENAME, "", min_x, line2_y, line2_w-chan_offs, btn_h, - params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0, + params->file, 0.0, (float)FILE_MAXFILE, 0, 0, UI_translate_do_tooltip(overwrite_alert ?N_("File name, overwrite existing") : N_("File name"))); uiButSetCompleteFunc(but, autocomplete_file, NULL); uiButSetFlag(but, UI_BUT_NO_UTF8); diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index c2e45c5ad8a..b478976d027 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -736,7 +736,7 @@ static int file_is_blend_backup(const char *str) } -static int file_extension_type(char *relname) +static int file_extension_type(const char *relname) { if(BLO_has_bfile_extension(relname)) { return BLENDERFILE; @@ -769,7 +769,7 @@ static int file_extension_type(char *relname) return 0; } -int ED_file_extension_icon(char *relname) +int ED_file_extension_icon(const char *relname) { int type= file_extension_type(relname); diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 0650a5678b2..e7a1ff14f03 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -443,14 +443,6 @@ elseif(WIN32) endif() endif() - install( # same as linux!, deduplicate - DIRECTORY - ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale - ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts - DESTINATION ${TARGETDIR_VER}/datafiles - PATTERN ".svn" EXCLUDE - ) - # plugins in blender 2.5 don't work at the moment. # # install( @@ -656,8 +648,8 @@ elseif(APPLE) if(WITH_INTERNATIONAL) install( DIRECTORY - ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale + ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts DESTINATION ${TARGETDIR_VER}/datafiles PATTERN ".svn" EXCLUDE ) From febcb91b82c03a2ec0fc36f989b5dddeca5f4373 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 07:19:34 +0000 Subject: [PATCH 023/119] - add template for defining custom driver functions. - comment unused assignments. --- GNUmakefile | 2 +- release/scripts/templates/driver_functions.py | 34 +++++++++++++++++++ source/blender/nodes/intern/node_exec.c | 4 +-- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 release/scripts/templates/driver_functions.py diff --git a/GNUmakefile b/GNUmakefile index f92b0093eae..52f36b218d8 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -233,7 +233,7 @@ check_sparse: doc_py: $(BUILD_DIR)/bin/blender --background --factory-startup --python doc/python_api/sphinx_doc_gen.py cd doc/python_api ; sphinx-build -n -b html sphinx-in sphinx-out - @echo "docs written into: 'doc/python_api/sphinx-out/index.html'" + @echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'" clean: diff --git a/release/scripts/templates/driver_functions.py b/release/scripts/templates/driver_functions.py new file mode 100644 index 00000000000..db9d4fb4678 --- /dev/null +++ b/release/scripts/templates/driver_functions.py @@ -0,0 +1,34 @@ +# This script defines functions to be used directly in drivers expressions to +# extend the builtin set of python functions. +# +# This can be executed on manually or set to 'Register' to +# initialize thefunctions on file load. + + +# two sample functions +def invert(f): + """ Simple function call: + + invert(val) + """ + return 1.0 - f + + +uuid_store = {} + +def slow_value(value, fac, uuid): + """ Delay the value by a factor, use a unique string to allow + use in multiple drivers without conflict: + + slow_value(val, 0.5, "my_value") + """ + value_prev = uuid_store.get(uuid, value) + uuid_store[uuid] = value_new = (value_prev * fac) + (value * (1.0 - fac)) + return value_new + + +import bpy + +# Add variable defined in this script into the drivers namespace. +bpy.app.driver_namespace["invert"] = invert +bpy.app.driver_namespace["slow_value"] = slow_value diff --git a/source/blender/nodes/intern/node_exec.c b/source/blender/nodes/intern/node_exec.c index 53bbb27f9b0..154f7613223 100644 --- a/source/blender/nodes/intern/node_exec.c +++ b/source/blender/nodes/intern/node_exec.c @@ -180,7 +180,7 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) /* prepare group tree inputs */ for (sock=ntree->inputs.first; sock; sock=sock->next) { - ns = setup_stack(exec->stack, sock); + /* ns = */ setup_stack(exec->stack, sock); } /* prepare all internal nodes for execution */ for(n=0, nodeexec= exec->nodeexec; n < totnodes; ++n, ++nodeexec) { @@ -198,7 +198,7 @@ bNodeTreeExec *ntree_exec_begin(bNodeTree *ntree) /* tag all outputs */ for (sock=node->outputs.first; sock; sock=sock->next) { - ns = setup_stack(exec->stack, sock); + /* ns = */ setup_stack(exec->stack, sock); } if(node->typeinfo->initexecfunc) From f8317ed450e8e1649b4b23215417ad3e5b8d607c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 09:43:42 +0000 Subject: [PATCH 024/119] fix UI jump in normal buttons for buttons which didnt start out normalized. --- source/blender/editors/interface/interface.c | 12 ++++++++---- .../blender/editors/interface/interface_handlers.c | 9 ++++++--- source/blender/editors/interface/interface_intern.h | 4 ++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index a816c1612a1..a62658349c1 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1211,7 +1211,7 @@ void ui_delete_linkline(uiLinkLine *line, uiBut *but) * an edit override pointer while dragging for example */ /* for buttons pointing to color for example */ -void ui_get_but_vectorf(uiBut *but, float *vec) +void ui_get_but_vectorf(uiBut *but, float vec[3]) { PropertyRNA *prop; int a, tot; @@ -1249,16 +1249,20 @@ void ui_get_but_vectorf(uiBut *but, float *vec) vec[0]= vec[1]= vec[2]= 0.0f; } } + + if (but->type == BUT_NORMAL) { + normalize_v3(vec); + } } /* for buttons pointing to color for example */ -void ui_set_but_vectorf(uiBut *but, float *vec) +void ui_set_but_vectorf(uiBut *but, const float vec[3]) { PropertyRNA *prop; int a, tot; if(but->editvec) { - VECCOPY(but->editvec, vec); + copy_v3_v3(but->editvec, vec); } if(but->rnaprop) { @@ -1280,7 +1284,7 @@ void ui_set_but_vectorf(uiBut *but, float *vec) } else if(but->pointype == FLO) { float *fp= (float *)but->poin; - VECCOPY(fp, vec); + copy_v3_v3(fp, vec); } } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 9af9b2f55ad..6699e8f8701 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1966,8 +1966,6 @@ static void ui_do_but_textedit_select(bContext *C, uiBlock *block, uiBut *but, u static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) { - float softrange, softmin, softmax; - if(but->type == BUT_CURVE) { but->editcumap= (CurveMapping*)but->poin; } @@ -1977,10 +1975,12 @@ static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data) } else if(ELEM3(but->type, BUT_NORMAL, HSVCUBE, HSVCIRCLE)) { ui_get_but_vectorf(but, data->origvec); - VECCOPY(data->vec, data->origvec); + copy_v3_v3(data->vec, data->origvec); but->editvec= data->vec; } else { + float softrange, softmin, softmax; + data->startvalue= ui_get_but_val(but); data->origvalue= data->startvalue; data->value= data->origvalue; @@ -3004,6 +3004,9 @@ static int ui_numedit_but_NORMAL(uiBut *but, uiHandleButtonData *data, int mx, i /* button is presumed square */ /* if mouse moves outside of sphere, it does negative normal */ + /* note that both data->vec and data->origvec should be normalized + * else we'll get a hamrless but annoying jump when first clicking */ + fp= data->origvec; rad= (but->x2 - but->x1); radsq= rad*rad; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 6fb7677da6e..12e9d39e896 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -350,8 +350,8 @@ extern void ui_window_to_region(const ARegion *ar, int *x, int *y); extern double ui_get_but_val(uiBut *but); extern void ui_set_but_val(uiBut *but, double value); extern void ui_set_but_hsv(uiBut *but); -extern void ui_get_but_vectorf(uiBut *but, float *vec); -extern void ui_set_but_vectorf(uiBut *but, float *vec); +extern void ui_get_but_vectorf(uiBut *but, float vec[3]); +extern void ui_set_but_vectorf(uiBut *but, const float vec[3]); extern void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti *rect, float mx, float my); From 9613de6248b364e58abf01c36d9d1290ecc93dfe Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 09:59:31 +0000 Subject: [PATCH 025/119] make sure render layer names are unique when setting through rna. --- source/blender/editors/interface/interface.c | 7 +++++-- source/blender/makesrna/intern/rna_scene.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index a62658349c1..299bec0db8a 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1259,7 +1259,6 @@ void ui_get_but_vectorf(uiBut *but, float vec[3]) void ui_set_but_vectorf(uiBut *but, const float vec[3]) { PropertyRNA *prop; - int a, tot; if(but->editvec) { copy_v3_v3(but->editvec, vec); @@ -1269,11 +1268,15 @@ void ui_set_but_vectorf(uiBut *but, const float vec[3]) prop= but->rnaprop; if(RNA_property_type(prop) == PROP_FLOAT) { + int tot; + int a; + tot= RNA_property_array_length(&but->rnapoin, prop); tot= MIN2(tot, 3); - for(a=0; arnapoin, prop, a, vec[a]); + } } } else if(but->pointype == CHA) { diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 0eaacc62f33..ccc8151ac7f 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -812,8 +812,8 @@ static void rna_SceneRenderLayer_name_set(PointerRNA *ptr, const char *value) { Scene *scene= (Scene*)ptr->id.data; SceneRenderLayer *rl= (SceneRenderLayer*)ptr->data; - BLI_strncpy_utf8(rl->name, value, sizeof(rl->name)); + BLI_uniquename(&scene->r.layers, rl, "RenderLayer", '.', offsetof(SceneRenderLayer, name), sizeof(rl->name)); if(scene->nodetree) { bNode *node; From d0d16b5ed29c8f209bbeb0dd32a01ae581b5e9f7 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 15 Oct 2011 10:03:21 +0000 Subject: [PATCH 026/119] Last minute UI fix: * Vert/Edge/Face select buttons looked crappy when in EditMode and Wireframe shading. Fixed it. This commit makes the View3D Template a bit narrower in general, but it's very minor, should be no problem. This also fixes some weird increase/decrease of the 3D Mode selector menu when toggling between Textured/Solid and Wireframe/Boundbox shading. --- release/scripts/startup/bl_ui/space_view3d.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 068e5a2659a..ff6afa81e65 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -54,10 +54,11 @@ class VIEW3D_HT_header(Header): else: sub.menu("VIEW3D_MT_object") - row = layout.row() + # Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode... - row.template_header_3D() - + layout.template_header_3D() + + row = layout.row() if obj: # Particle edit if obj.mode == 'PARTICLE_EDIT': From f5f82924614e9ab712a98bd39801061698bf7b3d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 11:07:18 +0000 Subject: [PATCH 027/119] ensure BoneGroup names are kept unique. --- source/blender/makesdna/DNA_action_types.h | 4 +++- source/blender/makesrna/intern/rna_pose.c | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 492dd34caa6..29e0b18b97d 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -341,7 +341,7 @@ typedef struct bPose { void *ikparam; /* IK solver parameters, structure depends on iksolver */ bAnimVizSettings avs; /* settings for visualisation of bone animation */ - char proxy_act_bone[32]; /*proxy active bone name*/ + char proxy_act_bone[32]; /* proxy active bone name*/ } bPose; @@ -423,6 +423,8 @@ typedef enum eItasc_Solver { * This is also exploited for bone-groups. Bone-Groups are stored per bPose, and are used * primarily to color bones in the 3d-view. There are other benefits too, but those are mostly related * to Action-Groups. + * + * Note that these two uses each have their own RNA 'ActionGroup' and 'BoneGroup'. */ typedef struct bActionGroup { struct bActionGroup *next, *prev; diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index b61495edc94..e3a3f93b5f3 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -139,6 +139,17 @@ static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value) } } +void rna_BoneGroup_name_set(PointerRNA *ptr, const char *value) +{ + Object *ob= ptr->id.data; + bActionGroup *agrp= ptr->data; + + /* copy the new name into the name slot */ + BLI_strncpy_utf8(agrp->name, value, sizeof(agrp->name)); + + BLI_uniquename(&ob->pose->agroups, agrp, "Group", '.', offsetof(bActionGroup, name), sizeof(agrp->name)); +} + static IDProperty *rna_PoseBone_idprops(PointerRNA *ptr, int create) { bPoseChannel *pchan= ptr->data; @@ -657,6 +668,7 @@ static void rna_def_bone_group(BlenderRNA *brna) /* name */ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", ""); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_BoneGroup_name_set"); RNA_def_struct_name_property(srna, prop); // TODO: add some runtime-collections stuff to access grouped bones From 58eb0d7967c8402fc021d316f525ddef0f4bad38 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 11:55:09 +0000 Subject: [PATCH 028/119] keep particle system names unique --- source/blender/makesrna/intern/rna_particle.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index f0f782fede2..49005e56367 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -505,6 +505,17 @@ static int rna_PartSettings_is_fluid_get(PointerRNA *ptr) return part->type == PART_FLUID; } +void rna_ParticleSystem_name_set(PointerRNA *ptr, const char *value) +{ + Object *ob= ptr->id.data; + ParticleSystem *part= (ParticleSystem*)ptr->data; + + /* copy the new name into the name slot */ + BLI_strncpy_utf8(part->name, value, sizeof(part->name)); + + BLI_uniquename(&ob->particlesystem, part, "ParticleSystem", '.', offsetof(ParticleSystem, name), sizeof(part->name)); +} + static PointerRNA rna_ParticleSystem_active_particle_target_get(PointerRNA *ptr) { ParticleSystem *psys= (ParticleSystem*)ptr->data; @@ -2617,6 +2628,7 @@ static void rna_def_particle_system(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", "Particle system name"); RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER|NA_RENAME, NULL); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_ParticleSystem_name_set"); RNA_def_struct_name_property(srna, prop); /* access to particle settings is redirected through functions */ From 843193e4d1fb1b8d3ccb0c2bbd4dc763cc4f7601 Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Sat, 15 Oct 2011 14:03:23 +0000 Subject: [PATCH 029/119] Delete applescript for recommit --- .../Contents/Info.plist | 44 ------------------ .../Contents/MacOS/applet | Bin 34480 -> 0 bytes .../Contents/PkgInfo | 1 - .../Contents/Resources/Scripts/main.scpt | Bin 4432 -> 0 bytes .../Contents/Resources/applet.icns | Bin 40291 -> 0 bytes .../Contents/Resources/applet.rsrc | Bin 362 -> 0 bytes .../Resources/description.rtfd/TXT.rtf | 4 -- 7 files changed, 49 deletions(-) delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist delete mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet delete mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist deleted file mode 100644 index f71939a7795..00000000000 --- a/source/darwin/set_simulation_threads.app/Contents/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleAllowMixedLocalizations - - CFBundleDevelopmentRegion - English - CFBundleExecutable - applet - CFBundleIconFile - applet - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - set_simulation_threads - CFBundlePackageType - APPL - CFBundleSignature - aplt - LSMinimumSystemVersionByArchitecture - - x86_64 - 10.6 - - LSRequiresCarbon - - WindowState - - dividerCollapsed - - eventLogLevel - -1 - name - ScriptWindowState - positionOfDivider - 284 - savedFrame - 284 477 1474 522 0 0 1920 1178 - selectedTabView - result - - - diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet deleted file mode 100755 index 0079f4b19d448615de26af5c84a0a6195d511bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34480 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 kX{m7X!AN3H-i0yMjI_%Ek)@64)vn=q^ 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 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf b/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf deleted file mode 100644 index 0d0a60c08b5..00000000000 --- a/source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf +++ /dev/null @@ -1,4 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230 -{\fonttbl} -{\colortbl;\red255\green255\blue255;} -} \ No newline at end of file From 08f8fbbd30cc9e35eae7b064c38fb9ce0c779a8d Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Sat, 15 Oct 2011 14:04:33 +0000 Subject: [PATCH 030/119] OSX:recommit applescript, added errorhandling --- .../Contents/Info.plist | 44 ++++++++++++++++++ .../Contents/MacOS/applet | Bin 0 -> 34480 bytes .../Contents/PkgInfo | 1 + .../Contents/Resources/Scripts/main.scpt | Bin 0 -> 4542 bytes .../Contents/Resources/applet.icns | Bin 0 -> 40291 bytes .../Contents/Resources/applet.rsrc | Bin 0 -> 362 bytes .../Resources/description.rtfd/TXT.rtf | 4 ++ 7 files changed, 49 insertions(+) create mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist create mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet create mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist new file mode 100644 index 00000000000..71ec4a4d0c1 --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + English + CFBundleExecutable + applet + CFBundleIconFile + applet + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + set_simulation_threads + CFBundlePackageType + APPL + CFBundleSignature + aplt + LSMinimumSystemVersionByArchitecture + + x86_64 + 10.6 + + LSRequiresCarbon + + WindowState + + dividerCollapsed + + eventLogLevel + -1 + name + ScriptWindowState + positionOfDivider + 400 + savedFrame + 424 473 1435 704 0 0 1920 1178 + selectedTabView + result + + + diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet new file mode 100755 index 0000000000000000000000000000000000000000..0079f4b19d448615de26af5c84a0a6195d511bfc GIT binary patch literal 34480 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 kX{m7X!AN3H-i0yMcG#W8t;<4ZmIYoK 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 Date: Sat, 15 Oct 2011 14:13:49 +0000 Subject: [PATCH 031/119] OSX: make sure the set_simulation_threads script is always renewed --- build_files/scons/tools/Blender.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index f54ab102415..147316c204a 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -592,7 +592,9 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'install_name_tool -change %s/lib/libgcc_s.1.dylib @executable_path/lib/libgcc_s.1.dylib %s/%s.app/Contents/MacOS/%s'%(instname, installdir, binary, binary) commands.getoutput(cmd) - cmd = 'cp -R %s/source/darwin/set_simulation_threads.app %s/'%(bldroot, installdir) # the omp_num_threads applescript + cmd = 'rm -rf %s/set_simulation_threads.app'%(installdir) # first clear omp_num_threads applescript + commands.getoutput(cmd) + cmd = 'cp -R %s/source/darwin/set_simulation_threads.app %s/'%(bldroot, installdir) # copy the omp_num_threads applescript commands.getoutput(cmd) # extract copy system python, be sure to update other build systems From 7f4bb1f71bfef6914fe610266e97b20346c8f05c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 15 Oct 2011 14:14:22 +0000 Subject: [PATCH 032/119] spelling corrections in comments and quiet warning --- source/blender/blenfont/intern/blf_font.c | 2 +- source/blender/blenkernel/intern/constraint.c | 6 +++--- source/blender/editors/animation/anim_filter.c | 3 ++- source/blender/editors/gpencil/editaction_gpencil.c | 2 +- source/blender/editors/interface/interface.c | 8 ++++---- source/blender/editors/interface/interface_regions.c | 2 +- source/blender/editors/sculpt_paint/paint_image.c | 2 +- source/blender/editors/sculpt_paint/paint_vertex.c | 2 +- source/blender/editors/space_graph/graph_draw.c | 2 +- source/blender/editors/space_sequencer/sequencer_edit.c | 2 +- source/blender/editors/space_view3d/drawobject.c | 2 +- source/blender/editors/transform/transform.c | 2 +- source/blender/makesdna/DNA_action_types.h | 4 ++-- source/blender/makesdna/DNA_constraint_types.h | 2 +- source/blender/makesdna/DNA_ipo_types.h | 2 +- source/blender/makesrna/intern/rna_object_force.c | 2 +- source/blender/python/intern/bpy_library.c | 2 +- 17 files changed, 24 insertions(+), 23 deletions(-) diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 851c6542de0..5161761cf09 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -217,7 +217,7 @@ void blf_font_buffer(FontBLF *font, const char *str) unsigned int i= 0; GlyphBLF **glyph_ascii_table= font->glyph_cache->glyph_ascii_table; - /* buffer spesific vars*/ + /* buffer specific vars*/ const unsigned char b_col_char[4]= {font->b_col[0] * 255, font->b_col[1] * 255, font->b_col[2] * 255, diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 591e0b6a8d2..08a3eab55e6 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -1067,7 +1067,7 @@ static void trackto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta cob->matrix[2][2]=size[2]; /* targetmat[2] instead of ownermat[2] is passed to vectomat - * for backwards compatability it seems... (Aligorith) + * for backwards compatibility it seems... (Aligorith) */ sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]); vectomat(vec, ct->matrix[2], @@ -2104,7 +2104,7 @@ static void actcon_new_data (void *cdata) { bActionConstraint *data= (bActionConstraint *)cdata; - /* set type to 20 (Loc X), as 0 is Rot X for backwards compatability */ + /* set type to 20 (Loc X), as 0 is Rot X for backwards compatibility */ data->type = 20; } @@ -2161,7 +2161,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint constraint_target_to_mat4(ct->tar, ct->subtarget, tempmat, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail); /* determine where in transform range target is */ - /* data->type is mapped as follows for backwards compatability: + /* data->type is mapped as follows for backwards compatibility: * 00,01,02 - rotation (it used to be like this) * 10,11,12 - scaling * 20,21,22 - location diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index c982a1d7f86..fe6aed77462 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -361,7 +361,8 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac) _doSubChannels=2; \ else {\ filter_mode |= ANIMFILTER_TMP_PEEK; \ - } + } \ + (void) _doSubChannels; /* ... standard sub-channel filtering can go on here now ... */ #define END_ANIMFILTER_SUBCHANNELS \ filter_mode = _filter; \ diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c index 937d24eed04..b6398c6a2f5 100644 --- a/source/blender/editors/gpencil/editaction_gpencil.c +++ b/source/blender/editors/gpencil/editaction_gpencil.c @@ -259,7 +259,7 @@ void duplicate_gplayer_frames (bGPDlayer *gpl) /* Copy and Paste Tools */ /* - The copy/paste buffer currently stores a set of GP_Layers, with temporary * GP_Frames with the necessary strokes - * - Unless there is only one element in the buffer, names are also tested to check for compatability. + * - Unless there is only one element in the buffer, names are also tested to check for compatibility. * - All pasted frames are offset by the same amount. This is calculated as the difference in the times of * the current frame and the 'first keyframe' (i.e. the earliest one in all channels). * - The earliest frame is calculated per copy operation. diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 299bec0db8a..b6c72c2e96f 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -575,7 +575,7 @@ static void ui_draw_links(uiBlock *block) /* NOTE: if but->poin is allocated memory for every defbut, things fail... */ static int ui_but_equals_old(uiBut *but, uiBut *oldbut) { - /* various properties are being compared here, hopfully sufficient + /* various properties are being compared here, hopefully sufficient * to catch all cases, but it is simple to add more checks later */ if(but->retval != oldbut->retval) return 0; if(but->rnapoin.data != oldbut->rnapoin.data) return 0; @@ -640,7 +640,7 @@ static int ui_but_update_from_old_block(const bContext *C, uiBlock *block, uiBut // but->flag= oldbut->flag; #else /* exception! redalert flag can't be update from old button. - * perhaps it should only copy spesific flags rather than all. */ + * perhaps it should only copy specific flags rather than all. */ // but->flag= (oldbut->flag & ~UI_BUT_REDALERT) | (but->flag & UI_BUT_REDALERT); #endif // but->active= oldbut->active; @@ -748,7 +748,7 @@ static int ui_but_is_rna_undo(uiBut *but) if(but->rnapoin.id.data) { /* avoid undo push for buttons who's ID are screen or wm level * we could disable undo for buttons with no ID too but may have - * unforseen conciquences, so best check for ID's we _know_ are not + * unforeseen consequences, so best check for ID's we _know_ are not * handled by undo - campbell */ ID *id= but->rnapoin.id.data; if(ID_CHECK_UNDO(id) == FALSE) { @@ -865,7 +865,7 @@ void uiEndBlock(const bContext *C, uiBlock *block) /* inherit flags from 'old' buttons that was drawn here previous, based * on matching buttons, we need this to make button event handling non - * blocking, while still alowing buttons to be remade each redraw as it + * blocking, while still allowing buttons to be remade each redraw as it * is expected by blender code */ for(but=block->buttons.first; but; but=but->next) { if(ui_but_update_from_old_block(C, block, &but)) diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 622d50752fa..028ab05464b 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -368,7 +368,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) /* create tooltip data */ data= MEM_callocN(sizeof(uiTooltipData), "uiTooltipData"); - /* special case, enum rna buttons only have enum item description, use general enum description too before the spesific one */ + /* special case, enum rna buttons only have enum item description, use general enum description too before the specific one */ if(but->rnaprop && RNA_property_type(but->rnaprop) == PROP_ENUM) { const char *descr= RNA_property_description(but->rnaprop); if(descr && descr[0]) { diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 1c53be15a0f..9842bc0e1ee 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -3966,7 +3966,7 @@ static int project_paint_op(void *state, ImBuf *UNUSED(ibufb), float *lastpos, f copy_v2_v2(handles[a].mval, pos); copy_v2_v2(handles[a].prevmval, lastpos); - /* thread spesific */ + /* thread specific */ handles[a].thread_index = a; handles[a].projImages = (ProjPaintImage *)BLI_memarena_alloc(ps->arena_mt[a], ps->image_tot * sizeof(ProjPaintImage)); diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index cf90c43f3e1..87411b97061 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -1619,7 +1619,7 @@ static void do_weight_paint_vertex( /* vars which remain the same for every vert } } - /* important to normalize after mirror, otherwise mirror gets wight + /* important to normalize after mirror, otherwise mirror gets weight * which has already been scaled down in relation to other weights, * then scales a second time [#26193]. Tricky multi-paint code doesn't * suffer from this problem - campbell */ diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index dc5e71f0406..37e6c0b73c9 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -340,7 +340,7 @@ static void draw_fcurve_handles (SpaceIpo *sipo, FCurve *fcu) int sel, b; /* a single call to GL_LINES here around these calls should be sufficient to still - * get separate line segments, but which aren't wrapped with GL_LINE_STRIP everytime we + * get separate line segments, but which aren't wrapped with GL_LINE_STRIP every time we * want a single line */ glBegin(GL_LINES); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index da785430d43..45543a9313e 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2977,7 +2977,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "directory", directory); if (is_relative_path) { - /* TODO, shouldnt this already be relative from the filesel? + /* TODO, shouldn't this already be relative from the filesel? * (as the 'filepath' is) for now just make relative here, * but look into changing after 2.60 - campbell */ BLI_path_rel(directory, bmain->name); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index eb2e821e398..04531bf5ab2 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -765,7 +765,7 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa else glDepthMask(0); for(vos= strings->first; vos; vos= vos->next) { -#if 0 // too slow, reading opengl info while drawing is very bad, better to see if we cn use the zbuffer while in pixel space - campbell +#if 0 // too slow, reading opengl info while drawing is very bad, better to see if we can use the zbuffer while in pixel space - campbell if(v3d->zbuf && (vos->flag & V3D_CACHE_TEXT_ZBUF)) { gluProject(vos->vec[0], vos->vec[1], vos->vec[2], mats.modelview, mats.projection, (GLint *)mats.viewport, &ux, &uy, &uz); glReadPixels(ar->winrct.xmin+vos->mval[0]+vos->xoffs, ar->winrct.ymin+vos->mval[1], 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 73acd1f9000..859c7778883 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1922,7 +1922,7 @@ static void protectedQuaternionBits(short protectflag, float *quat, float *oldqu quat[3]= oldquat[3]; } else { - /* quaternions get limited with euler... (compatability mode) */ + /* quaternions get limited with euler... (compatibility mode) */ float eul[3], oldeul[3], nquat[4], noldquat[4]; float qlen; diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 29e0b18b97d..db574160771 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -340,7 +340,7 @@ typedef struct bPose { void *ikdata; /* temporary IK data, depends on the IK solver. Not saved in file */ void *ikparam; /* IK solver parameters, structure depends on iksolver */ - bAnimVizSettings avs; /* settings for visualisation of bone animation */ + bAnimVizSettings avs; /* settings for visualization of bone animation */ char proxy_act_bone[32]; /* proxy active bone name*/ } bPose; @@ -653,7 +653,7 @@ typedef enum eAnimEdit_AutoSnap { * Constraint Channels in certain situations. * * Action-Channels can only belong to one group at a time, but they still live the Action's - * list of achans (to preserve backwards compatability, and also minimise the code + * list of achans (to preserve backwards compatibility, and also minimize the code * that would need to be recoded). Grouped achans are stored at the start of the list, according * to the position of the group in the list, and their position within the group. */ diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index e04bdd4ec45..00f6f2433af 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -228,7 +228,7 @@ typedef struct bMinMaxConstraint { int minmaxflag; float offset; int flag; - short sticky, stuck, pad1, pad2; /* for backward compatability */ + short sticky, stuck, pad1, pad2; /* for backward compatibility */ float cache[3]; char subtarget[32]; } bMinMaxConstraint; diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h index 8fe8b3bcf70..201ea8994ca 100644 --- a/source/blender/makesdna/DNA_ipo_types.h +++ b/source/blender/makesdna/DNA_ipo_types.h @@ -30,7 +30,7 @@ * \deprecated * The contents of this file are now officially depreceated. They were used for the 'old' animation system, * which has (as of 2.50) been replaced with a completely new system by Joshua Leung (aligorith). All defines, - * etc. are only still maintained to provide backwards compatability for old files. + * etc. are only still maintained to provide backwards compatibility for old files. */ #ifndef DNA_IPO_TYPES_H diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index a6e0e9f3331..c36dca22731 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -53,7 +53,7 @@ static EnumPropertyItem effector_shape_items[] = { #ifdef RNA_RUNTIME -/* type spesific return values only used from functions */ +/* type specific return values only used from functions */ static EnumPropertyItem curve_shape_items[] = { {PFIELD_SHAPE_POINT, "POINT", 0, "Point", ""}, {PFIELD_SHAPE_PLANE, "PLANE", 0, "Plane", ""}, diff --git a/source/blender/python/intern/bpy_library.c b/source/blender/python/intern/bpy_library.c index 603bb0ed0ac..3b0c6a9ff25 100644 --- a/source/blender/python/intern/bpy_library.c +++ b/source/blender/python/intern/bpy_library.c @@ -58,7 +58,7 @@ typedef struct { PyObject_HEAD /* required python macro */ - /* collection iterator spesific parts */ + /* collection iterator specific parts */ char relpath[FILE_MAX]; char abspath[FILE_MAX]; /* absolute path */ BlendHandle *blo_handle; From 1c8a91d4df9593f3a24efbf945afabb0efa80ccc Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Sat, 15 Oct 2011 14:21:03 +0000 Subject: [PATCH 033/119] OSX: add editable applescript to not have the script a blackbox --- source/darwin/blender.app/Contents/Info.plist | 48 +++++++++--------- .../Contents/Resources/Scripts/main.scpt | Bin 4542 -> 4696 bytes .../set_simulation_threads_applescript.scpt | Bin 0 -> 5140 bytes 3 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 source/darwin/set_simulation_threads_applescript.scpt diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist index a25c629ce68..7fab4a98c4b 100644 --- a/source/darwin/blender.app/Contents/Info.plist +++ b/source/darwin/blender.app/Contents/Info.plist @@ -2,29 +2,13 @@ - CFBundleInfoDictionaryVersion - 6.0 - CFBundleExecutable - blender - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleIconFile - blender icon.icns - CFBundleName - Blender - CFBundleIdentifier - org.blenderfoundation.blender - CFBundleVersion - ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation - CFBundleShortVersionString - ${MACOSX_BUNDLE_SHORT_VERSION_STRING} - CFBundleGetInfoString - ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation CFBundleDocumentTypes + CFBundleTypeExtensions + + blend + CFBundleTypeIconFile blender file icon.icns CFBundleTypeName @@ -33,16 +17,32 @@ BLND - CFBundleTypeExtensions - - blend - CFBundleTypeRole Editor LSIsAppleDefaultForType + CFBundleExecutable + blender + CFBundleGetInfoString + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation + CFBundleIconFile + blender icon.icns + CFBundleIdentifier + org.blenderfoundation.blender + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Blender + CFBundlePackageType + APPL + CFBundleShortVersionString + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} + CFBundleSignature + ???? + CFBundleVersion + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation LSEnvironment OMP_NUM_THREADS diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt b/source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt index 44a107abf789e7ba08108321291370769939e78f..7a0e345348ce667e7560a3eaa9b0c277cc206a00 100644 GIT binary patch delta 1052 zcmeHGOHWf#5dIDna!%f2IH#4MCjJBG=1%6DnfuMjo$o9Mwt_du>J9K) zr&sIkXp$xiGrK&=h9;U2f(eKEuJ++n-_%#Q)SmjHKC4e~L#T@Sh-URcy@yBbsvY%C zZNsbHqD8$?uhlE{Qf;9XZD?07)TRq&d714oo1<>Xkh=|&J-}!kLp+x)f{Z;!9heb~ z&!_X@$uaqqdCawq2c2gIs8~6FL7uRUE;9GhjrEm_rv5;iA_I609Qnpnys(hX(;*FD zZDZ+xNg_cR3b4{#C1xH)9{JI*^$KbU?P{!r_zN8eg&~iCK+of&7~qJ z&Xx+vbOf~_5y%l+m%Qf~9f=~2d8Cm?7?T)7GoscJmGwIl5m_}Jt41TQHFSGD5Z2Ue zt~8S_T8D>`_ZyDeoa{;UpOuFjmspbv>=8NyIxsGUn_gp>yLGNppi`bRdb!Z3OQ1{M zwfp34!^fL-rdyy}J~pDoW%@hg$tse^s zOk7`b bx;(VRkU*$>)g5MLyqGM|{V)%1}sl(uXwn8&w!Rq+>Xy aFeZ-EUuRnnUGz|G&MoM*cz@dMhyMVek)z1~ diff --git a/source/darwin/set_simulation_threads_applescript.scpt b/source/darwin/set_simulation_threads_applescript.scpt new file mode 100644 index 0000000000000000000000000000000000000000..ba05af641785447d2afb6eddf42c813b9caf5836 GIT binary patch literal 5140 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 fdhfBkaeO+4Psh-vv6YpTnY#Yc5#r3DLp%Nre Date: Sat, 15 Oct 2011 23:50:05 +0000 Subject: [PATCH 034/119] Set the correct char for Persian name (using \ufbfd instead of the arabic yeh one) --- source/blender/makesrna/intern/rna_userdef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 28525042eda..e2f0f4dab1f 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2541,7 +2541,7 @@ static void rna_def_userdef_system(BlenderRNA *brna) {24, "KOREAN", 0, N_("Korean (한국 언어)"), "ko_KR"}, /*{25, "NEPALI", 0, N_("Nepali (नेपाली)"), "ne_NP"},*/ /* using the utf8 flipped form of Persian (فارسی) */ - {26, "PERSIAN", 0, N_("Persian (ﺱﺭﺎﻓ)"), "fa_PE"}, + {26, "PERSIAN", 0, N_("Persian (ﯽﺳﺭﺎﻓ)"), "fa_PE"}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesSystem", NULL); From 3fd8a914b84ff6e1e0c9e313d0a48cd3438e0b08 Mon Sep 17 00:00:00 2001 From: Daniel Salazar Date: Sun, 16 Oct 2011 09:51:23 +0000 Subject: [PATCH 035/119] ID Mask node was limmited at 10000 while OB and Mat IDs reach 32767. Set this limit and it's working fine here in my comps --- source/blender/makesrna/intern/rna_nodetree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 813375a3549..061a21056d0 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -1871,7 +1871,7 @@ static void def_cmp_id_mask(StructRNA *srna) prop = RNA_def_property(srna, "index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "custom1"); - RNA_def_property_range(prop, 0, 10000); + RNA_def_property_range(prop, 0, 32767); RNA_def_property_ui_text(prop, "Index", "Pass index number to convert to alpha"); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); From 92bc72dca19ae50a8e1a36734a7280e10f8e352e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 16 Oct 2011 11:09:15 +0000 Subject: [PATCH 036/119] convenience targets for make doc_py, doc_dna, doc_man --- GNUmakefile | 9 +++++++++ doc/manpage/blender.1.py | 12 +++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 52f36b218d8..17a9e87be22 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -147,6 +147,8 @@ help: @echo "" @echo "Documentation Targets" @echo " * doc_py - generate sphinx python api docs" + @echo " * doc_dna - generate blender file format reference" + @echo " * doc_man - generate manpage" @echo "" # ----------------------------------------------------------------------------- @@ -235,6 +237,13 @@ doc_py: cd doc/python_api ; sphinx-build -n -b html sphinx-in sphinx-out @echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'" +doc_dna: + $(BUILD_DIR)/bin/blender --background --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py + @echo "docs written into: '$(BLENDER_DIR)/doc/blender_file_format/dna.html'" + +doc_man: + python3 doc/manpage/blender.1.py $(BUILD_DIR)/bin/blender + clean: $(MAKE) -C $(BUILD_DIR) clean diff --git a/doc/manpage/blender.1.py b/doc/manpage/blender.1.py index 40234300994..21df42a4082 100644 --- a/doc/manpage/blender.1.py +++ b/doc/manpage/blender.1.py @@ -22,6 +22,7 @@ import subprocess import os +import sys import time import datetime @@ -43,10 +44,15 @@ def man_format(data): return data +# allow passing blender as argument +if sys.argv[-1].endswith(os.sep + "blender"): + blender_bin = sys.argv[-1] +else: + blender_bin = os.path.join(os.path.dirname(__file__), "../../blender.bin") -blender_bin = os.path.join(os.path.dirname(__file__), "../../blender.bin") - -blender_help = subprocess.Popen([blender_bin, "--help"], stdout=subprocess.PIPE).communicate()[0].decode() +cmd = [blender_bin, "--help"] +print(" executing:", " ".join(cmd)) +blender_help = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0].decode() blender_version = subprocess.Popen([blender_bin, "--version"], stdout=subprocess.PIPE).communicate()[0].decode().strip() blender_version = blender_version.split("Build")[0] From b6d0daa9cb261b3ce2ba3053ebee86f79caa5f06 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 16 Oct 2011 12:25:42 +0000 Subject: [PATCH 037/119] utf8 editing for UI text input, this means backspace, delete, arrow keys properly move the cursor with multi-byte chars. Note that this is only for the interface, text editor and python console still miss this feature. --- source/blender/blenlib/BLI_string.h | 4 + source/blender/blenlib/intern/string_utf8.c | 80 ++++++++ .../editors/interface/interface_handlers.c | 175 ++++++++++-------- 3 files changed, 185 insertions(+), 74 deletions(-) diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h index c53ce9dced5..3ac8dba106a 100644 --- a/source/blender/blenlib/BLI_string.h +++ b/source/blender/blenlib/BLI_string.h @@ -147,6 +147,10 @@ void BLI_ascii_strtoupper(char *str, int len); char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy); int BLI_utf8_invalid_byte(const char *str, int length); int BLI_utf8_invalid_strip(char *str, int length); + /* copied from glib */ +char *BLI_str_find_prev_char_utf8(const char *str, const char *p); +char *BLI_str_find_next_char_utf8(const char *p, const char *end); +char *BLI_str_prev_char_utf8(const char *p); #ifdef __cplusplus } diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index 961a41690f7..dc6cb0ef228 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -183,3 +183,83 @@ char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy) return dst_r; } +/* copied from glib */ +/** + * g_utf8_find_prev_char: + * @str: pointer to the beginning of a UTF-8 encoded string + * @p: pointer to some position within @str + * + * Given a position @p with a UTF-8 encoded string @str, find the start + * of the previous UTF-8 character starting before @p. Returns %NULL if no + * UTF-8 characters are present in @str before @p. + * + * @p does not have to be at the beginning of a UTF-8 character. No check + * is made to see if the character found is actually valid other than + * it starts with an appropriate byte. + * + * Return value: a pointer to the found character or %NULL. + **/ +char * BLI_str_find_prev_char_utf8(const char *str, const char *p) +{ + for (--p; p >= str; --p) { + if ((*p & 0xc0) != 0x80) { + return (char *)p; + } + } + return NULL; +} + +/** + * g_utf8_find_next_char: + * @p: a pointer to a position within a UTF-8 encoded string + * @end: a pointer to the byte following the end of the string, + * or %NULL to indicate that the string is nul-terminated. + * + * Finds the start of the next UTF-8 character in the string after @p. + * + * @p does not have to be at the beginning of a UTF-8 character. No check + * is made to see if the character found is actually valid other than + * it starts with an appropriate byte. + * + * Return value: a pointer to the found character or %NULL + **/ +char *BLI_str_find_next_char_utf8(const char *p, const char *end) +{ + if (*p) { + if (end) { + for (++p; p < end && (*p & 0xc0) == 0x80; ++p) { + /* do nothing */ + } + } + else { + for (++p; (*p & 0xc0) == 0x80; ++p) { + /* do nothing */ + } + } + } + return (p == end) ? NULL : (char *)p; +} + +/** + * g_utf8_prev_char: + * @p: a pointer to a position within a UTF-8 encoded string + * + * Finds the previous UTF-8 character in the string before @p. + * + * @p does not have to be at the beginning of a UTF-8 character. No check + * is made to see if the character found is actually valid other than + * it starts with an appropriate byte. If @p might be the first + * character of the string, you must use g_utf8_find_prev_char() instead. + * + * Return value: a pointer to the found character. + **/ +char *BLI_str_prev_char_utf8(const char *p) +{ + while (1) { + p--; + if ((*p & 0xc0) != 0x80) { + return (char *)p; + } + } +} +/* end glib copy */ diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 6699e8f8701..f4400d2d7db 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1252,6 +1252,86 @@ static short test_special_char(char ch) return 0; } +static int ui_textedit_step_next_utf8(const char *str, size_t maxlen, short *pos) +{ + const char *str_end= str + (maxlen + 1); + const char *str_pos= str + (*pos); + const char *str_next= BLI_str_find_next_char_utf8(str_pos, str_end); + if (str_next) { + (*pos) += (str_next - str_pos); + if((*pos) > maxlen) (*pos)= maxlen; + return TRUE; + } + + return FALSE; +} + +static int ui_textedit_step_prev_utf8(const char *str, size_t UNUSED(maxlen), short *pos) +{ + if((*pos) > 0) { + const char *str_pos= str + (*pos); + const char *str_prev= BLI_str_find_prev_char_utf8(str, str_pos); + if (str_prev) { + (*pos) -= (str_pos - str_prev); + return TRUE; + } + } + + return FALSE; +} + +static void ui_textedit_step_utf8(const char *str, size_t maxlen, + short *pos, const char direction, + const short do_jump, const short do_all) +{ + const short pos_prev= *pos; + + if(direction) { /* right*/ + if(do_jump) { + /* jump between special characters (/,\,_,-, etc.), + * look at function test_special_char() for complete + * list of special character, ctr -> */ + while((*pos) < maxlen) { + if (ui_textedit_step_next_utf8(str, maxlen, pos)) { + if(!do_all && test_special_char(str[(*pos)])) break; + } + else { + break; /* unlikely but just incase */ + } + } + } + else { + ui_textedit_step_next_utf8(str, maxlen, pos); + } + } + else { /* left */ + if(do_jump) { + /* left only: compensate for index/change in direction */ + ui_textedit_step_prev_utf8(str, maxlen, pos); + + /* jump between special characters (/,\,_,-, etc.), + * look at function test_special_char() for complete + * list of special character, ctr -> */ + while ((*pos) > 0) { + if (ui_textedit_step_prev_utf8(str, maxlen, pos)) { + if(!do_all && test_special_char(str[(*pos)])) break; + } + else { + break; + } + } + + /* left only: compensate for index/change in direction */ + if(((*pos) != 0) && ABS(pos_prev - (*pos)) > 1) { + ui_textedit_step_next_utf8(str, maxlen, pos); + } + } + else { + ui_textedit_step_prev_utf8(str, maxlen, pos); + } + } +} + static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data) { char *str= data->str; @@ -1294,13 +1374,17 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho /* mouse dragged outside the widget to the left */ if (x < startx && but->ofs > 0) { - int i= but->ofs; + short i= but->ofs; origstr[but->ofs] = 0; while (i > 0) { - i--; - if (BLF_width(fstyle->uifont_id, origstr+i) > (startx - x)*0.25f) break; // 0.25 == scale factor for less sensitivity + if (ui_textedit_step_prev_utf8(origstr, but->ofs, &i)) { + if (BLF_width(fstyle->uifont_id, origstr+i) > (startx - x)*0.25f) break; // 0.25 == scale factor for less sensitivity + } + else { + break; /* unlikely but possible */ + } } but->ofs = i; but->pos = but->ofs; @@ -1314,9 +1398,13 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho /* XXX does not take zoom level into account */ while (startx + aspect_sqrt * BLF_width(fstyle->uifont_id, origstr+but->ofs) > x) { if (but->pos <= 0) break; - but->pos--; - origstr[but->pos+but->ofs] = 0; - } + if (ui_textedit_step_prev_utf8(origstr, but->ofs, &but->pos)) { + origstr[but->pos+but->ofs] = 0; + } + else { + break; /* unlikely but possible */ + } + } but->pos += but->ofs; if(but->pos<0) but->pos= 0; } @@ -1391,48 +1479,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction data->selextend = 0; } else { - if(direction) { /* right*/ - if(jump) { - /* jump between special characters (/,\,_,-, etc.), - * look at function test_special_char() for complete - * list of special character, ctr -> */ - while(but->pos < len) { - but->pos++; - if(!jump_all && test_special_char(str[but->pos])) break; - } - } - else { - but->pos++; - if(but->pos > len) but->pos= len; - } - } - else { /* left */ - if(jump) { - - /* left only: compensate for index/change in direction */ - if(but->pos > 0) { - but->pos--; - } - - /* jump between special characters (/,\,_,-, etc.), - * look at function test_special_char() for complete - * list of special character, ctr -> */ - while(but->pos > 0){ - but->pos--; - if(!jump_all && test_special_char(str[but->pos])) break; - } - - /* left only: compensate for index/change in direction */ - if((but->pos != 0) && ABS(pos_prev - but->pos) > 1) { - but->pos++; - } - - } - else { - if(but->pos>0) but->pos--; - } - } - + ui_textedit_step_utf8(str, len, &but->pos, direction, jump, jump_all); if(select) { /* existing selection */ @@ -1498,21 +1545,10 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio changed= ui_textedit_delete_selection(but, data); } else if(but->pos>=0 && but->pospos; int step; - - if (jump) { - x = but->pos; - step= 0; - while(x < len) { - x++; - step++; - if(test_special_char(str[x])) break; - } - } - else { - step= 1; - } - + ui_textedit_step_utf8(str, len, &pos, direction, jump, all); + step= pos - but->pos; for(x=but->pos; xpos>0) { + short pos= but->pos; int step; - if (jump) { - x = but->pos; - step= 0; - while(x > 0) { - x--; - step++; - if((step > 1) && test_special_char(str[x])) break; - } - } - else { - step= 1; - } + ui_textedit_step_utf8(str, len, &pos, direction, jump, all); + step= but->pos - pos; for(x=but->pos; x Date: Sun, 16 Oct 2011 13:10:14 +0000 Subject: [PATCH 038/119] allow passing BUILD_DIR to convenience makefile as an argument incase you dont want to build in the default path. --- GNUmakefile | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 17a9e87be22..af953143b82 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -34,10 +34,13 @@ OS_NCASE:=$(shell uname -s | tr '[A-Z]' '[a-z]') # Source and Build DIR's BLENDER_DIR:=$(shell pwd -P) -BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE) BUILD_TYPE:=Release BUILD_CMAKE_ARGS:= +ifndef BUILD_DIR + BUILD_DIR:=$(shell dirname $(BLENDER_DIR))/build/$(OS_NCASE) +endif + # ----------------------------------------------------------------------------- # additional targets for the build configuration @@ -120,6 +123,9 @@ help: @echo " * headless - build without an interface (renderfarm or server automation)" @echo " * bpy - build as a python module which can be loaded from python directly" @echo "" + @echo " Note, passing the argument 'BUILD_DIR=path' when calling make will override the default build dir." + @echo "" + @echo "" @echo "Project Files for IDE's" @echo " * project_qtcreator - QtCreator Project Files" @echo " * project_netbeans - NetBeans Project Files" @@ -130,9 +136,8 @@ help: @echo " * package_pacman - build an arch linux pacmanpackage" @echo " * package_archive - build an archive package" @echo "" - @echo "Other Targets" + @echo "Other Targets (not assosiated with building blender)" @echo " * translations - update blenders translation files in po/" - # TODO, doxygen and sphinx docs @echo "" @echo "Testing Targets (not assosiated with building blender)" @echo " * test - run ctest, currently tests import/export, operator execution and that python modules load" @@ -145,7 +150,7 @@ help: @echo " * check_splint - run blenders source through splint (C only)" @echo " * check_sparse - run blenders source through sparse (C only)" @echo "" - @echo "Documentation Targets" + @echo "Documentation Targets (not assosiated with building blender)" @echo " * doc_py - generate sphinx python api docs" @echo " * doc_dna - generate blender file format reference" @echo " * doc_man - generate manpage" From 6d5891e7eaa490794461ab02538dfb5f7037faef Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 16 Oct 2011 15:01:13 +0000 Subject: [PATCH 039/119] fix bad URL in bgl doc --- doc/python_api/rst/bgl.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/python_api/rst/bgl.rst b/doc/python_api/rst/bgl.rst index 61400351d16..8fe765836a1 100644 --- a/doc/python_api/rst/bgl.rst +++ b/doc/python_api/rst/bgl.rst @@ -20,7 +20,7 @@ OpenGL}" and the online NeHe tutorials are two of the best resources. See :class:`Image.gl_load` and :class:`Image.gl_load`, for example. `OpenGL.org `_ - `NeHe GameDev `_ + `NeHe GameDev `_ .. function:: glAccum(op, value): From 8fae0c6d7e0d24bfa6c12e2121c5fa7a62440141 Mon Sep 17 00:00:00 2001 From: Janne Karhu Date: Sun, 16 Oct 2011 16:14:36 +0000 Subject: [PATCH 040/119] Particle dupliobject rotation changes: There has been quite a bit of fuss about particle dupliobject rotation in 2.59, so here are some changes to make things work a bit more consistently and predictably in 2.60. Much of the confusion has been about what the "Initial rotation" for particles actually means. Simply put it's just a vector that that the particles (and the dupliobjects) are aligned to and around which they can be rotated with the phase controls. I've now renamed these controls under a label "Rotation axis". In 2.59 and previous versions the dupliobject's global x-axis was aligned to the particle rotation axis for non-hair particles. This meant that the object's own rotation (in addition to the particle rotation) could effect the dupliobjects' rotations. This old behavior can still be used with the "Rotation" option in the particle render panel when object/group is set as the visualization. This option is also activated automatically for old files to maintain backwards compatibility. Now the default dupliobject rotations ignore the object's own rotation completely and align the object's tracking axis to the particle rotation axis. The tracking axis can be found under the Object tab -> Animation Hacks panel. In 2.58 the way of calculating the rotation for hair didn't work as intended and enabled many non-functional combinations of options. For this reason I removed most of the rotation options for hair in 2.59. Now the options have been reimplemented better and the dupliobject's tracking axis is aligned to the hair direction by default (Rotation axis = Velocity / Hair). All the other axis options work too along with the phase controls. --- .../startup/bl_ui/properties_particle.py | 34 ++++++---- source/blender/blenkernel/intern/anim.c | 12 +++- source/blender/blenkernel/intern/particle.c | 63 ++++++++++++------- source/blender/blenloader/intern/readfile.c | 14 +++++ source/blender/makesdna/DNA_particle_types.h | 3 +- source/blender/makesrna/intern/rna_particle.c | 11 +++- 6 files changed, 98 insertions(+), 39 deletions(-) diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index eceefc70b5c..d24aef56a8b 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -404,10 +404,13 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): part = context.space_data.pin_id layout.enabled = particle_panel_enabled(context, psys) + + layout.prop(part, "use_dynamic_rotation") - row = layout.row() - row.label(text="Initial Rotation:") - row.prop(part, "use_dynamic_rotation") + if part.use_dynamic_rotation: + layout.label(text="Initial Rotation Axis:") + else: + layout.label(text="Rotation Axis:") split = layout.split() @@ -419,12 +422,18 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): col.prop(part, "phase_factor", slider=True) col.prop(part, "phase_factor_random", text="Random", slider=True) - col = layout.column() - col.label(text="Angular Velocity:") - col.row().prop(part, "angular_velocity_mode", expand=True) - - if part.angular_velocity_mode != 'NONE': - col.prop(part, "angular_velocity_factor", text="") + if part.type != 'HAIR': + col = layout.column() + if part.use_dynamic_rotation: + col.label(text="Initial Angular Velocity:") + else: + col.label(text="Angular Velocity:") + sub = col.row(align=True) + sub.prop(part, "angular_velocity_mode", text="") + subsub = sub.column() + subsub.active = part.angular_velocity_mode != 'NONE' + subsub.prop(part, "angular_velocity_factor", text="") + class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): @@ -832,7 +841,9 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel): elif part.render_type == 'OBJECT': col.prop(part, "dupli_object") - col.prop(part, "use_global_dupli") + sub = col.row() + sub.prop(part, "use_global_dupli") + sub.prop(part, "use_rotation_dupli") elif part.render_type == 'GROUP': col.prop(part, "dupli_group") split = layout.split() @@ -841,13 +852,14 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel): col.prop(part, "use_whole_group") sub = col.column() sub.active = (part.use_whole_group is False) + sub.prop(part, "use_group_pick_random") sub.prop(part, "use_group_count") col = split.column() sub = col.column() sub.active = (part.use_whole_group is False) sub.prop(part, "use_global_dupli") - sub.prop(part, "use_group_pick_random") + sub.prop(part, "use_rotation_dupli") if part.use_group_count and not part.use_whole_group: row = layout.row() diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index cd2c272a1c2..da6dd5bd39d 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -1430,6 +1430,16 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p VECCOPY(vec, obmat[3]); obmat[3][0] = obmat[3][1] = obmat[3][2] = 0.0f; + + /* particle rotation uses x-axis as the aligned axis, so pre-rotate the object accordingly */ + if((part->draw & PART_DRAW_ROTATE_OB) == 0) { + float xvec[3], q[4]; + xvec[0] = -1.f; + xvec[1] = xvec[2] = 0; + vec_to_quat(q, xvec, ob->trackflag, ob->upflag); + quat_to_mat4(obmat, q); + obmat[3][3]= 1.0f; + } /* Normal particles and cached hair live in global space so we need to * remove the real emitter's transformation before 2nd order duplication. @@ -1448,7 +1458,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p copy_m4_m4(mat, tmat); if(part->draw & PART_DRAW_GLOBAL_OB) - VECADD(mat[3], mat[3], vec); + add_v3_v3v3(mat[3], mat[3], vec); dob= new_dupli_object(lb, ob, mat, ob->lay, counter, GS(id->name) == ID_GR ? OB_DUPLIGROUP : OB_DUPLIPARTS, animated); copy_m4_m4(dob->omat, oldobmat); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 806a7871948..8669c4e0efd 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -4384,33 +4384,50 @@ void psys_get_dupli_path_transform(ParticleSimulationData *sim, ParticleData *pa psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0); else psys_particle_on_emitter(psmd,PART_FROM_FACE,cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0); - - copy_m3_m4(nmat, ob->imat); - transpose_m3(nmat); - mul_m3_v3(nmat, nor); - normalize_v3(nor); - /* make sure that we get a proper side vector */ - if(fabs(dot_v3v3(nor,vec))>0.999999) { - if(fabs(dot_v3v3(nor,xvec))>0.999999) { - nor[0] = 0.0f; - nor[1] = 1.0f; - nor[2] = 0.0f; + if(psys->part->rotmode == PART_ROT_VEL) { + copy_m3_m4(nmat, ob->imat); + transpose_m3(nmat); + mul_m3_v3(nmat, nor); + normalize_v3(nor); + + /* make sure that we get a proper side vector */ + if(fabs(dot_v3v3(nor,vec))>0.999999) { + if(fabs(dot_v3v3(nor,xvec))>0.999999) { + nor[0] = 0.0f; + nor[1] = 1.0f; + nor[2] = 0.0f; + } + else { + nor[0] = 1.0f; + nor[1] = 0.0f; + nor[2] = 0.0f; + } } - else { - nor[0] = 1.0f; - nor[1] = 0.0f; - nor[2] = 0.0f; + cross_v3_v3v3(side, nor, vec); + normalize_v3(side); + + /* rotate side vector around vec */ + if(psys->part->phasefac != 0) { + float q_phase[4]; + float phasefac = psys->part->phasefac; + if(psys->part->randphasefac != 0.0f) + phasefac += psys->part->randphasefac * PSYS_FRAND((pa-psys->particles) + 20); + axis_angle_to_quat( q_phase, vec, phasefac*(float)M_PI); + + mul_qt_v3(q_phase, side); } + + cross_v3_v3v3(nor, vec, side); + + unit_m4(mat); + VECCOPY(mat[0], vec); + VECCOPY(mat[1], side); + VECCOPY(mat[2], nor); + } + else { + quat_to_mat4(mat, pa->state.rot); } - cross_v3_v3v3(side, nor, vec); - normalize_v3(side); - cross_v3_v3v3(nor, vec, side); - - unit_m4(mat); - VECCOPY(mat[0], vec); - VECCOPY(mat[1], side); - VECCOPY(mat[2], nor); *scale= len; } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 76070e42f29..84b9021d080 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -12176,6 +12176,20 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (ntree=main->nodetree.first; ntree; ntree=ntree->id.next) do_versions_nodetree_image_default_alpha_output(ntree); } + + { + /* support old particle dupliobject rotation settings */ + ParticleSettings *part; + + for (part=main->particle.first; part; part=part->id.next) { + if(ELEM(part->ren_as, PART_DRAW_OB, PART_DRAW_GR)) { + part->draw |= PART_DRAW_ROTATE_OB; + + if(part->rotmode == 0) + part->rotmode = PART_ROT_VEL; + } + } + } } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 9fec5207dbb..da2fce4da82 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -386,7 +386,8 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in #define PART_DRAW_HEALTH 16 #define PART_ABS_PATH_TIME 32 #define PART_DRAW_COUNT_GR 64 -#define PART_DRAW_BB_LOCK 128 +#define PART_DRAW_BB_LOCK 128 /* used with billboards */ +#define PART_DRAW_ROTATE_OB 128 /* used with dupliobjects/groups */ #define PART_DRAW_PARENT 256 #define PART_DRAW_NUM 512 #define PART_DRAW_RAND_GR 1024 diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 49005e56367..43d5f87f0d5 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -1478,7 +1478,7 @@ static void rna_def_particle_settings(BlenderRNA *brna) static EnumPropertyItem rot_mode_items[] = { {0, "NONE", 0, "None", ""}, {PART_ROT_NOR, "NOR", 0, "Normal", ""}, - {PART_ROT_VEL, "VEL", 0, "Velocity", ""}, + {PART_ROT_VEL, "VEL", 0, "Velocity / Hair", ""}, {PART_ROT_GLOB_X, "GLOB_X", 0, "Global X", ""}, {PART_ROT_GLOB_Y, "GLOB_Y", 0, "Global Y", ""}, {PART_ROT_GLOB_Z, "GLOB_Z", 0, "Global Z", ""}, @@ -1733,7 +1733,7 @@ static void rna_def_particle_settings(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "rotmode"); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_enum_items(prop, rot_mode_items); - RNA_def_property_ui_text(prop, "Rotation", "Particles initial rotation"); + RNA_def_property_ui_text(prop, "Rotation", "Particle rotation axis"); RNA_def_property_update(prop, 0, "rna_Particle_reset"); prop= RNA_def_property(srna, "angular_velocity_mode", PROP_ENUM, PROP_NONE); @@ -1798,7 +1798,12 @@ static void rna_def_particle_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "use_global_dupli", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_GLOBAL_OB); - RNA_def_property_ui_text(prop, "Use Global", "Use object's global coordinates for duplication"); + RNA_def_property_ui_text(prop, "Global", "Use object's global coordinates for duplication"); + RNA_def_property_update(prop, 0, "rna_Particle_redo"); + + prop= RNA_def_property(srna, "use_rotation_dupli", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_ROTATE_OB); + RNA_def_property_ui_text(prop, "Rotation", "Use object's rotation for duplication (global x-axis is aligned particle rotation axis)"); RNA_def_property_update(prop, 0, "rna_Particle_redo"); prop= RNA_def_property(srna, "use_render_adaptive", PROP_BOOLEAN, PROP_NONE); From 67c15da97de7644fc4deb3ab1b03c3db22f1f647 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 02:20:53 +0000 Subject: [PATCH 041/119] docs / clenup (no functional code changes) - added API examples for mathutils.Color/Euler/Quaternion/Matrix. - corrected own bad spelling matricies --> matrices. - minor pep8 edits. - update CMake ignore file list. --- .../cmake/cmake_consistency_check_config.py | 8 +++++ doc/python_api/examples/mathutils.Color.py | 30 ++++++++++++++++++ doc/python_api/examples/mathutils.Euler.py | 31 ++++++++++++++++++- doc/python_api/examples/mathutils.Matrix.py | 27 +++++++++++++++- .../examples/mathutils.Quaternion.py | 22 ++++++++++++- doc/python_api/rst/bge.logic.rst | 2 +- .../startup/bl_ui/properties_particle.py | 3 +- source/blender/blenkernel/BKE_paint.h | 2 +- source/blender/blenkernel/intern/constraint.c | 2 +- source/blender/editors/util/crazyspace.c | 2 +- .../python/mathutils/mathutils_Matrix.c | 6 ++-- 11 files changed, 123 insertions(+), 12 deletions(-) create mode 100644 doc/python_api/examples/mathutils.Color.py diff --git a/build_files/cmake/cmake_consistency_check_config.py b/build_files/cmake/cmake_consistency_check_config.py index 60a46d3a1dd..86f51273ff5 100644 --- a/build_files/cmake/cmake_consistency_check_config.py +++ b/build_files/cmake/cmake_consistency_check_config.py @@ -27,6 +27,10 @@ IGNORE = ( "extern/eltopo/common/openglutils.cpp", "extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp", "source/blender/imbuf/intern/imbuf_cocoa.m", + "extern/recastnavigation/Recast/Source/RecastLog.cpp", + "extern/recastnavigation/Recast/Source/RecastTimer.cpp", + "entern/audaspace/SRC/AUD_SRCResampleFactory.cpp", + "entern/audaspace/SRC/AUD_SRCResampleReader.cpp", "extern/bullet2/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h", "extern/bullet2/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h", @@ -41,6 +45,10 @@ IGNORE = ( "extern/eltopo/common/meshes/TriangleIndex.hpp", "extern/eltopo/common/meshes/meshloader.h", "extern/eltopo/eltopo3d/broadphase_blenderbvh.h" + "extern/recastnavigation/Recast/Include/RecastLog.h", + "extern/recastnavigation/Recast/Include/RecastTimer.h", + "intern/audaspace/SRC/AUD_SRCResampleFactory.h", + "intern/audaspace/SRC/AUD_SRCResampleReader.h", ) UTF8_CHECK = True diff --git a/doc/python_api/examples/mathutils.Color.py b/doc/python_api/examples/mathutils.Color.py new file mode 100644 index 00000000000..a55f1195bf6 --- /dev/null +++ b/doc/python_api/examples/mathutils.Color.py @@ -0,0 +1,30 @@ +import mathutils + +# color values are represented as RGB values from 0 - 1, this is blue +col = mathutils.Color((0.0, 0.0, 1.0)) + +# as well as r/g/b attribute access you can adjust them by h/s/v +col.s *= 0.5 + +# you can access its components by attribute or index +print("Color R:", col.r) +print("Color G:", col[1]) +print("Color B:", col[-1]) +print("Color HSV: %.2f, %.2f, %.2f", col[:]) + + +# components of an existing color can be set +col[:] = 0.0, 0.5, 1.0 + +# components of an existing color can use slice notation to get a tuple +print("Values: %f, %f, %f" % col[:]) + +# colors can be added and subtracted +col += mathutils.Color((0.25, 0.0, 0.0)) + +# Color can be multiplied, in this example color is scaled to 0-255 +# can printed as integers +print("Color: %d, %d, %d" % (col * 255.0)[:]) + +# This example prints the color as hexidecimal +print("Hexidecimal: %.2x%.2x%.2x" % (col * 255.0)[:]) diff --git a/doc/python_api/examples/mathutils.Euler.py b/doc/python_api/examples/mathutils.Euler.py index bc7702c1d53..3f87cc0ab04 100644 --- a/doc/python_api/examples/mathutils.Euler.py +++ b/doc/python_api/examples/mathutils.Euler.py @@ -1,3 +1,32 @@ import mathutils +import math -# todo +# create a new euler with default axis rotation order +eul = mathutils.Euler((0.0, math.radians(45.0), 0.0), 'XYZ') + +# rotate the euler +eul.rotate_axis(math.radians(10.0), 'Z') + +# you can access its components by attribute or index +print("Euler X", eul.x) +print("Euler Y", eul[1]) +print("Euler Z", eul[-1]) + +# components of an existing euler can be set +eul[:] = 1.0, 2.0, 3.0 + +# components of an existing euler can use slice notation to get a tuple +print("Values: %f, %f, %f" % eul[:]) + +# the order can be set at any time too +eul.order = 'ZYX' + +# eulers can be used to rotate vectors +vec = mathutils.Vector((0.0, 0.0, 1.0)) +vec.rotate(eul) + +# often its useful to convert the euler into a matrix so it can be used as +# transformations with more flexibility +mat_rot = eul.to_matrix() +mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0)) +mat = mat_loc * mat_rot.to_4x4() diff --git a/doc/python_api/examples/mathutils.Matrix.py b/doc/python_api/examples/mathutils.Matrix.py index bc7702c1d53..079070a5ec7 100644 --- a/doc/python_api/examples/mathutils.Matrix.py +++ b/doc/python_api/examples/mathutils.Matrix.py @@ -1,3 +1,28 @@ import mathutils +import math -# todo +# create a location matrix +mat_loc = mathutils.Matrix.Translation((2.0, 3.0, 4.0)) + +# create an identitiy matrix +mat_sca = mathutils.Matrix.Scale(0.5, 4, (0.0, 0.0, 1.0)) + +# create a rotation matrix +mat_rot = mathutils.Matrix.Rotation(math.radians(45.0), 4, 'X') + +# combine transformations +mat_out = mat_loc * mat_rot * mat_sca +print(mat_out) + +# extract components back out of the matrix +loc, rot, sca = mat_out.decompose() +print(loc, rot, sca) + +# it can also be useful to access components of a matrix directly +mat = mathutils.Matrix() +mat[0][0], mat[1][0], mat[2][0] = 0.0, 1.0, 2.0 + +mat[0][0:3] = 0.0, 1.0, 2.0 + +# each item in a matrix is a vector so vector utility functions can be used +mat[0].xyz = 0.0, 1.0, 2.0 diff --git a/doc/python_api/examples/mathutils.Quaternion.py b/doc/python_api/examples/mathutils.Quaternion.py index bc7702c1d53..d8c696e6ba6 100644 --- a/doc/python_api/examples/mathutils.Quaternion.py +++ b/doc/python_api/examples/mathutils.Quaternion.py @@ -1,3 +1,23 @@ import mathutils +import math -# todo +# a new rotation 90 degrees about the Y axis +quat_a = mathutils.Quaternion((0.7071068, 0.0, 0.7071068, 0.0)) + +# passing values to Quaternion's directly can be confusing so axis, angle +# is supported for initializing too +quat_b = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0)) + +print("Check quaternions match", quat_a == quat_b) + +# like matrices, quaternions can be multiplied to accumulate rotational values +quat_a = mathutils.Quaternion((0.0, 1.0, 0.0), math.radians(90.0)) +quat_b = mathutils.Quaternion((0.0, 0.0, 1.0), math.radians(45.0)) +quat_out = quat_a * quat_b + +# print the quat, euler degrees for mear mortals and (axis, angle) +print("Final Rotation:") +print(quat_out) +print("%.2f, %.2f, %.2f" % tuple(math.degrees(a) for a in quat_out.to_euler())) +print("(%.2f, %.2f, %.2f), %.2f" % (quat_out.axis[:] + + (math.degrees(quat_out.angle), ))) diff --git a/doc/python_api/rst/bge.logic.rst b/doc/python_api/rst/bge.logic.rst index 798491b4710..82e69965840 100644 --- a/doc/python_api/rst/bge.logic.rst +++ b/doc/python_api/rst/bge.logic.rst @@ -106,7 +106,7 @@ There are also methods to access the current :class:`bge.types.KX_Scene` Matricies as used by the game engine are **row major** ``matrix[row][col] = float`` -:class:`bge.types.KX_Camera` has some examples using matricies. +:class:`bge.types.KX_Camera` has some examples using matrices. ********* Variables diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index d24aef56a8b..0e7fccae8df 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -404,7 +404,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): part = context.space_data.pin_id layout.enabled = particle_panel_enabled(context, psys) - + layout.prop(part, "use_dynamic_rotation") if part.use_dynamic_rotation: @@ -433,7 +433,6 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): subsub = sub.column() subsub.active = part.angular_velocity_mode != 'NONE' subsub.prop(part, "angular_velocity_factor", text="") - class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h index f8463bab55f..89733f1623c 100644 --- a/source/blender/blenkernel/BKE_paint.h +++ b/source/blender/blenkernel/BKE_paint.h @@ -84,7 +84,7 @@ typedef struct SculptSession { int modifiers_active; /* object is deformed with some modifiers */ float (*orig_cos)[3]; /* coords of undeformed mesh */ float (*deform_cos)[3]; /* coords of deformed mesh but without stroke displacement */ - float (*deform_imats)[3][3]; /* crazyspace deformation matricies */ + float (*deform_imats)[3][3]; /* crazyspace deformation matrices */ /* Partial redraw */ int partial_redraw; diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 08a3eab55e6..6dbea2c9ab6 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -4351,7 +4351,7 @@ short proxylocked_constraints_owner (Object *ob, bPoseChannel *pchan) * constraints either had one or no targets. It used to be called during the main constraint solving * loop, but is now only used for the remaining cases for a few constraints. * - * None of the actual calculations of the matricies should be done here! Also, this function is + * None of the actual calculations of the matrices should be done here! Also, this function is * not to be used by any new constraints, particularly any that have multiple targets. */ void get_constraint_target_matrix (struct Scene *scene, bConstraint *con, int n, short ownertype, void *ownerdata, float mat[][4], float ctime) diff --git a/source/blender/editors/util/crazyspace.c b/source/blender/editors/util/crazyspace.c index 9560924941d..53ccd37952d 100644 --- a/source/blender/editors/util/crazyspace.c +++ b/source/blender/editors/util/crazyspace.c @@ -384,7 +384,7 @@ void crazyspace_build_sculpt(Scene *scene, Object *ob, float (**deformmats)[3][3 int totleft= sculpt_get_first_deform_matrices(scene, ob, deformmats, deformcos); if(totleft) { - /* there are deformation modifier which doesn't support deformation matricies + /* there are deformation modifier which doesn't support deformation matrices calculation. Need additional crazyspace correction */ float (*deformedVerts)[3]= *deformcos; diff --git a/source/blender/python/mathutils/mathutils_Matrix.c b/source/blender/python/mathutils/mathutils_Matrix.c index b1700aa53c6..7570b5642ef 100644 --- a/source/blender/python/mathutils/mathutils_Matrix.c +++ b/source/blender/python/mathutils/mathutils_Matrix.c @@ -1089,7 +1089,7 @@ static PyObject *Matrix_decompose(MatrixObject *self) PyDoc_STRVAR(Matrix_lerp_doc, ".. function:: lerp(other, factor)\n" "\n" -" Returns the interpolation of two matricies.\n" +" Returns the interpolation of two matrices.\n" "\n" " :arg other: value to interpolate with.\n" " :type other: :class:`Matrix`\n" @@ -1669,7 +1669,7 @@ static PyObject *Matrix_subscript(MatrixObject* self, PyObject* item) } else { PyErr_SetString(PyExc_IndexError, - "slice steps not supported with matricies"); + "slice steps not supported with matrices"); return NULL; } } @@ -1701,7 +1701,7 @@ static int Matrix_ass_subscript(MatrixObject* self, PyObject* item, PyObject* va return Matrix_ass_slice(self, start, stop, value); else { PyErr_SetString(PyExc_IndexError, - "slice steps not supported with matricies"); + "slice steps not supported with matrices"); return -1; } } From 61389bba41857ec468b5844e3fd9f713b4d9c4a5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 06:39:13 +0000 Subject: [PATCH 042/119] fix spelling mistakes in comments (and in some python error messages), nothing to effect translations. --- CMakeLists.txt | 2 +- intern/ghost/intern/GHOST_SystemSDL.h | 2 +- intern/ghost/intern/GHOST_WindowSDL.h | 2 +- source/blender/blenkernel/BKE_animsys.h | 2 +- source/blender/blenkernel/BKE_utildefines.h | 2 +- source/blender/blenkernel/intern/cloth.c | 2 +- source/blender/blenkernel/intern/fcurve.c | 2 +- source/blender/blenkernel/intern/seqeffects.c | 2 +- source/blender/blenkernel/intern/softbody.c | 4 ++-- source/blender/blenlib/intern/path_util.c | 2 +- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/editors/animation/anim_channels_edit.c | 2 +- source/blender/editors/include/ED_anim_api.h | 2 +- source/blender/editors/mesh/editmesh_lib.c | 6 +++--- source/blender/editors/mesh/meshtools.c | 2 +- source/blender/editors/physics/particle_edit.c | 2 +- source/blender/editors/sculpt_paint/paint_image.c | 2 +- source/blender/editors/space_outliner/outliner_edit.c | 2 +- source/blender/editors/space_sequencer/sequencer_select.c | 2 +- source/blender/editors/space_view3d/view3d_edit.c | 2 +- source/blender/editors/space_view3d/view3d_fly.c | 4 ++-- source/blender/imbuf/intern/IMB_indexer.h | 2 +- source/blender/makesrna/intern/rna_image_api.c | 2 +- source/blender/modifiers/intern/MOD_screw.c | 2 +- source/blender/modifiers/intern/MOD_simpledeform.c | 4 ++-- source/blender/python/intern/bpy_props.c | 2 +- source/blender/python/intern/bpy_rna.c | 4 ++-- source/blender/python/intern/bpy_rna.h | 2 +- source/blender/python/mathutils/mathutils_Euler.c | 2 +- source/blender/render/intern/include/raycounter.h | 2 +- source/blender/render/intern/raytrace/bvh.h | 2 +- source/blender/windowmanager/intern/wm_operators.c | 4 ++-- source/gameengine/Converter/BL_ArmatureObject.cpp | 2 +- source/gameengine/Expressions/ConstExpr.cpp | 2 +- .../gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp | 2 +- 35 files changed, 42 insertions(+), 42 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 405c8850504..6cfda3a01e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -774,7 +774,7 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") else() - # keep GCC spesific stuff here + # keep GCC specific stuff here if(CMAKE_COMPILER_IS_GNUCC) set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32") set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing") diff --git a/intern/ghost/intern/GHOST_SystemSDL.h b/intern/ghost/intern/GHOST_SystemSDL.h index 87d288117c5..d70bec610d6 100644 --- a/intern/ghost/intern/GHOST_SystemSDL.h +++ b/intern/ghost/intern/GHOST_SystemSDL.h @@ -110,7 +110,7 @@ private: const GHOST_TEmbedderWindowID parentWindow ); - /* SDL spesific */ + /* SDL specific */ GHOST_WindowSDL * findGhostWindow(SDL_Window *sdl_win); bool diff --git a/intern/ghost/intern/GHOST_WindowSDL.h b/intern/ghost/intern/GHOST_WindowSDL.h index 6b016b85126..62e1a71227f 100644 --- a/intern/ghost/intern/GHOST_WindowSDL.h +++ b/intern/ghost/intern/GHOST_WindowSDL.h @@ -70,7 +70,7 @@ public: ~GHOST_WindowSDL(); - /* SDL spesific */ + /* SDL specific */ SDL_Window * getSDLWindow() { diff --git a/source/blender/blenkernel/BKE_animsys.h b/source/blender/blenkernel/BKE_animsys.h index bf619d76e68..cf49c479fe3 100644 --- a/source/blender/blenkernel/BKE_animsys.h +++ b/source/blender/blenkernel/BKE_animsys.h @@ -146,7 +146,7 @@ void BKE_animsys_evaluate_animdata(struct Scene *scene, struct ID *id, struct An void BKE_animsys_evaluate_all_animation(struct Main *main, struct Scene *scene, float ctime); -/* ------------ Specialised API --------------- */ +/* ------------ Specialized API --------------- */ /* There are a few special tools which require these following functions. They are NOT to be used * for standard animation evaluation UNDER ANY CIRCUMSTANCES! * diff --git a/source/blender/blenkernel/BKE_utildefines.h b/source/blender/blenkernel/BKE_utildefines.h index 87684e4895d..f65b937a54b 100644 --- a/source/blender/blenkernel/BKE_utildefines.h +++ b/source/blender/blenkernel/BKE_utildefines.h @@ -29,7 +29,7 @@ /** \file BKE_utildefines.h * \ingroup bke - * \brief blender format spesific macros + * \brief blender format specific macros * \note generic defines should go in BLI_utildefines.h */ diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 1ec573c853a..260b51bc321 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -974,7 +974,7 @@ static void cloth_from_mesh ( ClothModifierData *clmd, DerivedMesh *dm ) * SPRING NETWORK BUILDING IMPLEMENTATION BEGIN ***************************************************************************************/ -// be carefull: implicit solver has to be resettet when using this one! +// be careful: implicit solver has to be resettet when using this one! // --> only for implicit handling of this spring! int cloth_add_spring ( ClothModifierData *clmd, unsigned int indexA, unsigned int indexB, float restlength, int spring_type) { diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index e2326b005c1..0303f580e67 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -705,7 +705,7 @@ void bezt_add_to_cfra_elem (ListBase *lb, BezTriple *bezt) /* ***************************** Samples Utilities ******************************* */ /* Some utilities for working with FPoints (i.e. 'sampled' animation curve data, such as - * data imported from BVH/Mocap files), which are specialised for use with high density datasets, + * data imported from BVH/Mocap files), which are specialized for use with high density datasets, * which BezTriples/Keyframe data are ill equipped to do. */ diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c index d8d6ed6ea6d..943066537d5 100644 --- a/source/blender/blenkernel/intern/seqeffects.c +++ b/source/blender/blenkernel/intern/seqeffects.c @@ -827,7 +827,7 @@ static void do_cross_effect_float(float facf0, float facf1, int x, int y, } } -/* carefull: also used by speed effect! */ +/* careful: also used by speed effect! */ static struct ImBuf* do_cross_effect( SeqRenderData context, Sequence *UNUSED(seq), float UNUSED(cfra), diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 88f72c33802..65b4a21d0ee 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -2818,7 +2818,7 @@ static void softbody_calc_forces(Scene *scene, Object *ob, float forcetime, floa if (ob->softflag & OB_SB_FACECOLL) scan_for_ext_face_forces(ob,timenow); /* finish matrix and solve */ -#if (0) // remove onl linking for now .. still i am not sure .. the jacobian can be usefull .. so keep that BM +#if (0) // remove onl linking for now .. still i am not sure .. the jacobian can be useful .. so keep that BM if(nl_flags & NLF_SOLVE){ //double sct,sst=PIL_check_seconds_timer(); for(a=sb->totpoint, bp= sb->bpoint; a>0; a--, bp++) { @@ -3540,7 +3540,7 @@ static void lattice_to_softbody(Scene *scene, Object *ob) } } - /* create some helper edges to enable SB lattice to be usefull at all */ + /* create some helper edges to enable SB lattice to be useful at all */ if (ob->softflag & OB_SB_EDGES){ makelatticesprings(lt,ob->soft->bspring,ob->softflag & OB_SB_QUADS,ob); build_bps_springlist(ob); /* link bps to springs */ diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index fe1d869f898..21f91ce8f14 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1681,7 +1681,7 @@ void BLI_where_am_i(char *fullname, const size_t maxlen, const char *name) #ifdef WITH_BINRELOC - /* linux uses binreloc since argv[0] is not relyable, call br_init( NULL ) first */ + /* linux uses binreloc since argv[0] is not reliable, call br_init( NULL ) first */ path = br_find_exe( NULL ); if (path) { BLI_strncpy(fullname, path, maxlen); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 84b9021d080..dfaf96a6066 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -13303,7 +13303,7 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, const if( ob->id.flag & LIB_INDIRECT ) { /* IF below is quite confusing! - if we are appending, but this object wasnt just added allong with a group, + if we are appending, but this object wasnt just added along with a group, then this is already used indirectly in the scene somewhere else and we didnt just append it. (ob->id.flag & LIB_PRE_EXISTING)==0 means that this is a newly appended object - Campbell */ diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 7f05a7c2b1a..b4a86e5d74c 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -2447,7 +2447,7 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_disable", WKEY, KM_PRESS, KM_ALT, 0); - /* settings - specialised hotkeys */ + /* settings - specialized hotkeys */ WM_keymap_add_item(keymap, "ANIM_OT_channels_editable_toggle", TABKEY, KM_PRESS, 0, 0); /* expand/collapse */ diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 3c810f7da2d..0ac5a9e46ce 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -123,7 +123,7 @@ typedef struct bAnimListElem { /* Some types for easier type-testing - * NOTE: need to keep the order of these synchronised with the channels define code + * NOTE: need to keep the order of these synchronized with the channels define code * which is used for drawing and handling channel lists for */ typedef enum eAnim_ChannelType { diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index 02b5250f67a..8945cac428b 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -337,7 +337,7 @@ void EM_editselection_normal(float *normal, EditSelection *ese) } /* Calculate a plane that is rightangles to the edge/vert/faces normal -also make the plane run allong an axis that is related to the geometry, +also make the plane run along an axis that is related to the geometry, because this is used for the manipulators Y axis.*/ void EM_editselection_plane(float *plane, EditSelection *ese) { @@ -345,7 +345,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese) EditVert *eve= ese->data; float vec[3]={0,0,0}; - if (ese->prev) { /*use previously selected data to make a usefull vertex plane */ + if (ese->prev) { /*use previously selected data to make a useful vertex plane */ EM_editselection_center(vec, ese->prev); sub_v3_v3v3(plane, vec, eve->co); } else { @@ -361,7 +361,7 @@ void EM_editselection_plane(float *plane, EditSelection *ese) } else if (ese->type==EDITEDGE) { EditEdge *eed= ese->data; - /*the plane is simple, it runs allong the edge + /*the plane is simple, it runs along the edge however selecting different edges can swap the direction of the y axis. this makes it less likely for the y axis of the manipulator (running along the edge).. to flip less often. diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 526bf177ab7..e6836d7d5aa 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -957,7 +957,7 @@ long mesh_mirrtopo_table(Object *ob, char mode) } } else { for(a=0, medge=me->medge; atotedge; a++, medge++) { - /* This can make realy big numbers, wrapping around here is fine */ + /* This can make really big numbers, wrapping around here is fine */ MirrTopoHash[medge->v1] += MirrTopoHash_Prev[medge->v2]; MirrTopoHash[medge->v2] += MirrTopoHash_Prev[medge->v1]; } diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 019d6df9b73..740fd5137de 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -2970,7 +2970,7 @@ static void brush_puff(PEData *data, int point_index) VECSUB(dco, lastco, co); mul_mat3_m4_v3(imat, dco); /* into particle space */ - /* move the point allong a vector perpendicular to the + /* move the point along a vector perpendicular to the * hairs direction, reduces odd kinks, */ cross_v3_v3v3(c1, ofs, dco); cross_v3_v3v3(c2, c1, dco); diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 9842bc0e1ee..c5af8971907 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -3387,7 +3387,7 @@ static void project_paint_end(ProjPaintState *ps) } /* This is a BIT ODD, but overwrite the undo tiles image info with this pixels original color - * because allocating the tiles allong the way slows down painting */ + * because allocating the tiles along the way slows down painting */ if (is_float) { float *rgba_fp = (float *)tilerect + (((projPixel->x_px - x_round) + (projPixel->y_px - y_round) * IMAPAINT_TILE_SIZE)) * 4; diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c index 6bfe370d105..1d1abf80fe4 100644 --- a/source/blender/editors/space_outliner/outliner_edit.c +++ b/source/blender/editors/space_outliner/outliner_edit.c @@ -947,7 +947,7 @@ void OUTLINER_OT_show_hierarchy(wmOperatorType *ot) /* ANIMATO OPERATIONS */ /* KeyingSet and Driver Creation - Helper functions */ -/* specialised poll callback for these operators to work in Datablocks view only */ +/* specialized poll callback for these operators to work in Datablocks view only */ static int ed_operator_outliner_datablocks_active(bContext *C) { ScrArea *sa= CTX_wm_area(C); diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 7e718dc176a..53a520a355d 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -530,7 +530,7 @@ void SEQUENCER_OT_select(wmOperatorType *ot) -/* run recursivly to select linked */ +/* run recursively to select linked */ static int select_more_less_seq__internal(Scene *scene, int sel, int linked) { Editing *ed= seq_give_editing(scene, FALSE); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 0854f9f3685..115b3756029 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -450,7 +450,7 @@ static void viewops_data_create(bContext *C, wmOperator *op, wmEvent *event) sub_v3_v3v3(my_pivot, rv3d->ofs, upvec); negate_v3(my_pivot); /* ofs is flipped */ - /* find a new ofs value that is allong the view axis (rather than the mouse location) */ + /* find a new ofs value that is along the view axis (rather than the mouse location) */ closest_to_line_v3(dvec, vod->dyn_ofs, my_pivot, my_origin); vod->dist0 = rv3d->dist = len_v3v3(my_pivot, dvec); diff --git a/source/blender/editors/space_view3d/view3d_fly.c b/source/blender/editors/space_view3d/view3d_fly.c index 02a6cee5140..b66440738b2 100644 --- a/source/blender/editors/space_view3d/view3d_fly.c +++ b/source/blender/editors/space_view3d/view3d_fly.c @@ -179,7 +179,7 @@ typedef struct FlyInfo { /* fly state state */ float speed; /* the speed the view is moving per redraw */ - short axis; /* Axis index to move allong by default Z to move allong the view */ + short axis; /* Axis index to move along by default Z to move along the view */ short pan_view; /* when true, pan the view instead of rotating */ /* relative view axis locking - xlock, zlock @@ -725,7 +725,7 @@ static int flyApply(bContext *C, FlyInfo *fly) RegionView3D *rv3d= fly->rv3d; ARegion *ar = fly->ar; - float mat[3][3], /* 3x3 copy of the view matrix so we can move allong the view axis */ + float mat[3][3], /* 3x3 copy of the view matrix so we can move along the view axis */ dvec[3]={0,0,0}, /* this is the direction thast added to the view offset per redraw */ /* Camera Uprighting variables */ diff --git a/source/blender/imbuf/intern/IMB_indexer.h b/source/blender/imbuf/intern/IMB_indexer.h index bd5a455df98..08fa51966f2 100644 --- a/source/blender/imbuf/intern/IMB_indexer.h +++ b/source/blender/imbuf/intern/IMB_indexer.h @@ -37,7 +37,7 @@ #include "IMB_anim.h" /* - seperate animation index files to solve the following problems: + separate animation index files to solve the following problems: a) different timecodes within one file (like DTS/PTS, Timecode-Track, "implicit" timecodes within DV-files and HDV-files etc.) diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c index 50ce816d7a1..473278440e6 100644 --- a/source/blender/makesrna/intern/rna_image_api.c +++ b/source/blender/makesrna/intern/rna_image_api.c @@ -157,7 +157,7 @@ static void rna_Image_unpack(Image *image, ReportList *reports, int method) return; } else { - /* reports its own error on failier */ + /* reports its own error on failure */ unpackImage (reports, image, method); } } diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c index 486c98f82a0..663faf0ed19 100644 --- a/source/blender/modifiers/intern/MOD_screw.c +++ b/source/blender/modifiers/intern/MOD_screw.c @@ -357,7 +357,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, if (!totedge) { for (i=0; i < totvert; i++, mv_orig++, mv_new++) { copy_v3_v3(mv_new->co, mv_orig->co); - normalize_v3_v3(vc->no, mv_new->co); /* no edges- this is realy a dummy normal */ + normalize_v3_v3(vc->no, mv_new->co); /* no edges- this is really a dummy normal */ } } else { diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c index b2e3c9532b6..7c852527c3d 100644 --- a/source/blender/modifiers/intern/MOD_simpledeform.c +++ b/source/blender/modifiers/intern/MOD_simpledeform.c @@ -326,7 +326,7 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *dm = derivedData; CustomDataMask dataMask = requiredDataMask(ob, md); - /* we implement requiredDataMask but thats not really usefull since + /* we implement requiredDataMask but thats not really useful since mesh_calc_modifiers pass a NULL derivedData */ if(dataMask) dm= get_dm(ob, NULL, dm, NULL, 0); @@ -346,7 +346,7 @@ static void deformVertsEM(ModifierData *md, Object *ob, DerivedMesh *dm = derivedData; CustomDataMask dataMask = requiredDataMask(ob, md); - /* we implement requiredDataMask but thats not really usefull since + /* we implement requiredDataMask but thats not really useful since mesh_calc_modifiers pass a NULL derivedData */ if(dataMask) dm= get_dm(ob, editData, dm, NULL, 0); diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c index d3963458298..5a78ac8e094 100644 --- a/source/blender/python/intern/bpy_props.c +++ b/source/blender/python/intern/bpy_props.c @@ -359,7 +359,7 @@ static int bpy_struct_id_used(StructRNA *srna, char *identifier) #endif -/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna allong +/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna along * This isnt incorrect since its a python object - but be careful */ PyDoc_STRVAR(BPy_BoolProperty_doc, ".. function:: BoolProperty(name=\"\", description=\"\", default=False, options={'ANIMATABLE'}, subtype='NONE', update=None)\n" diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 76dcf9729ca..e52df8f9320 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -2218,7 +2218,7 @@ static PyObject *pyrna_prop_collection_subscript(BPy_PropertyRNA *self, PyObject } /* generic check to see if a PyObject is compatible with a collection - * -1 on failier, 0 on success, sets the error */ + * -1 on failure, 0 on success, sets the error */ static int pyrna_prop_collection_type_check(BPy_PropertyRNA *self, PyObject *value) { StructRNA *prop_srna; @@ -3800,7 +3800,7 @@ PyDoc_STRVAR(pyrna_struct_get_doc, " Returns the value of the custom property assigned to key or default\n" " when not found (matches pythons dictionary function of the same name).\n" "\n" -" :arg key: The key assosiated with the custom property.\n" +" :arg key: The key associated with the custom property.\n" " :type key: string\n" " :arg default: Optional argument for the value to return if\n" " *key* is not found.\n" diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index 502fa25c872..98afad38abe 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -149,7 +149,7 @@ typedef struct { PyObject *in_weakreflist; #endif - /* collection iterator spesific parts */ + /* collection iterator specific parts */ CollectionPropertyIterator iter; } BPy_PropertyCollectionIterRNA; diff --git a/source/blender/python/mathutils/mathutils_Euler.c b/source/blender/python/mathutils/mathutils_Euler.c index d9f741d841a..c6be461a227 100644 --- a/source/blender/python/mathutils/mathutils_Euler.c +++ b/source/blender/python/mathutils/mathutils_Euler.c @@ -75,7 +75,7 @@ static PyObject *Euler_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return newEulerObject(eul, order, Py_NEW, type); } -/* internal use, assuem read callback is done */ +/* internal use, assume read callback is done */ static const char *euler_order_str(EulerObject *self) { static const char order[][4] = {"XYZ", "XZY", "YXZ", "YZX", "ZXY", "ZYX"}; diff --git a/source/blender/render/intern/include/raycounter.h b/source/blender/render/intern/include/raycounter.h index 4d4952cb6c3..7acef6d3c67 100644 --- a/source/blender/render/intern/include/raycounter.h +++ b/source/blender/render/intern/include/raycounter.h @@ -35,7 +35,7 @@ #ifndef RE_RAYCOUNTER_H #define RE_RAYCOUNTER_H -//#define RE_RAYCOUNTER /* enable counters per ray, usefull for measuring raytrace structures performance */ +//#define RE_RAYCOUNTER /* enable counters per ray, useful for measuring raytrace structures performance */ #ifdef __cplusplus extern "C" { diff --git a/source/blender/render/intern/raytrace/bvh.h b/source/blender/render/intern/raytrace/bvh.h index 3ba5bbc624e..c7a1b002d61 100644 --- a/source/blender/render/intern/raytrace/bvh.h +++ b/source/blender/render/intern/raytrace/bvh.h @@ -167,7 +167,7 @@ static inline void bvh_node_merge_bb(Node *node, float *min, float *max) /* - * recursivly transverse a BVH looking for a rayhit using a local stack + * recursively transverse a BVH looking for a rayhit using a local stack */ template static inline void bvh_node_push_childs(Node *node, Isect *isec, Node **stack, int &stack_pos); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 07bab06e52f..b0183d05ac2 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -3586,8 +3586,8 @@ static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_SHIFT, 0, GESTURE_MODAL_DESELECT); WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_SHIFT, 0, GESTURE_MODAL_NOP); #else - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // defailt 2.4x - WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); // defailt 2.4x + WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // default 2.4x + WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); // default 2.4x #endif WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp index c5bf28b9b8d..43c9bd434c5 100644 --- a/source/gameengine/Converter/BL_ArmatureObject.cpp +++ b/source/gameengine/Converter/BL_ArmatureObject.cpp @@ -663,7 +663,7 @@ KX_PYMETHODDEF_DOC_NOARGS(BL_ArmatureObject, update, "update()\n" "Make sure that the armature will be updated on next graphic frame.\n" "This is automatically done if a KX_ArmatureActuator with mode run is active\n" - "or if an action is playing. This function is usefull in other cases.\n") + "or if an action is playing. This function is useful in other cases.\n") { SetActiveAction(NULL, 0, KX_GetActiveEngine()->GetFrameTime()); Py_RETURN_NONE; diff --git a/source/gameengine/Expressions/ConstExpr.cpp b/source/gameengine/Expressions/ConstExpr.cpp index 8d5a47b2d0d..c41cf5a54f5 100644 --- a/source/gameengine/Expressions/ConstExpr.cpp +++ b/source/gameengine/Expressions/ConstExpr.cpp @@ -99,7 +99,7 @@ bool CConstExpr::NeedsRecalculated() CExpression* CConstExpr::CheckLink(std::vector& brokenlinks) { -// parent checks if child is still usefull. +// parent checks if child is still useful. // When for example it's value it's deleted flag set // then release Value, and return NULL in case of constexpression // else return this... diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp index a795a4eddc6..7e496136ce2 100644 --- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp +++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp @@ -146,7 +146,7 @@ bool KX_NetworkMessageSensor::Evaluate() // Return always true if a message was received otherwise we can loose messages if (m_IsUp) return true; - // Is it usefull to return also true when the first frame without a message?? + // Is it useful to return also true when the first frame without a message?? // This will cause a fast on/off cycle that seems useless! return result; } From fda20451502fea888019ce0d8b044b5dbecab491 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 06:58:07 +0000 Subject: [PATCH 043/119] correct spelling errors in comments --- release/scripts/modules/addon_utils.py | 10 +-- release/scripts/modules/animsys_refactor.py | 2 +- release/scripts/modules/blend_render_info.py | 2 +- release/scripts/modules/bpy/__init__.py | 2 +- release/scripts/modules/bpy/ops.py | 2 +- release/scripts/modules/bpy/utils.py | 8 +- .../scripts/modules/bpy_extras/anim_utils.py | 2 +- .../scripts/modules/bpy_extras/image_utils.py | 6 +- .../scripts/modules/bpy_extras/io_utils.py | 10 +-- .../modules/bpy_extras/keyconfig_utils.py | 2 +- .../scripts/modules/bpy_extras/mesh_utils.py | 2 +- .../modules/bpy_extras/object_utils.py | 2 +- .../modules/bpy_extras/view3d_utils.py | 2 +- release/scripts/modules/bpy_types.py | 18 ++-- release/scripts/modules/console_python.py | 26 +++--- release/scripts/modules/console_shell.py | 2 +- release/scripts/modules/rna_info.py | 6 +- release/scripts/startup/bl_operators/anim.py | 2 +- .../scripts/startup/bl_operators/console.py | 4 +- .../scripts/startup/bl_operators/object.py | 8 +- .../bl_operators/uvcalc_follow_active.py | 12 +-- .../startup/bl_operators/uvcalc_lightmap.py | 26 +++--- .../bl_operators/uvcalc_smart_project.py | 88 +++++++++---------- .../startup/bl_operators/vertexpaint_dirt.py | 4 +- .../scripts/startup/bl_operators/view3d.py | 4 +- release/scripts/startup/bl_operators/wm.py | 27 +++--- .../startup/bl_ui/properties_animviz.py | 4 +- .../startup/bl_ui/properties_data_armature.py | 6 +- .../startup/bl_ui/properties_data_bone.py | 2 +- .../startup/bl_ui/properties_material.py | 22 ++--- .../bl_ui/properties_object_constraint.py | 2 +- .../bl_ui/properties_physics_common.py | 2 +- .../startup/bl_ui/properties_texture.py | 12 +-- release/scripts/startup/bl_ui/space_logic.py | 2 +- .../scripts/startup/bl_ui/space_userpref.py | 4 +- .../startup/bl_ui/space_userpref_keymap.py | 6 +- release/scripts/startup/bl_ui/space_view3d.py | 8 +- .../startup/bl_ui/space_view3d_toolbar.py | 12 +-- release/scripts/templates/gamelogic_module.py | 2 +- 39 files changed, 181 insertions(+), 182 deletions(-) diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index ef9a4615ff2..26611fb93ad 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -165,7 +165,7 @@ def modules(module_cache): if mod: module_cache[mod_name] = mod - # just incase we get stale modules, not likely + # just in case we get stale modules, not likely for mod_stale in modules_stale: del module_cache[mod_stale] del modules_stale @@ -209,7 +209,7 @@ def enable(module_name, default_set=True): :arg module_name: The name of the addon and module. :type module_name: string - :return: the loaded module or None on failier. + :return: the loaded module or None on failure. :rtype: module """ @@ -262,7 +262,7 @@ def enable(module_name, default_set=True): # * OK loaded successfully! * if default_set: - # just incase its enabled alredy + # just in case its enabled already ext = _bpy.context.user_preferences.addons.get(module_name) if not ext: ext = _bpy.context.user_preferences.addons.new() @@ -286,7 +286,7 @@ def disable(module_name, default_set=True): import sys mod = sys.modules.get(module_name) - # possible this addon is from a previous session and didnt load a + # possible this addon is from a previous session and didn't load a # module this time. So even if the module is not found, still disable # the addon in the user prefs. if mod: @@ -300,7 +300,7 @@ def disable(module_name, default_set=True): else: print("addon_utils.disable", module_name, "not loaded") - # could be in more then once, unlikely but better do this just incase. + # could be in more then once, unlikely but better do this just in case. addons = _bpy.context.user_preferences.addons if default_set: diff --git a/release/scripts/modules/animsys_refactor.py b/release/scripts/modules/animsys_refactor.py index 88097ed3d28..64110b0f620 100644 --- a/release/scripts/modules/animsys_refactor.py +++ b/release/scripts/modules/animsys_refactor.py @@ -73,7 +73,7 @@ class DataPathBuilder(object): try: print("base." + item_new) base_new = eval("base." + item_new) - break # found, dont keep looking + break # found, don't keep looking except: pass diff --git a/release/scripts/modules/blend_render_info.py b/release/scripts/modules/blend_render_info.py index 43820e82340..7c30b480d6b 100755 --- a/release/scripts/modules/blend_render_info.py +++ b/release/scripts/modules/blend_render_info.py @@ -69,7 +69,7 @@ def read_blend_rend_chunk(path): struct.unpack('>i' if is_big_endian else '= 3600.0: # hours hours = int(time / 3600.0) time = time % 3600.0 - if time >= 60.0: # mins + if time >= 60.0: # minutes minutes = int(time / 60.0) time = time % 60.0 diff --git a/release/scripts/modules/bpy_extras/anim_utils.py b/release/scripts/modules/bpy_extras/anim_utils.py index 9848586a144..6b0ab1c3adc 100644 --- a/release/scripts/modules/bpy_extras/anim_utils.py +++ b/release/scripts/modules/bpy_extras/anim_utils.py @@ -158,7 +158,7 @@ def bake_action(frame_start, # ------------------------------------------------------------------------- # Create action - # incase animation data hassnt been created + # in case animation data hassnt been created atd = obj.animation_data_create() if action is None: action = bpy.data.actions.new("Action") diff --git a/release/scripts/modules/bpy_extras/image_utils.py b/release/scripts/modules/bpy_extras/image_utils.py index 02959fae534..52050b08bc7 100644 --- a/release/scripts/modules/bpy_extras/image_utils.py +++ b/release/scripts/modules/bpy_extras/image_utils.py @@ -43,10 +43,10 @@ def load_image(imagepath, the end will be ignored. :type dirname: string :arg place_holder: if True a new place holder image will be created. - this is usefull so later you can relink the image to its original data. + this is useful so later you can relink the image to its original data. :type place_holder: bool - :arg recursive: If True, directories will be recursivly searched. - Be carefull with this if you have files in your root directory because + :arg recursive: If True, directories will be recursively searched. + Be careful with this if you have files in your root directory because it may take a long time. :type recursive: bool :arg ncase_cmp: on non windows systems, find the correct case for the file. diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index 5d28ceaa34c..3d71feaf79e 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -114,7 +114,7 @@ class ImportHelper: # Axis conversion function, not pretty LUT -# use lookup tabes to convert between any axis +# use lookup table to convert between any axis _axis_convert_matrix = ( ((-1.0, 0.0, 0.0), (0.0, -1.0, 0.0), (0.0, 0.0, 1.0)), ((-1.0, 0.0, 0.0), (0.0, 0.0, -1.0), (0.0, -1.0, 0.0)), @@ -302,7 +302,7 @@ def free_derived_objects(ob): def unpack_list(list_of_tuples): flat_list = [] - flat_list_extend = flat_list.extend # a tich faster + flat_list_extend = flat_list.extend # a tiny bit faster for t in list_of_tuples: flat_list_extend(t) return flat_list @@ -318,7 +318,7 @@ def unpack_face_list(list_of_tuples): if len(t) == 3: if t[2] == 0: t = t[1], t[2], t[0] - else: # assuem quad + else: # assume quad if t[3] == 0 or t[2] == 0: t = t[2], t[3], t[0], t[1] @@ -371,7 +371,7 @@ def path_reference(filepath, :arg copy_subdir: the subdirectory of *base_dst* to use when mode='COPY'. :type copy_subdir: string :arg copy_set: collect from/to pairs when mode='COPY', - pass to *path_reference_copy* when exportign is done. + pass to *path_reference_copy* when exporting is done. :type copy_set: set :arg library: The library this path is relative to. :type library: :class:`bpy.types.Library` or None @@ -450,7 +450,7 @@ def unique_name(key, name, name_dict, name_max=-1, clean_func=None, sep="."): :arg key: unique item this name belongs to, name_dict[key] will be reused when available. This can be the object, mesh, material, etc instance its self. - :type key: any hashable object assosiated with the *name*. + :type key: any hashable object associated with the *name*. :arg name: The name used to create a unique value in *name_dict*. :type name: string :arg name_dict: This is used to cache namespace to ensure no collisions diff --git a/release/scripts/modules/bpy_extras/keyconfig_utils.py b/release/scripts/modules/bpy_extras/keyconfig_utils.py index 78f010245a0..6eb19c0ff05 100644 --- a/release/scripts/modules/bpy_extras/keyconfig_utils.py +++ b/release/scripts/modules/bpy_extras/keyconfig_utils.py @@ -21,7 +21,7 @@ KM_HIERARCHY = [ ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit ('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot - ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners + ('Screen Editing', 'EMPTY', 'WINDOW', []), # re-sizing, action corners ]), ('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region) diff --git a/release/scripts/modules/bpy_extras/mesh_utils.py b/release/scripts/modules/bpy_extras/mesh_utils.py index 7bc6dae3cc6..8149675000f 100644 --- a/release/scripts/modules/bpy_extras/mesh_utils.py +++ b/release/scripts/modules/bpy_extras/mesh_utils.py @@ -50,7 +50,7 @@ def mesh_linked_faces(mesh): face_groups = [[f] for f in mesh.faces] face_mapping = list(range(len(mesh.faces))) # map old, new face location - # Now clump faces iterativly + # Now clump faces iteratively ok = True while ok: ok = False diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py index 3081e6f172e..c9c1dc05476 100644 --- a/release/scripts/modules/bpy_extras/object_utils.py +++ b/release/scripts/modules/bpy_extras/object_utils.py @@ -119,7 +119,7 @@ def object_data_add(context, obdata, operator=None): obj_act = scene.objects.active # XXX - # caused because entering editmodedoes not add a empty undo slot! + # caused because entering edit-mode does not add a empty undo slot! if context.user_preferences.edit.use_enter_edit_mode: if not (obj_act and obj_act.mode == 'EDIT' and diff --git a/release/scripts/modules/bpy_extras/view3d_utils.py b/release/scripts/modules/bpy_extras/view3d_utils.py index c18a74bbb09..32f7b654690 100644 --- a/release/scripts/modules/bpy_extras/view3d_utils.py +++ b/release/scripts/modules/bpy_extras/view3d_utils.py @@ -27,7 +27,7 @@ __all__ = ( def region_2d_to_vector_3d(region, rv3d, coord): """ - Return a direction vector from the viewport at the spesific 2d region + Return a direction vector from the viewport at the specific 2d region coordinate. :arg region: region of the 3D viewport, typically bpy.context.region. diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 6b65f720a5c..cee0712e814 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -49,7 +49,7 @@ class Library(bpy_types.ID): @property def users_id(self): - """ID datablocks which use this library""" + """ID data blocks which use this library""" import bpy # See: readblenentry.c, IDTYPE_FLAGS_ISLINKABLE, we could make this an attribute in rna. @@ -220,9 +220,9 @@ class _GenericBone: @property def children_recursive_basename(self): """ - Returns a chain of children with the same base name as this bone - Only direct chains are supported, forks caused by multiple children with matching basenames will - terminate the function and not be returned. + Returns a chain of children with the same base name as this bone. + Only direct chains are supported, forks caused by multiple children + with matching base names will terminate the function and not be returned. """ basename = self.basename chain = [] @@ -256,7 +256,7 @@ class _GenericBone: bones = id_data.pose.bones elif id_data_type == bpy_types.Armature: bones = id_data.edit_bones - if not bones: # not in editmode + if not bones: # not in edit mode bones = id_data.bones return bones @@ -284,11 +284,11 @@ class EditBone(StructRNA, _GenericBone, metaclass=StructMetaPropGroup): def transform(self, matrix, scale=True, roll=True): """ - Transform the the bones head, tail, roll and envalope (when the matrix has a scale component). + Transform the the bones head, tail, roll and envelope (when the matrix has a scale component). :arg matrix: 3x3 or 4x4 transformation matrix. :type matrix: :class:`mathutils.Matrix` - :arg scale: Scale the bone envalope by the matrix. + :arg scale: Scale the bone envelope by the matrix. :type scale: bool :arg roll: Correct the roll to point in the same relative direction to the head and tail. :type roll: bool @@ -318,7 +318,7 @@ class Mesh(bpy_types.ID): def from_pydata(self, vertices, edges, faces): """ - Make a mesh from a list of verts/edges/faces + Make a mesh from a list of vertices/edges/faces Until we have a nicer way to make geometry, use this. :arg vertices: float triplets each representing (X, Y, Z) eg: [(0.0, 1.0, 0.5), ...]. @@ -553,7 +553,7 @@ class _GenericUI: operator_context_default = self.layout.operator_context for func in draw_ls._draw_funcs: - # so bad menu functions dont stop the entire menu from drawing. + # so bad menu functions don't stop the entire menu from drawing try: func(self, context) except: diff --git a/release/scripts/modules/console_python.py b/release/scripts/modules/console_python.py index 94d0c8c8614..f11ccf84f0b 100644 --- a/release/scripts/modules/console_python.py +++ b/release/scripts/modules/console_python.py @@ -50,7 +50,7 @@ def replace_help(namespace): def get_console(console_id): ''' helper function for console operators - currently each text datablock gets its own + currently each text data block gets its own console - code.InteractiveConsole() ...which is stored in this function. @@ -65,7 +65,7 @@ def get_console(console_id): consoles = get_console.consoles = {} get_console.consoles_namespace_hash = hash_next else: - # check if clearning the namespace is needed to avoid a memory leak. + # check if clearing the namespace is needed to avoid a memory leak. # the window manager is normally loaded with new blend files # so this is a reasonable way to deal with namespace clearing. # bpy.data hashing is reset by undo so cant be used. @@ -135,7 +135,7 @@ def execute(context): sys.stdout = stdout sys.stderr = stderr - # dont allow the stdin to be used, can lock blender. + # don't allow the stdin to be used, can lock blender. stdin_backup = sys.stdin sys.stdin = None @@ -143,14 +143,14 @@ def execute(context): main_mod_back = sys.modules["__main__"] sys.modules["__main__"] = console._bpy_main_mod - # incase exception happens - line = "" # incase of encodingf error + # in case exception happens + line = "" # in case of encoding error is_multiline = False try: line = line_object.body - # run the console, "\n" executes a multiline statement + # run the console, "\n" executes a multi line statement line_exec = line if line.strip() else "\n" is_multiline = console.push(line_exec) @@ -222,8 +222,8 @@ def autocomplete(context): if not console: return {'CANCELLED'} - # dont allow the stdin to be used, can lock blender. - # note: unlikely stdin would be used for autocomp. but its possible. + # don't allow the stdin to be used, can lock blender. + # note: unlikely stdin would be used for autocomplete. but its possible. stdin_backup = sys.stdin sys.stdin = None @@ -238,8 +238,8 @@ def autocomplete(context): current_line = sc.history[-1] line = current_line.body - # This function isnt aware of the text editor or being an operator - # just does the autocomp then copy its results back + # This function isn't aware of the text editor or being an operator + # just does the autocomplete then copy its results back result = intellisense.expand( line=line, cursor=current_line.current_character, @@ -250,7 +250,7 @@ def autocomplete(context): current_line.body, current_line.current_character, scrollback = result del result - # update sel. setting body should really do this! + # update selection. setting body should really do this! ofs = len(line_new) - len(line) sc.select_start += ofs sc.select_end += ofs @@ -263,12 +263,12 @@ def autocomplete(context): if _BPY_MAIN_OWN: sys.modules["__main__"] = main_mod_back - # Separate automplete output by command prompts + # Separate autocomplete output by command prompts if scrollback != '': bpy.ops.console.scrollback_append(text=sc.prompt + current_line.body, type='INPUT') # Now we need to copy back the line from blender back into the - # text editor. This will change when we dont use the text editor + # text editor. This will change when we don't use the text editor # anymore if scrollback: add_scrollback(scrollback, 'INFO') diff --git a/release/scripts/modules/console_shell.py b/release/scripts/modules/console_shell.py index 7a6f45c426f..772d46c8bf3 100644 --- a/release/scripts/modules/console_shell.py +++ b/release/scripts/modules/console_shell.py @@ -64,7 +64,7 @@ def execute(context): def autocomplete(context): - # sc = context.space_data + #~ sc = context.space_data # TODO return {'CANCELLED'} diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py index d95c3920cf9..4116bfda0c7 100644 --- a/release/scripts/modules/rna_info.py +++ b/release/scripts/modules/rna_info.py @@ -292,7 +292,7 @@ class InfoPropertyRNA: elif as_arg: if not self.is_required: type_info.append("optional") - else: # readonly is only useful for selfs, not args + else: # readonly is only useful for self's, not args if self.is_readonly: type_info.append("readonly") @@ -519,7 +519,7 @@ def BuildRNAInfo(): # Done ordering structs - # precalc vars to avoid a lot of looping + # precalculate vars to avoid a lot of looping for (rna_base, identifier, rna_struct) in structs: # rna_struct_path = full_rna_struct_path(rna_struct) @@ -634,7 +634,7 @@ if __name__ == "__main__": struct = rna_info.BuildRNAInfo()[0] data = [] for struct_id, v in sorted(struct.items()): - struct_id_str = v.identifier # "".join(sid for sid in struct_id if struct_id) + struct_id_str = v.identifier #~ "".join(sid for sid in struct_id if struct_id) for base in v.get_bases(): struct_id_str = base.identifier + "|" + struct_id_str diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py index 7d1f3b8f5f0..3051914cf00 100644 --- a/release/scripts/startup/bl_operators/anim.py +++ b/release/scripts/startup/bl_operators/anim.py @@ -87,7 +87,7 @@ class ANIM_OT_keying_set_export(Operator): # -------------------------------------------------------- # generate and write set of lookups for id's used in paths - # cache for syncing ID-blocks to bpy paths + shorthands + # cache for syncing ID-blocks to bpy paths + shorthand's id_to_paths_cache = {} for ksp in ks.paths: diff --git a/release/scripts/startup/bl_operators/console.py b/release/scripts/startup/bl_operators/console.py index 109ca758ea8..8afcdf5f67e 100644 --- a/release/scripts/startup/bl_operators/console.py +++ b/release/scripts/startup/bl_operators/console.py @@ -62,7 +62,7 @@ class ConsoleAutocomplete(Operator): class ConsoleBanner(Operator): - '''Print a message whem the terminal initializes''' + '''Print a message when the terminal initializes''' bl_idname = "console.banner" bl_label = "Console Banner" @@ -97,7 +97,7 @@ class ConsoleLanguage(Operator): def execute(self, context): sc = context.space_data - # defailt to python + # default to python sc.language = self.language bpy.ops.console.banner() diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index d7c6cfc0565..51c530db672 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -174,7 +174,7 @@ class SelectHierarchy(Operator): select_new.sort(key=lambda obj_iter: obj_iter.name) act_new = select_new[0] - # dont edit any object settings above this + # don't edit any object settings above this if select_new: if not self.extend: bpy.ops.object.select_all(action='DESELECT') @@ -331,7 +331,7 @@ class ShapeTransfer(Operator): orig_shape_coords = me_cos(ob_act.active_shape_key.data) orig_normals = me_nos(me.vertices) - # the actual mverts location isnt as relyable as the base shape :S + # the actual mverts location isn't as reliable as the base shape :S # orig_coords = me_cos(me.vertices) orig_coords = me_cos(me.shape_keys.key_blocks[0].data) @@ -721,8 +721,8 @@ class TransformsToDeltasAnim(Operator): fcu.data_path = "delta_rotation_quaternion" obj.rotation_quaternion.identity() # XXX: currently not implemented - # elif fcu.data_path == "rotation_axis_angle": - # fcu.data_path = "delta_rotation_axis_angle" + #~ elif fcu.data_path == "rotation_axis_angle": + #~ fcu.data_path = "delta_rotation_axis_angle" elif fcu.data_path == "scale": fcu.data_path = "delta_scale" obj.scale = 1.0, 1.0, 1.0 diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py index 05656f5397d..324414b8bcb 100644 --- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py +++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py @@ -104,13 +104,13 @@ def extend(obj, operator, EXTEND_MODE): uvs_vhash_target[edgepair_inner_target[1]][:] = uvs_vhash_source[edgepair_inner_source[iB]] # Set the 2 UV's on the target face that are not touching - # for this we need to do basic expaning on the source faces UV's + # for this we need to do basic expanding on the source faces UV's if EXTEND_MODE == 'LENGTH': try: # divide by zero is possible ''' measure the length of each face from the middle of each edge to the opposite - allong the axis we are copying, use this + along the axis we are copying, use this ''' i1a = edgepair_outer_target[iB] i2a = edgepair_inner_target[iA] @@ -158,11 +158,11 @@ def extend(obj, operator, EXTEND_MODE): # Modes # 0 unsearched # 1:mapped, use search from this face. - removed!! - # 2:all siblings have been searched. dont search again. + # 2:all siblings have been searched. don't search again. face_modes = [0] * len(face_sel) face_modes[face_act_local_index] = 1 # extend UV's from this face. - # Edge connectivty + # Edge connectivity edge_faces = {} for i, f in enumerate(face_sel): for edkey in f.edge_keys: @@ -181,7 +181,7 @@ def extend(obj, operator, EXTEND_MODE): looplen[0] += (me_verts[ed[0]].co - me_verts[ed[1]].co).length looplen[0] = looplen[0] / len(loop) - # remove seams, so we dont map accross seams. + # remove seams, so we don't map across seams. for ed in me.edges: if ed.use_seam: # remove the edge pair if we can @@ -213,7 +213,7 @@ def extend(obj, operator, EXTEND_MODE): face_modes[i] = 1 # we can map from this one now. ok = True # keep searching - face_modes[i] = 2 # dont search again + face_modes[i] = 2 # don't search again if is_editmode: bpy.ops.object.mode_set(mode='EDIT') diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index d9cdb1794c2..52548817620 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -36,7 +36,7 @@ class prettyface(object): def __init__(self, data): self.has_parent = False - self.rot = False # only used for triables + self.rot = False # only used for triangles self.xoff = 0 self.yoff = 0 @@ -157,7 +157,7 @@ class prettyface(object): angles_co.sort() I = [i for a, i in angles_co] - # fuv = f.uv + #~ fuv = f.uv fuv = f.id_data.uv_textures.active.data[f.index].uv # XXX25 if self.rot: @@ -200,8 +200,8 @@ def lightmap_uvpack(meshes, ''' BOX_DIV if the maximum division of the UV map that a box may be consolidated into. - Basicly, a lower value will be slower but waist less space - and a higher value will have more clumpy boxes but more waisted space + Basically, a lower value will be slower but waist less space + and a higher value will have more clumpy boxes but more wasted space ''' import time from math import sqrt @@ -321,7 +321,7 @@ def lightmap_uvpack(meshes, lengths.append(curr_len) curr_len = curr_len / 2.0 - # Dont allow boxes smaller then the margin + # Don't allow boxes smaller then the margin # since we contract on the margin, boxes that are smaller will create errors # print(curr_len, side_len/MARGIN_DIV) if curr_len / 4.0 < side_len / PREF_MARGIN_DIV: @@ -371,9 +371,9 @@ def lightmap_uvpack(meshes, print("...done") # Since the boxes are sized in powers of 2, we can neatly group them into bigger squares - # this is done hierarchily, so that we may avoid running the pack function + # this is done hierarchically, so that we may avoid running the pack function # on many thousands of boxes, (under 1k is best) because it would get slow. - # Using an off and even dict us usefull because they are packed differently + # Using an off and even dict us useful because they are packed differently # where w/h are the same, their packed in groups of 4 # where they are different they are packed in pairs # @@ -393,14 +393,14 @@ def lightmap_uvpack(meshes, # Count the number of boxes consolidated, only used for stats. c = 0 - # This is tricky. the total area of all packed boxes, then squt that to get an estimated size + # This is tricky. the total area of all packed boxes, then sqrt() that to get an estimated size # this is used then converted into out INT space so we can compare it with # the ints assigned to the boxes size - # and divided by BOX_DIV, basicly if BOX_DIV is 8 - # ...then the maximum box consolidataion (recursive grouping) will have a max width & height + # and divided by BOX_DIV, basically if BOX_DIV is 8 + # ...then the maximum box consolidation (recursive grouping) will have a max width & height # ...1/8th of the UV size. # ...limiting this is needed or you end up with bug unused texture spaces - # ...however if its too high, boxpacking is way too slow for high poly meshes. + # ...however if its too high, box-packing is way too slow for high poly meshes. float_to_int_factor = lengths_to_ints[0][0] if float_to_int_factor > 0: max_int_dimension = int(((side_len / float_to_int_factor)) / PREF_BOX_DIV) @@ -409,7 +409,7 @@ def lightmap_uvpack(meshes, max_int_dimension = 0.0 # wont be used ok = False - # RECURSIVE prettyface grouping + # RECURSIVE pretty face grouping while ok: ok = False @@ -456,7 +456,7 @@ def lightmap_uvpack(meshes, pretty_faces = [pf for pf in pretty_faces if not pf.has_parent] - # spin every second prettyface + # spin every second pretty-face # if there all vertical you get less efficiently used texture space i = len(pretty_faces) d = 0 diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index 5985a37a0c9..1248fc24ed7 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -34,7 +34,7 @@ USER_FILL_HOLES_QUALITY = None def pointInTri2D(v, v1, v2, v3): key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y - # Commented because its slower to do the bounds check, we should realy cache the bounds info for each face. + # Commented because its slower to do the bounds check, we should really cache the bounds info for each face. ''' # BOUNDS CHECK xmin= 1000000 @@ -119,7 +119,7 @@ def boundsEdgeLoop(edges): """ # Turns the islands into a list of unpordered edges (Non internal) -# Onlt for UV's +# Only for UV's # only returns outline edges for intersection tests. and unique points. def island2Edge(island): @@ -141,7 +141,7 @@ def island2Edge(island): else: i1= vIdx; i2= vIdx-1 - try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. + try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets any edge with more then 1 user to 0 are not returned. except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, # If 2 are the same then they will be together, but full [a,b] order is not correct. @@ -162,10 +162,10 @@ def island2Edge(island): return length_sorted_edges, [v.to_3d() for v in unique_points.values()] # ========================= NOT WORKING???? -# Find if a points inside an edge loop, un-orderd. +# Find if a points inside an edge loop, un-ordered. # pt is and x/y # edges are a non ordered loop of edges. -# #offsets are the edge x and y offset. +# offsets are the edge x and y offset. """ def pointInEdges(pt, edges): # @@ -223,7 +223,7 @@ def islandIntersectUvIsland(source, target, SourceOffset): if pointInIsland(pv+SourceOffset, target[0]): return 2 # SOURCE INSIDE TARGET - # 2 test for a part of the target being totaly inside the source. + # 2 test for a part of the target being totally inside the source. for pv in target[7]: if pointInIsland(pv-SourceOffset, source[0]): return 3 # PART OF TARGET INSIDE SOURCE. @@ -242,7 +242,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): for i, v in enumerate(vecs): - # Do this allong the way + # Do this along the way if mat != -1: v = vecs[i] = mat * v x= v.x @@ -252,7 +252,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): if x>maxx: maxx= x if y>maxy: maxy= y - # Spesific to this algo, bail out if we get bigger then the current area + # Specific to this algo, bail out if we get bigger then the current area if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: return (BIG_NUM, None), None w = maxx-minx @@ -262,7 +262,7 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): def optiRotateUvIsland(faces): global currentArea - # Bestfit Rotation + # Best-fit Rotation def best2dRotation(uvVecs, MAT1, MAT2): global currentArea @@ -318,7 +318,7 @@ def optiRotateUvIsland(faces): currentArea = newAreaPos # 45d done - # Testcase different rotations and find the onfe that best fits in a square + # Testcase different rotations and find the one that best fits in a square for ROTMAT in RotMatStepRotation: uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) @@ -409,7 +409,7 @@ def mergeUvIslands(islandList): BREAK= False while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK: sourceIsland = decoratedIslandListAreaSort[areaIslandIdx] - # Alredy packed? + # Already packed? if not sourceIsland[0]: areaIslandIdx+=1 else: @@ -420,7 +420,7 @@ def mergeUvIslands(islandList): BREAK= True break - # Now we have 2 islands, is the efficience of the islands lowers theres an + # Now we have 2 islands, if the efficiency of the islands lowers theres an # increasing likely hood that we can fit merge into the bigger UV island. # this ensures a tight fit. @@ -435,12 +435,12 @@ def mergeUvIslands(islandList): pass else: - # ([island, totFaceArea, efficiency, islandArea, w,h]) - # Waisted space on target is greater then UV bounding island area. + #~ ([island, totFaceArea, efficiency, islandArea, w,h]) + # Wasted space on target is greater then UV bounding island area. - # if targetIsland[3] > (sourceIsland[2]) and\ # - # print USER_FREE_SPACE_TO_TEST_QUALITY + #~ if targetIsland[3] > (sourceIsland[2]) and\ # + #~ print USER_FREE_SPACE_TO_TEST_QUALITY if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ targetIsland[4] > sourceIsland[4] and\ targetIsland[5] > sourceIsland[5]: @@ -456,7 +456,7 @@ def mergeUvIslands(islandList): boxLeft = 0 - # Distllllance we can move between whilst staying inside the targets bounds. + # Distance we can move between whilst staying inside the targets bounds. testWidth = targetIsland[4] - sourceIsland[4] testHeight = targetIsland[5] - sourceIsland[5] @@ -474,25 +474,25 @@ def mergeUvIslands(islandList): boxLeft = 0 # Start 1 back so we can jump into the loop. boxBottom= 0 #-yIncrement - ##testcount= 0 + #~ testcount= 0 while boxBottom <= testHeight: # Should we use this? - not needed for now. - #if Window.GetKeyQualifiers() & ctrl: - # BREAK= True - # break + #~ if Window.GetKeyQualifiers() & ctrl: + #~ BREAK= True + #~ break ##testcount+=1 #print 'Testing intersect' Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector((boxLeft, boxBottom))) #print 'Done', Intersect - if Intersect == 1: # Line intersect, dont bother with this any more + if Intersect == 1: # Line intersect, don't bother with this any more pass if Intersect == 2: # Source inside target ''' We have an intersection, if we are inside the target - then move us 1 whole width accross, + then move us 1 whole width across, Its possible this is a bad idea since 2 skinny Angular faces could join without 1 whole move, but its a lot more optimal to speed this up since we have already tested for it. @@ -500,7 +500,7 @@ def mergeUvIslands(islandList): It gives about 10% speedup with minimal errors. ''' #print 'ass' - # Move the test allong its width + SMALL_NUM + # Move the test along its width + SMALL_NUM #boxLeft += sourceIsland[4] + SMALL_NUM boxLeft += sourceIsland[4] elif Intersect == 0: # No intersection?? Place it. @@ -551,7 +551,7 @@ def mergeUvIslands(islandList): break - # INCREMENR NEXT LOCATION + # INCREMENT NEXT LOCATION if boxLeft > testWidth: boxBottom += yIncrement boxLeft = 0.0 @@ -572,8 +572,8 @@ def mergeUvIslands(islandList): # Takes groups of faces. assumes face groups are UV groups. def getUvIslands(faceGroups, me): - # Get seams so we dont cross over seams - edge_seams = {} # shoudl be a set + # Get seams so we don't cross over seams + edge_seams = {} # should be a set for ed in me.edges: if ed.use_seam: edge_seams[ed.key] = None # dummy var- use sets! @@ -609,7 +609,7 @@ def getUvIslands(faceGroups, me): # Modes # 0 - face not yet touched. # 1 - added to island list, and need to search - # 2 - touched and searched - dont touch again. + # 2 - touched and searched - don't touch again. face_modes = [0] * len(faces) # initialize zero - untested. face_modes[0] = 1 # start the search with face 1 @@ -633,7 +633,7 @@ def getUvIslands(faceGroups, me): face_modes[ii] = ok = 1 # mark as searched newIsland.append(faces[ii]) - # mark as searched, dont look again. + # mark as searched, don't look again. face_modes[i] = 2 islandList.append(newIsland) @@ -664,8 +664,8 @@ def packIslands(islandList): # Now we have UV islands, we need to pack them. - # Make a synchronised list with the islands - # so we can box pak the islands. + # Make a synchronized list with the islands + # so we can box pack the islands. packBoxes = [] # Keep a list of X/Y offset so we can save time by writing the @@ -716,14 +716,14 @@ def packIslands(islandList): # print 'Box Packing Time:', time.time() - time1 #if len(pa ckedLs) != len(islandList): - # raise "Error packed boxes differes from original length" + # raise "Error packed boxes differs from original length" #print '\tWriting Packed Data to faces' #XXX Window.DrawProgressBar(0.8, 'Writing Packed Data to faces') # Sort by ID, so there in sync again islandIdx = len(islandList) - # Having these here avoids devide by 0 + # Having these here avoids divide by 0 if islandIdx: if USER_STRETCH_ASPECT: @@ -845,9 +845,9 @@ def main(context, time.sleep(10) ''' -#XXX if not Draw.PupBlock(ob % len(obList), pup_block): -#XXX return -#XXX del ob +#~ XXX if not Draw.PupBlock(ob % len(obList), pup_block): +#~ XXX return +#~ XXX del ob # Convert from being button types @@ -859,10 +859,10 @@ def main(context, is_editmode = (context.active_object.mode == 'EDIT') if is_editmode: bpy.ops.object.mode_set(mode='OBJECT') - # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. + # Assume face select mode! an annoying hack to toggle face select mode because Mesh doesn't like faceSelectMode. if USER_SHARE_SPACE: - # Sort by data name so we get consistant results + # Sort by data name so we get consistent results obList.sort(key = lambda ob: ob.data.name) collected_islandList= [] @@ -870,7 +870,7 @@ def main(context, time1 = time.time() - # Tag as False se we dont operate on the same mesh twice. + # Tag as False so we don't operate on the same mesh twice. #XXX bpy.data.meshes.tag = False for me in bpy.data.meshes: me.tag = False @@ -885,7 +885,7 @@ def main(context, # Tag as used me.tag = True - if not me.uv_textures: # Mesh has no UV Coords, dont bother. + if not me.uv_textures: # Mesh has no UV Coords, don't bother. me.uv_textures.new() uv_layer = me.uv_textures.active.data @@ -902,7 +902,7 @@ def main(context, #XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces))) # ======= - # Generate a projection list from face normals, this is ment to be smart :) + # Generate a projection list from face normals, this is meant to be smart :) # make a list of face props that are in sync with meshFaces # Make a Face List that is sorted by area. @@ -928,7 +928,7 @@ def main(context, # Initialize projectVecs if USER_VIEW_INIT: # Generate Projection - projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this allong the way + projectVecs = [Vector(Window.GetViewVector()) * ob.matrix_world.inverted().to_3x3()] # We add to this along the way else: projectVecs = [] @@ -936,7 +936,7 @@ def main(context, newProjectMeshFaces = [] # Popping stuffs it up. - # Predent that the most unique angke is ages away to start the loop off + # Pretend that the most unique angle is ages away to start the loop off mostUniqueAngle = -1.0 # This is popped @@ -950,7 +950,7 @@ def main(context, # add all the faces that are close. for fIdx in range(len(tempMeshFaces)-1, -1, -1): - # Use half the angle limit so we dont overweight faces towards this + # Use half the angle limit so we don't overweight faces towards this # normal and hog all the faces. if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py index 4c78adb7161..ce4942ae238 100644 --- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py +++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# ***** END GPL LICENCE BLOCK ***** +# ***** END GPL LICENSE BLOCK ***** # -------------------------------------------------------------------------- # @@ -69,7 +69,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, vec /= tot_con - # angle is the acos of the dot product between vert and connected verts normals + # angle is the acos() of the dot product between vert and connected verts normals ang = acos(no.dot(vec)) # enforce min/max diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py index 05b53219119..315b7e5c4fc 100644 --- a/release/scripts/startup/bl_operators/view3d.py +++ b/release/scripts/startup/bl_operators/view3d.py @@ -33,7 +33,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator): totface = mesh.total_face_sel totedge = mesh.total_edge_sel - # totvert = mesh.total_vert_sel + #~ totvert = mesh.total_vert_sel if select_mode[2] and totface == 1: bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN', @@ -65,7 +65,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator): totface = mesh.total_face_sel totedge = mesh.total_edge_sel - # totvert = mesh.total_vert_sel + #~ totvert = mesh.total_vert_sel if totface >= 1: bpy.ops.mesh.extrude_region_move('INVOKE_REGION_WIN', diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 85e79914ce3..63104ca00c3 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -70,7 +70,7 @@ def context_path_validate(context, data_path): # One of the items in the rna path is None, just ignore this value = Ellipsis else: - # We have a real error in the rna path, dont ignore that + # We have a real error in the rna path, don't ignore that raise return value @@ -103,7 +103,7 @@ def operator_value_is_undo(value): def operator_path_is_undo(context, data_path): # note that if we have data paths that use strings this could fail - # luckily we dont do this! + # luckily we don't do this! # # When we cant find the data owner assume no undo is needed. data_path_head, data_path_sep, data_path_tail = data_path.rpartition(".") @@ -425,7 +425,7 @@ class WM_OT_context_cycle_enum(Operator): rna_struct_str, rna_prop_str = data_path.rsplit('.', 1) i = rna_prop_str.find('[') - # just incse we get "context.foo.bar[0]" + # just in case we get "context.foo.bar[0]" if i != -1: rna_prop_str = rna_prop_str[0:i] @@ -820,8 +820,7 @@ class WM_OT_doc_view(Operator): class_name = rna_parent.identifier rna_parent = rna_parent.base - # It so happens that epydoc nests these, not sphinx - # class_name_full = self._nested_class_string(class_name) + #~ class_name_full = self._nested_class_string(class_name) url = ("%s/bpy.types.%s.html#bpy.types.%s.%s" % (self._prefix, class_name, class_name, class_prop)) @@ -1014,7 +1013,7 @@ class WM_OT_properties_edit(Operator): item = eval("context.%s" % data_path) # setup defaults - prop_ui = rna_idprop_ui_prop_get(item, self.property, False) # dont create + prop_ui = rna_idprop_ui_prop_get(item, self.property, False) # don't create if prop_ui: self.min = prop_ui.get("min", -1000000000) self.max = prop_ui.get("max", 1000000000) @@ -1171,7 +1170,7 @@ class WM_OT_copy_prev_settings(Operator): shutil.rmtree(os.path.join(path_dst, 'scripts')) shutil.rmtree(os.path.join(path_dst, 'plugins')) - # dont loose users work if they open the splash later. + # don't loose users work if they open the splash later. if bpy.data.is_saved is bpy.data.is_dirty is False: bpy.ops.wm.read_homefile() else: @@ -1372,9 +1371,9 @@ class WM_OT_keyitem_add(Operator): km = context.keymap if km.is_modal: - km.keymap_items.new_modal("", 'A', 'PRESS') # kmi + km.keymap_items.new_modal("", 'A', 'PRESS') #~ kmi else: - km.keymap_items.new("none", 'A', 'PRESS') # kmi + km.keymap_items.new("none", 'A', 'PRESS') #~ kmi # clear filter and expand keymap so we can see the newly added item if context.space_data.filter_text != "": @@ -1556,7 +1555,7 @@ class WM_OT_addon_install(Operator): pyfile = self.filepath if self.target == 'DEFAULT': - # dont use bpy.utils.script_paths("addons") because we may not be able to write to it. + # don't use bpy.utils.script_paths("addons") because we may not be able to write to it. path_addons = bpy.utils.user_resource('SCRIPTS', "addons", create=True) else: path_addons = bpy.context.user_preferences.filepaths.script_directory @@ -1637,7 +1636,7 @@ class WM_OT_addon_install(Operator): addons_new.discard("modules") # disable any addons we may have enabled previously and removed. - # this is unlikely but do just incase. bug [#23978] + # this is unlikely but do just in case. bug [#23978] for new_addon in addons_new: addon_utils.disable(new_addon) @@ -1652,11 +1651,11 @@ class WM_OT_addon_install(Operator): context.window_manager.addon_search = info["name"] break - # incase a new module path was created to install this addon. + # in case a new module path was created to install this addon. bpy.utils.refresh_script_paths() # TODO, should not be a warning. - # self.report({'WARNING'}, "File installed to '%s'\n" % path_dest) + #~ self.report({'WARNING'}, "File installed to '%s'\n" % path_dest) return {'FINISHED'} def invoke(self, context, event): @@ -1699,7 +1698,7 @@ class WM_OT_addon_remove(Operator): self.report('WARNING', "Addon path %r could not be found" % path) return {'CANCELLED'} - # incase its enabled + # in case its enabled addon_utils.disable(self.module) import shutil diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py index 3b33a7ccc61..93feb8adc7a 100644 --- a/release/scripts/startup/bl_ui/properties_animviz.py +++ b/release/scripts/startup/bl_ui/properties_animviz.py @@ -21,8 +21,8 @@ # Generic Panels (Independent of DataType) # NOTE: -# The specialised panel types are derived in their respective UI modules -# dont register these classes since they are only helpers. +# The specialized panel types are derived in their respective UI modules +# don't register these classes since they are only helpers. class MotionPathButtonsPanel(): diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index e4744fdb04f..5dadcba2621 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -214,7 +214,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): layout.prop(pose_marker_active, "name") -# TODO: this panel will soon be depreceated too +# TODO: this panel will soon be deprecated deprecated too class DATA_PT_ghost(ArmatureButtonsPanel, Panel): bl_label = "Ghost" @@ -301,7 +301,7 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel): @classmethod def poll(cls, context): - # XXX: include posemode check? + # XXX: include pose-mode check? return (context.object) and (context.armature) def draw(self, context): @@ -324,7 +324,7 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from @classmethod def poll(cls, context): - # XXX: include posemode check? + # XXX: include pose-mode check? return (context.object) and (context.armature) def draw(self, context): diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py index b3eaf88d5bf..807e5e63bc5 100644 --- a/release/scripts/startup/bl_ui/properties_data_bone.py +++ b/release/scripts/startup/bl_ui/properties_data_bone.py @@ -189,7 +189,7 @@ class BONE_PT_display(BoneButtonsPanel, Panel): return context.bone def draw(self, context): - # note. this works ok in editmode but isnt + # note. this works ok in edit-mode but isn't # all that useful so disabling for now. layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index 5b00402520e..62cb735fda9 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -87,7 +87,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel): @classmethod def poll(cls, context): - # An exception, dont call the parent poll func because + # An exception, don't call the parent poll func because # this manages materials for all engine types engine = context.scene.render.engine @@ -537,7 +537,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, Panel): def draw(self, context): layout = self.layout - mat = context.material # dont use node material + mat = context.material # don't use node material halo = mat.halo def number_but(layout, toggle, number, name, color): @@ -595,7 +595,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, Panel): def draw(self, context): layout = self.layout - mat = context.material # dont use node material + mat = context.material # don't use node material halo = mat.halo layout.active = halo.use_flare_mode @@ -622,7 +622,7 @@ class MATERIAL_PT_game_settings(MaterialButtonsPanel, bpy.types.Panel): def draw(self, context): layout = self.layout - game = context.material.game_settings # dont use node material + game = context.material.game_settings # don't use node material row = layout.row() row.prop(game, "use_backface_culling") @@ -653,7 +653,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): layout = self.layout layout.active = context.material.game_settings.physics - phys = context.material.physics # dont use node material + phys = context.material.physics # don't use node material split = layout.split() row = split.row() @@ -686,7 +686,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel): def draw(self, context): layout = self.layout - mat = context.material # dont use node material + mat = context.material # don't use node material tan = mat.strand split = layout.split() @@ -862,7 +862,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel): def draw(self, context): layout = self.layout - vol = context.material.volume # dont use node material + vol = context.material.volume # don't use node material row = layout.row() row.prop(vol, "density") @@ -876,7 +876,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel): def draw(self, context): layout = self.layout - vol = context.material.volume # dont use node material + vol = context.material.volume # don't use node material split = layout.split() @@ -901,7 +901,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel): def draw(self, context): layout = self.layout - vol = context.material.volume # dont use node material + vol = context.material.volume # don't use node material split = layout.split() @@ -942,7 +942,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel): def draw(self, context): layout = self.layout - mat = context.material # dont use node material + mat = context.material # don't use node material layout.prop(mat, "transparency_method", expand=True) @@ -954,7 +954,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel): def draw(self, context): layout = self.layout - vol = context.material.volume # dont use node material + vol = context.material.volume # don't use node material split = layout.split() diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py index 05fac2026a0..dc19f58ca35 100644 --- a/release/scripts/startup/bl_ui/properties_object_constraint.py +++ b/release/scripts/startup/bl_ui/properties_object_constraint.py @@ -658,7 +658,7 @@ class ConstraintButtonsPanel(): row.label(text="Source to Destination Mapping:") # note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't - # open it. Thus we are using the hardcoded value instead. + # open it. Thus we are using the hard-coded value instead. row = col.row() row.prop(con, "map_to_x_from", expand=False, text="") row.label(text=" %s X" % chr(187)) diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index 204e25d9f01..64dad98d99a 100644 --- a/release/scripts/startup/bl_ui/properties_physics_common.py +++ b/release/scripts/startup/bl_ui/properties_physics_common.py @@ -76,7 +76,7 @@ class PHYSICS_PT_add(PhysicButtonsPanel, Panel): physics_add(self, col, context.smoke, "Smoke", 'SMOKE', 'MOD_SMOKE', True) -#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc +# cache-type can be 'PSYS' 'HAIR' 'SMOKE' etc def point_cache_ui(self, context, cache, enabled, cachetype): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py index 34f5a948ee7..73947c21a80 100644 --- a/release/scripts/startup/bl_ui/properties_texture.py +++ b/release/scripts/startup/bl_ui/properties_texture.py @@ -927,9 +927,9 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel): factor_but(col, "use_map_warp", "warp_factor", "Warp") factor_but(col, "use_map_displacement", "displacement_factor", "Displace") - #sub = col.column() - #sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror - #sub.prop(tex, "default_value", text="Amount", slider=True) + #~ sub = col.column() + #~ sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror + #~ sub.prop(tex, "default_value", text="Amount", slider=True) elif idblock.type == 'HALO': layout.label(text="Halo:") @@ -1014,7 +1014,7 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel): col = split.column() col.prop(tex, "blend_type", text="Blend") col.prop(tex, "use_rgb_to_intensity") - # color is used on grayscale textures even when use_rgb_to_intensity is disabled. + # color is used on gray-scale textures even when use_rgb_to_intensity is disabled. col.prop(tex, "color", text="") col = split.column() @@ -1027,14 +1027,14 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel): if isinstance(idblock, bpy.types.Material): layout.label(text="Bump Mapping:") - # only show bump settings if activated but not for normalmap images + # only show bump settings if activated but not for normal-map images row = layout.row() sub = row.row() sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and (tex.texture.use_normal_map or tex.texture.use_derivative_map)) sub.prop(tex, "bump_method", text="Method") - # the space setting is supported for: derivmaps + bumpmaps (DEFAULT,BEST_QUALITY), not for normalmaps + # the space setting is supported for: derivative-maps + bump-maps (DEFAULT,BEST_QUALITY), not for normal-maps sub = row.row() sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and ((tex.bump_method in {'BUMP_DEFAULT', 'BUMP_BEST_QUALITY'}) or (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map)) sub.prop(tex, "bump_objectspace", text="Space") diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py index 869a91124d3..1ae8095fab3 100644 --- a/release/scripts/startup/bl_ui/space_logic.py +++ b/release/scripts/startup/bl_ui/space_logic.py @@ -45,7 +45,7 @@ class LOGIC_PT_properties(Panel): row = box.row() row.prop(prop, "name", text="") row.prop(prop, "type", text="") - row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly + row.prop(prop, "value", text="", toggle=True) # we don't care about the type. rna will display correctly row.prop(prop, "show_debug", text="", toggle=True, icon='INFO') row.operator("object.game_property_remove", text="", icon='X', emboss=False).index = i diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 1ec6cc39164..96a08e57157 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -426,8 +426,8 @@ class USERPREF_PT_system(Panel): col.label(text="Anisotropic Filtering") col.prop(system, "anisotropic_filter", text="") col.prop(system, "use_vertex_buffer_objects") - #Anti-aliasing is disabled as it breaks broder/lasso select - #col.prop(system, "use_antialiasing") + # Anti-aliasing is disabled as it breaks border/lasso select + #~ col.prop(system, "use_antialiasing") col.label(text="Window Draw Method:") col.prop(system, "window_draw_method", text="") col.label(text="Text Draw Options:") diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py index c2e3a145f36..2c537efa61b 100644 --- a/release/scripts/startup/bl_ui/space_userpref_keymap.py +++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py @@ -262,7 +262,7 @@ class InputKeyMapPanel: row = subcol.row(align=True) - #row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:") + #~ row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:") text = bpy.path.display_name(context.window_manager.keyconfigs.active.name) if not text: text = "Blender (default)" @@ -270,8 +270,8 @@ class InputKeyMapPanel: row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMIN") row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMOUT").remove_active = True -# layout.context_pointer_set("keyconfig", wm.keyconfigs.active) -# row.operator("wm.keyconfig_remove", text="", icon='X') + #~ layout.context_pointer_set("keyconfig", wm.keyconfigs.active) + #~ row.operator("wm.keyconfig_remove", text="", icon='X') row.prop(context.space_data, "filter_text", icon="VIEWZOOM") diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index ff6afa81e65..e4beee66871 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -1142,7 +1142,7 @@ class VIEW3D_MT_sculpt(Menu): layout.prop(sculpt, "use_threaded", text="Threaded Sculpt") layout.prop(sculpt, "show_brush") - # TODO, make availabel from paint menu! + # TODO, make available from paint menu! layout.prop(tool_settings, "sculpt_paint_use_unified_size", text="Unify Size") layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Unify Strength") @@ -1413,7 +1413,7 @@ class BoneOptions: data_path_iter = "selected_bones" opt_suffix = "" options.append("lock") - else: # posemode + else: # pose-mode bone_props = bpy.types.Bone.bl_rna.properties data_path_iter = "selected_pose_bones" opt_suffix = "bone." @@ -2172,7 +2172,7 @@ class VIEW3D_PT_view3d_meshdisplay(Panel): @classmethod def poll(cls, context): - # The active object check is needed because of localmode + # The active object check is needed because of local-mode return (context.active_object and (context.mode == 'EDIT_MESH')) def draw(self, context): @@ -2233,7 +2233,7 @@ class VIEW3D_PT_background_image(Panel): @classmethod def poll(cls, context): view = context.space_data - # bg = context.space_data.background_image + #~ bg = context.space_data.background_image return (view) def draw_header(self, context): diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 8f1833f952b..a78992d4a07 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -63,7 +63,7 @@ def draw_gpencil_tools(context, layout): row.prop(context.tool_settings, "use_grease_pencil_sessions") -# ********** default tools for objectmode **************** +# ********** default tools for object-mode **************** class VIEW3D_PT_tools_objectmode(View3DPanel, Panel): bl_context = "objectmode" @@ -385,7 +385,7 @@ class VIEW3D_PT_tools_latticeedit(View3DPanel, Panel): draw_gpencil_tools(context, layout) -# ********** default tools for posemode **************** +# ********** default tools for pose-mode **************** class VIEW3D_PT_tools_posemode(View3DPanel, Panel): @@ -1043,7 +1043,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel): row = col.row(align=True) row.prop(brush, "icon_filepath", text="") -# ********** default tools for weightpaint **************** +# ********** default tools for weight-paint **************** class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel): @@ -1097,9 +1097,9 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel): # col.prop(wpaint, "mul", text="") # Also missing now: -# Soft, Vgroup, X-Mirror and "Clear" Operator. +# Soft, Vertex-Group, X-Mirror and "Clear" Operator. -# ********** default tools for vertexpaint **************** +# ********** default tools for vertex-paint **************** class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel): @@ -1128,7 +1128,7 @@ class VIEW3D_PT_tools_vertexpaint(View3DPanel, Panel): # col.label(text="Multiply:") # col.prop(vpaint, "mul", text="") -# ********** default tools for texturepaint **************** +# ********** default tools for texture-paint **************** class VIEW3D_PT_tools_projectpaint(View3DPanel, Panel): diff --git a/release/scripts/templates/gamelogic_module.py b/release/scripts/templates/gamelogic_module.py index fcc8a8839c9..88c8cf0d75b 100644 --- a/release/scripts/templates/gamelogic_module.py +++ b/release/scripts/templates/gamelogic_module.py @@ -8,7 +8,7 @@ import bge # variables defined here will only be set once when the -# module is first imported. Set object spesific vars +# module is first imported. Set object specific vars # inside the function if you intend to use the module # with multiple objects. From 9a5921883eb240399690a4ee66b2a86f8f17a84e Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Mon, 17 Oct 2011 10:30:08 +0000 Subject: [PATCH 044/119] OSX: Start with OMP_NUM_THREADS default unchanged, to let the user decide about optimized value, default == all cores used --- source/darwin/blender.app/Contents/Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist index 7fab4a98c4b..9aeb617a051 100644 --- a/source/darwin/blender.app/Contents/Info.plist +++ b/source/darwin/blender.app/Contents/Info.plist @@ -46,7 +46,7 @@ LSEnvironment OMP_NUM_THREADS - 2 + From 70abd2a304ffefb2590b914dc413f64874327298 Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Mon, 17 Oct 2011 10:41:47 +0000 Subject: [PATCH 045/119] OSX: omp script rework part1 --- .../Contents/Info.plist | 44 ------------------ .../Contents/MacOS/applet | Bin 34480 -> 0 bytes .../Contents/PkgInfo | 1 - .../Contents/Resources/Scripts/main.scpt | Bin 4696 -> 0 bytes .../Contents/Resources/applet.icns | Bin 40291 -> 0 bytes .../Contents/Resources/applet.rsrc | Bin 362 -> 0 bytes .../Resources/description.rtfd/TXT.rtf | 4 -- 7 files changed, 49 deletions(-) delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist delete mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet delete mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist deleted file mode 100644 index 71ec4a4d0c1..00000000000 --- a/source/darwin/set_simulation_threads.app/Contents/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleAllowMixedLocalizations - - CFBundleDevelopmentRegion - English - CFBundleExecutable - applet - CFBundleIconFile - applet - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - set_simulation_threads - CFBundlePackageType - APPL - CFBundleSignature - aplt - LSMinimumSystemVersionByArchitecture - - x86_64 - 10.6 - - LSRequiresCarbon - - WindowState - - dividerCollapsed - - eventLogLevel - -1 - name - ScriptWindowState - positionOfDivider - 400 - savedFrame - 424 473 1435 704 0 0 1920 1178 - selectedTabView - result - - - diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet deleted file mode 100755 index 0079f4b19d448615de26af5c84a0a6195d511bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34480 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 kX{m7X!AN3H-i0yM{{P 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 Date: Mon, 17 Oct 2011 10:43:32 +0000 Subject: [PATCH 046/119] OSX: omp script rework part2 --- .../Contents/Info.plist | 44 ++++++++++++++++++ .../Contents/MacOS/applet | Bin 0 -> 34480 bytes .../Contents/PkgInfo | 1 + .../Contents/Resources/Scripts/main.scpt | Bin 0 -> 4696 bytes .../Contents/Resources/applet.icns | Bin 0 -> 40291 bytes .../Contents/Resources/applet.rsrc | Bin 0 -> 362 bytes .../Resources/description.rtfd/TXT.rtf | 4 ++ .../set_simulation_threads_applescript.scpt | Bin 5140 -> 5144 bytes 8 files changed, 49 insertions(+) create mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist create mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet create mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist new file mode 100644 index 00000000000..44d6783599c --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + English + CFBundleExecutable + applet + CFBundleIconFile + applet + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + set_simulation_threads + CFBundlePackageType + APPL + CFBundleSignature + aplt + LSMinimumSystemVersionByArchitecture + + x86_64 + 10.6 + + LSRequiresCarbon + + WindowState + + dividerCollapsed + + eventLogLevel + -1 + name + ScriptWindowState + positionOfDivider + 470 + savedFrame + 199 169 1197 810 0 0 1920 1178 + selectedTabView + result + + + diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet new file mode 100755 index 0000000000000000000000000000000000000000..0079f4b19d448615de26af5c84a0a6195d511bfc GIT binary patch literal 34480 zcmeHP3tWuZ`+sMeGNrq8K{ZjRXx?rVi&C>?3z6J2rfI5C&9pO9$+D${B)7$C<&vyh zSuAo}6s=H5ZlQI*l*-b&Bv$|DnM!wS`en~RHlJP5rqJS0EGaB0EGaB0EGaB0EGaB z0EGaB0EGaBz<&|~=b9Vd!b?64Uh-4u&~XEB{#pc)PO#*|u)sJtE;q>Ak28@odZawL z%?0)jK1;}_3JP+$V>si-v@I^LkJ}FFq>SSRgr?GAHkT_COqXFuLGAek>ce0lYl$)+ z<2bHXVh|~zb8t5 zq_RB5Ki$80QKC>3&J~Ix#2?_tf(gU%1}XVr{8Pl`3Zl3X5?-u8QL26a;*|VU_+cFG zjgJz}>wNjV`g)J?Rx4(x=$Cvu36mi%C#A34SRxq8WG**OB94T9aT9nFm<}%Y!~A+H z%OgKkT~(60&*h3@xYDH9FmVhwP9}MeUvFjqRNcb3`Z#eu)#F@l4DVC?Je2&*m7T!2 zdVSS>tm-3|%NNJSibe0@ZO0p=EQsTJ5Cwh|_;~MPeig(Kv+*_r5eI%pa6#aZ zkiW`d`A^N82h_)Q+Y>w{1PdH)O0wgn5_XI*j2)g76Ap2tuHdjA2lV#1m4&+B$x9G< z*E3g&Y#|MxgwE;URlb(&2Os<3fC>L%Qmt2?>jsV+@y0PK)(dwC(Fk^Ml2j&$Wd{nw zBs@tH`%8SZ6UCBfDceUZ5d;e)2|~U=>Lh>UF`YeDAdw2iA}QOuO$p$Jgzb2Md)Ll7 zh(S9l%mH^rlTJgO0DoZ^WCQgChd5WT6!T}Pio<*snLvah3IPfM3IPfM3IPg%|4Ia= z5&jwX{nPF}@z0#a^v{Yn%xF$KMk~If;ZJMy&p2Pl@J}md`lopk@h>n`gK|bjX$=p& zXCd;c^@b-nPlywor_6{_P9u#dc`E?>(6*3f2i^6XdiYT>mxylnm3aKhE z%hCc0dIz`IX@kE6D|G{hr0!#Bl-=CGNB0{Fs6ZG-Ib9c|G!uoSM*9LY6e2LBDTp>> zG(nqgNHf&!z{E!SKr-@gdJCNgB9-L`2KGSTa4wyJZ1q&{nV;ixOUVc2Upak*59VPD zs`riYAjDyOs?v{A`dCh#RPV9PFm5c*P`)>+m!ZNG0u%xi0u%xi0u%xi0u%xi0u%xi z0u%xi0u%!O9taq9Cqjk>6NIrBD%0f3aBdjrn?ZR!O454?A@MNs;`;DnVtmB0abl4` zB=Z$Y<9ITD6sXuGUXVF5P9X9XMDXHcWUXZ|&)?XKE0`{nDOK?_E;lv`5(NBsnE>?T zJZ!>DvFY+RLQ&rB3;EW`WZ;SWE<-sy{Cq&J@6({cW(E-MSD=0id<@Eo4OjIzM-gxB zUqHJ!X5fYl>Jfpw(6vhgo%8!6{s@*IMp1#^dlMt!g-Zso+3x+E-Q3+=u=#h?d_%X0 zAdGNtOQkNxEg!Kd$pv4<9kM(chTq zhBw$B`htJsxO)(7>(RM6%eT2X7BlZ$Tqnq})cJANfVFccbdg1GH`*T$9mNSky(jvJ zwF#twM~nf7X{f)(Ju&RK>AQ}q>pmez0fwqvM>QR$Jg@miN8n{pL#AkHJIwW;`%;hA zfxbS4Org_g&K*f@Elo##4SE+%LcIXgSf8r*f=p!?k*V}o>ow>!I-O=r>b3HqX+n)K zIRlLlhE^wfNU(D!(nt#;I-PXnSh9wR_)g9}Nn1?p*vV3n=p&HGgb_kMPX>xwmUp}? zN-Pn|lAKLR6D+6ENl#I3v{)=-`FN97W_o0Q(#6@$#o5`@*>j?qp0m4JluZ5```}7C zEBfG|?5j9jzzP;diiDy_)<-%{rqa5r<3iIUG*W2>1f=WGQ)x6}!xp2jTl8ObjBc{i zTQxg0dcxs}T{Ct+y#M&D=c*p=p8o4>@_SuDAS~rzMPJ%b!HeL+0-;&+~e0HqU(2%3sdi>%09}?Sv7b-2|?^ zG`26n@-oD z5wyJ7d&t?lNPU3U(tt*5VKCs9noF8u+z#Wqq>dKTQ44OX4jLMy0j77tbWKtNJkk;q z^ckiMlSRT!C5b~vFn%06G-s6c+-sGr#oDAbX7^y2lcp&qjuk?`> zH$0g+h3tm~tQl;wFX_16etoaGc2P1}94s`6iHXYRA099^57z)bk1c_l&xtRIQJ+}2 z;bCHFL@xj6@<55j`Aq>vU$R6xLhVZ0Gd zmr`b&EjcnNt>EmqJ$u96IDEP08XtV zQ~L0^=lkl&r8*O(7(3evui z?7d~xtMjKLa%`iGD)J89>*{dadd1oqx*Pp6CtWn{?^;%3F#N2E@cbzY$@5VCOUc~T zjdmIbLlzGY)q5K5-lKCs=Lwd(m%n_Gv-Vuj!Q$~jk&BsoSTD;8`mn@tg+plM!hJsH z4Au<#!*N*eE+^lf-Fra)>XdGm%LeTou>F~VKC!IhE*n!P*`+V^u7{cC=Y74*FF2%l z2itph)9br&XCCAQa=x_=j1F4qolznS>u8wfJIF&aF$FU ziG>QHa28)I3K!ykqm(6%V8u%XecCh>Cx*J%7?f;nAOA_?Bs{(hK8He{@X-_qvr?ya zkEVS2n%pltuY@U%(cMSR!9mjgQV8C!SF zz()VtL8-;ay;u7s7tag1x;guR%h1KDWU8hWEMZ#8<%`x1qkp|Tp%i#rTwPp97k6CSK;Ur(`9~2Y z$NmL@$BgU@4+98Y`U*iNSR5fsdmm7{O^1M^#+&p~E)&2Jd6@J(3 zZJ=SD#b^Gos`x?njGyQAtlZ0H^t2f!DrF>$Hp%F2U~h6s)3EQ%M>DTSYz!48ndvm# zaTyq%H^5;_z!{FWtKH1#L0iKD%+_&hE|^&5(Fc~X9++1>{;uhpnTs?VGLOxgwI{fL z;e+faeY(9`7c08>`jMUW!*%@@=scAUBA(ML3o0H3bG8IrKVEvYxo-aV&vIveV_cNS z>z%z?#<`N%YsZFA$>sRqK4#m;x*j*aW3_5h!_~LJ)|R7p{Iu2UWytj_f8IX2VXcO0 zJu3&KPPSdoI;4=gxcJB=7CK3MRIYg^#&kR=Ee@_JdTnzk&NbbG(a&c~V0{}g=7Vw$ z2$rfvP7AsLD^p9GHSQ^C-@0tkOf5ett0~7+*ac7&}rbQ_ZC0A81e zIwj}5^@{qB`tzHto&CSc;vBb$j#l-t|l8$A{y7a-Cbb%zn-?_sx2wmhX3uhTLhose9^X1-zD{l0&lTIZy{XT+m_1>L{;^`SJ_0%74%T&bGH3Cpw*rQd~@^^`rg)- z)ol8~{$649jb{CFo^8(?=weL}R*>GMoxOs(9slQS_&tEf0N~*PJP@;1YSRzCR3-tP zs4}xX782m$3waU*T#eNEak-zi{VxO_{!q8D9S=2javiz9d@kDBmlG@~g>#{FI2UT) zGr(M^8COHzd-nJ&rJXj^SMM_vZKcoI;G=ChD)X7`c%YvC-97PXyL%JhfwnLv?RemL zRCeT_v$gLHJP-yX^|1hKt%PC4v(V1Io`ejR!tDgJB5YT^9`eI)O>|jc#RGl~_|@Ql z$UYv&jAK{z8-nlA9u^n@y_c%sjrK!`XREEYatc+p@z)*<+pNXb!@|}O&g=&Gm*CT>XCdtSL)>4 zYOel%opr#WZJqWu?meM|921rTV;nNZD{Khj7T$mqQ3y~7PzX>6PzX>6Pzd}D2uvd~ z?t?XbTD@UrC?lhrZPsvRMxZSt?KrLYE}d4EG1-<`gRnATI>iG#9Hha;KAV2>djAZn&8}kR|K3J&`g6Cm>HZm zS)3-U=?XQ|O3dNR04&KYg+Ah$0nkr8KcJ=yWUIQPI5{A#gc*7qxZ}G;i=Dar+D(3C z$*;C>jl#@Y5m@R&7>m?~DZ*H=cB~?d#cRJ(gt1cXU<@l>t+=tgXaP4|5W`CngmYuX z;qfs7IOGjJYvRQSX9y%*K74d9Z7nPghlB4VvD}Dw5nn2o&{5h)Quk5H#;9s+Y@sxA!U z&Jg?vxlKK6$>0tHrsH1IAPCbGYDATtHbere>QrI#L#{(@pAX3dcf@#aNhDwCC&1o{{Lpz39)|xxTYZ5jK`4PU+W#@5 zeJ(dzkQ5s!;f8}bQG^RuB8U{i8Ql`DQ~=gzV6+B}@numGI08Yw;lq`P<7Gk-^Z|_0 z@W2GFKq3)|!IMW~dHkrh<^F>GKTg5N?Egdl7W@BBgKKUcSlm^TcEDv#+bZ)Q#H44omw*??dMV1lfKzJ+;08GU7bC~ zrnhvQ<8}G*+hCmyE5wOQmG=MhfhpcVcu%VA|7FTFoM&`+PvGv?|N0C7H6GOY0RM+G z3aIk|sPh4+^8u*y0shj#C7-jWrOpSyb3v%{0jToU@B| zb_5D_KEVI?^8whE1^bd3MrnPs@DG<-XUl}5QgN-*rreo9Tc0>hW^&oAm>X}74_Y)j zVA}Q68Bss}IA_N6T`OvCTr+YiD#8Z-{&#nSqYx=_U>6NSl}prG1@_PFgT!b z>BPc?_m=+}bufLX$%^y8jNkJ0vS7m(&#!!QPv}-@7iGF(#j6Kivuw{B@&&WXtL{zq z**@>4M|81NP_x+jw7zlk$(3Cju2vNeo|NIR!cL=0-jW|$%6zZe{PNzriIRQTwm zRZ{bg$i{ftsCB=W?Y(q!q4~(#?Po4~k@JT?^IXz<#K=o-+(#WOd-|9>?Bcj0!|+O` kX{m7X!AN3H-i0yM*AXDUHm4ls^S(Fv|4u2FIWQu`9a44_E5;1XyPX(ZbEB= z>ZRS>fIndQJAjzDfp{BYeU6>a*lsj<9kp$!9&mEropsm3y}5pWhih9IPwxFa7|Yv3 zWn;ggrVUlDy`6h)S6XycT2zV0>ckasSzHpoLgn6zs<<+RvWmDY_g(@jxPj)Xe7X=5 z7qF@gb!jV~wjDc@>KjfCdK6Q)v23K5BXx*jC2CMB&Wm55i81jr;^Le*E6#}1WT%Ut z#3|H^AH_+`7AM4UaZDV=9PtC@iX-B%ID~naj|JkOI1opTa;l1Me83;iE_w_*EV@~; zR$gPom8#@09oOI8F^RO%{kt2wALm5%#{GJ@&gd-KdEaYgyeHW()ll{OAB-AKU$lg2 z$o#7|qUX}RW@Ev%leSyTrEQOXqaQ~1zj%|gdO#b`Zy>GE)6|K-kNEU5?RYXWBM}k_ zY|8bymOGq4ImZMhF+;;Da!+Cy9(>s7hk;HMN#*(Mp%oSe_>H5UI+U;LMhC}QLY`(x zqFFA`oJ8JiC?=%!anx2A4S@ z+F<0>PcX9c5C^(wMR#OGqA%N0LXiaS5ME)>P1^~Cyc3wh6bxID`GR zXGTT_S)z*b1TNchy=*q)MyD4{Qj5Y4}hq^(k{4WwzA!~{5}peNW&Z{aj8zvuA5Zict;pCQ@TxpoHRB8LuD6IsSmu2$wa_I^kD{!2rro5(`%#<9X?FM!abG9p>WiAf|vEN0ngeOYofy_cT z$oVuW*)3%6S^sxDHc`eP!;ogKPLEHL>t!z@bI_+24kb!0wo~V@dy%=^LVe^l%c~I+ z2PgE%syI-Jj=kGX%N!G8PY@tU>*6BbJ6?}>PwcEgMdx=tr-J+UJztz|KGWEFpr`5F zh*^(UntpDsN3m(_7jx{qd7-)USkD|hVWG}~{*8rt3$rcEslnWO#F{M3Ywmmr^Lu+N zEJ$H~qlJYQ8k`y|dI2@tc$}AfBjhp%L{ JH;*3O`xk#M8>j#P literal 0 HcmV?d00001 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns new file mode 100644 index 0000000000000000000000000000000000000000..fcc1f09273d73cb424494118a39d8b391ce00bcc GIT binary patch literal 40291 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 N3()upJ-&ax^B>Rn4t@Xt From 2dc6ca49b32ef2a8d73855b1f10a841792b94216 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 10:43:55 +0000 Subject: [PATCH 047/119] py docs: added python doc section on script performance and a note on relative file paths in the gotcha's page. also added script for spell checking py comments. --- doc/python_api/rst/info_best_practice.rst | 233 +++++++++++++++++++++- doc/python_api/rst/info_gotcha.rst | 20 ++ 2 files changed, 251 insertions(+), 2 deletions(-) diff --git a/doc/python_api/rst/info_best_practice.rst b/doc/python_api/rst/info_best_practice.rst index 2fbc636613c..2e5b5bd285c 100644 --- a/doc/python_api/rst/info_best_practice.rst +++ b/doc/python_api/rst/info_best_practice.rst @@ -2,8 +2,9 @@ Best Practice ************* +When writing you're own scripts python is great for new developers to pick up and become productive, but you can also pick up odd habits or at least write scripts that are not easy for others to understand. -TODO: Intro text +For you're own work this is of course fine, but if you want to collaborate with others or have you're work included with blender there are practices we encourage. Style Conventions @@ -61,5 +62,233 @@ TODO: Thomas Script Efficiency ================= -TODO: Campbell +List Manipulation (General Python Tips) +--------------------------------------- + +Searching for list items +^^^^^^^^^^^^^^^^^^^^^^^^ + +In Python there are some handy list functions that save you having to search through the list. + +Even though you're not looping on the list data **python is**, so you need to be aware of functions that will slow down your script by searching the whole list. + +.. code-block:: python + + my_list.count(list_item) + my_list.index(list_item) + my_list.remove(list_item) + if list_item in my_list: ... + + +Modifying Lists +^^^^^^^^^^^^^^^ +In python we can add and remove from a list, This is slower when the list length is modifier, especially at the start of the list, since all the data after the index of modification needs to be moved up or down 1 place. + +The most simple way to add onto the end of the list is to use ``my_list.append(list_item)`` or ``my_list.extend(some_list)`` and the fastest way to remove an item is ``my_list.pop()`` or ``del my_list[-1]``. + +To use an index you can use ``my_list.insert(index, list_item)`` or ``list.pop(index)`` for list removal, but these are slower. + +Sometimes its faster (but more memory hungry) to just rebuild the list. + + +Say you want to remove all triangle faces in a list. + +Rather than... + +.. code-block:: python + + faces = mesh.faces[:] # make a list copy of the meshes faces + f_idx = len(faces) # Loop backwards + while f_idx: # while the value is not 0 + f_idx -= 1 + + if len(faces[f_idx].vertices) == 3: + faces.pop(f_idx) # remove the triangle + + +It's faster to build a new list with list comprehension. + +.. code-block:: python + + faces = [f for f in mesh.faces if len(f.vertices) != 3] + + +Adding List Items +^^^^^^^^^^^^^^^^^ + +If you have a list that you want to add onto another list, rather then... + +.. code-block:: python + +for l in some_list: + my_list.append(l) + +Use... + +.. code-block:: python + + my_list.extend([a, b, c...]) + + +Note that insert can be used when needed, but it is slower than append especially when inserting at the start of a long list. + +This example shows a very sub-optimal way of making a reversed list. + + +.. code-block:: python + + reverse_list = [] + for list_item in some_list: + reverse_list.insert(0, list_item) + + +Removing List Items +^^^^^^^^^^^^^^^^^^^ + +Use ``my_list.pop(index)`` rather than ``my_list.remove(list_item)`` + +This requires you to have the index of the list item but is faster since ``remove()`` will search the list. + +Here is an example of how to remove items in 1 loop, removing the last items first, which is faster (as explained above). + +.. code-block:: python + + list_index = len(my_list) + + while list_index: + list_index -= 1 + if my_list[list_index].some_test_attribute == 1: + my_list.pop(list_index) + + +This example shows a fast way of removing items, for use in cases were where you can alter the list order without breaking the scripts functionality. This works by swapping 2 list items, so the item you remove is always last. + +.. code-block:: python + + pop_index = 5 + + # swap so the pop_index is last. + my_list[-1], my_list[pop_index] = my_list[pop_index], my_list[-1] + + # remove last item (pop_index) + my_list.pop() + + +When removing many items in a large list this can provide a good speedup. + + +Avoid Copying Lists +^^^^^^^^^^^^^^^^^^^ + +When passing a list/dictionary to a function, it is faster to have the function modify the list rather then returning a new list so python dosn't have tp duplicate the list in memory. + +Functions that modify a list in-place are more efficient then functions that create new lists. + + +This is generally slower so only use for functions when it makes sense not to modify the list in place. + +>>> my_list = some_list_func(my_list) + + +This is generally faster since there is no re-assignment and no list duplication. + +>>> some_list_func(vec) + + +Also note that passing a sliced list makes a copy of the list in python memory + +>>> foobar(my_list[:]) + +If my_list was a large array containing 10000's of items, a copy could use a lot of extra memory. + + +Writing Strings to a File (Python General) +------------------------------------------ + +Here are 3 ways of joining multiple strings into 1 string for writing + +This really applies to any area of your code that involves a lot of string joining. + + +Pythons string addition, *don't use if you can help it, especially when writing data in a loop.* + +>>> file.write(str1 + " " + str2 + " " + str3 + "\n") + + +String formatting. Use this when you're writing string data from floats and int's + +>>> file.write("%s %s %s\n" % (str1, str2, str3)) + + +Pythons string joining function. To join a list of strings + +>>> file.write(" ".join([str1, str2, str3, "\n"])) + + +join is fastest on many strings, string formatting is quite fast too (better for converting data types). String arithmetic is slowest. + + +Parsing Strings (Import/Exporting) +---------------------------------- + +Since many file formats are ASCII, the way you parse/export strings can make a large difference in how fast your script runs. + +When importing strings to make into blender there are a few ways to parse the string. + +Parsing Numbers +^^^^^^^^^^^^^^^ + +Use ``float(string)`` rather than ``eval(string)``, if you know the value will be an int then ``int(string)``, float() will work for an int too but its faster to read ints with int(). + +Checking String Start/End +^^^^^^^^^^^^^^^^^^^^^^^^^ + +If your checking the start of a string for a keyword, rather than... + +>>> if line[0:5] == "vert ": ... + +Use... + +>>> if line.startswith("vert "): + +Using ``startswith()`` is slightly faster (approx 5%) and also avoids a possible error with the slice length not matching the string length. + +my_string.endswith("foo_bar") can be used for line endings too. + +if your unsure whether the text is upper or lower case use lower or upper string function. + +>>> if line.lower().startswith("vert ") + + +Use try/except Sparingly +------------------------ + +The **try** statement useful to save time writing error checking code. + +However **try** is significantly slower then an **if** since an exception has to be set each time, so avoid using **try** in areas of your code that execute in a loop and runs many times. + +There are cases where using **try** is faster than checking weather the condition will raise an error, so it is worth experimenting. + + +Value Comparison +---------------- + +Python has two ways to compare values ``a == b`` and ``a is b``, The difference is that ``==`` may run the objects comparison function ``__cmp__()`` where as ``is`` compares identity, that both variables reference the same item in memory. + +In cases where you know you are checking for the same value which is referenced from multiple places, ``is`` is faster. + + +Time You're Code +---------------- + +While developing a script its good to time it to be aware of any changes in performance, this can be done simply. + +.. code-block:: python + + import time + time_start = time.time() + + # do something... + + print("My Script Finished: %.4f sec" % time.time() - time_start) diff --git a/doc/python_api/rst/info_gotcha.rst b/doc/python_api/rst/info_gotcha.rst index e7903dcf96a..b17debbb15c 100644 --- a/doc/python_api/rst/info_gotcha.rst +++ b/doc/python_api/rst/info_gotcha.rst @@ -223,6 +223,26 @@ While writing scripts that deal with armatures you may find you have to switch b This is mainly an issue with editmode since pose data can be manipulated without having to be in pose mode, however for operator access you may still need to enter pose mode. +Relative File Paths +=================== + +Blenders relative file paths are not compatible with standard python modules such as ``sys`` and ``os``. + +Built in python functions don't understand blenders ``//`` prefix which denotes the blend file path. + +A common case where you would run into this problem is when exporting a material with assosiated image paths. + +>>> bpy.path.abspath(image.filepath) + + +When using blender data from linked libraries there is an unfortunate complication since the path will be relative to the library rather then the open blend file. When the data block may be from an external blend file pass the library argument from the `bpy.types.ID`. + +>>> bpy.path.abspath(image.filepath, library=image.library) + + +These returns the absolute path which can be used with native python modules. + + Unicode Problems ================ From cc1ed7cbc503508c20a003b19ea569b575d328ed Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 13:54:47 +0000 Subject: [PATCH 048/119] fix/update for credits script and bad formatting in sphinx docs. --- doc/python_api/rst/info_best_practice.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/python_api/rst/info_best_practice.rst b/doc/python_api/rst/info_best_practice.rst index 2e5b5bd285c..180a9fd1aa3 100644 --- a/doc/python_api/rst/info_best_practice.rst +++ b/doc/python_api/rst/info_best_practice.rst @@ -121,8 +121,8 @@ If you have a list that you want to add onto another list, rather then... .. code-block:: python -for l in some_list: - my_list.append(l) + for l in some_list: + my_list.append(l) Use... From ea314902479a66149e8e548768e715f84c1f3b6c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 17 Oct 2011 14:44:21 +0000 Subject: [PATCH 049/119] update man before ahoy --- doc/manpage/blender.1 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/manpage/blender.1 b/doc/manpage/blender.1 index 20cd40e32ee..620a90e61d2 100644 --- a/doc/manpage/blender.1 +++ b/doc/manpage/blender.1 @@ -1,4 +1,4 @@ -.TH "BLENDER" "1" "September 22, 2011" "Blender Blender 2\&.59 (sub 3)" +.TH "BLENDER" "1" "October 17, 2011" "Blender Blender 2\&.60 (sub 0)" .SH NAME blender \- a 3D modelling and rendering package @@ -15,7 +15,7 @@ Use Blender to create TV commercials, to make technical visualizations, business http://www.blender.org .SH OPTIONS -Blender 2.59 (sub 3) +Blender 2.59 (sub 4) Usage: blender [args ...] [file] [args ...] .br .SS "Render Options:" @@ -382,6 +382,7 @@ Arguments are executed in the order they are given. eg \fIBLENDER_SYSTEM_DATAFILES\fR Directory for system wide data files. \fIBLENDER_SYSTEM_PYTHON\fR Directory for system python libraries. \fITMP\fR or \fITMPDIR\fR Store temporary files here. + \fISDL_AUDIODRIVER\fR LibSDL audio driver \- alsa, esd, dma. \fIPYTHONHOME\fR Path to the python directory, eg. /usr/lib/python. .br .br From b8da571036ee79cad6bb893c252d6879318d10c8 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 17 Oct 2011 15:07:08 +0000 Subject: [PATCH 050/119] Blender 2.60 release commit! New splash: thanks to Kent Trammell! And thanks to judges committee: Beorn Leonard, Pratik Solanki and Brandon Phoenix. Next: tag & build! --- source/blender/blenkernel/BKE_blender.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index f6910fede8e..18aa0d8e0ae 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -43,8 +43,8 @@ extern "C" { /* these lines are grep'd, watch out for our not-so-awesome regex * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ -#define BLENDER_VERSION 259 -#define BLENDER_SUBVERSION 4 +#define BLENDER_VERSION 260 +#define BLENDER_SUBVERSION 0 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 From d795b55b7329f515db5bc6f44cd47a2bff169de3 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Mon, 17 Oct 2011 15:09:23 +0000 Subject: [PATCH 051/119] BLENDER_VERSION_CYCLE: rc > release --- source/blender/blenkernel/BKE_blender.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 18aa0d8e0ae..e01586cb7d0 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -53,7 +53,7 @@ extern "C" { /* can be left blank, otherwise a,b,c... etc with no quotes */ #define BLENDER_VERSION_CHAR /* alpha/beta/rc/release, docs use this */ -#define BLENDER_VERSION_CYCLE rc +#define BLENDER_VERSION_CYCLE release struct ListBase; struct MemFile; From dc907ef876b128c9767394d00dfc719d55ba077e Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Mon, 17 Oct 2011 16:36:03 +0000 Subject: [PATCH 052/119] Allow symlinks in user_scripts, this fixes raised exeption in copy_prefs for version_updates --- release/scripts/startup/bl_operators/wm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 63104ca00c3..a539e2693c1 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1161,7 +1161,7 @@ class WM_OT_copy_prev_settings(Operator): elif not os.path.isdir(path_src): self.report({'ERROR'}, "Source path %r exists" % path_src) else: - shutil.copytree(path_src, path_dst) + shutil.copytree(path_src, path_dst, symlinks=True) # in 2.57 and earlier windows installers, system scripts were copied # into the configuration directory, don't want to copy those From 408a2c62b974c10c7d19ad419dfca479dec59f65 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 19 Oct 2011 00:41:48 +0000 Subject: [PATCH 053/119] fix for armatures in wire draw mode not displaying in solid mode. note, this isn't a showstopper bugfix. --- source/blender/editors/space_view3d/drawarmature.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index 83a695ba72a..eed86467eaa 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -1839,7 +1839,7 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base, } /* wire draw over solid only in posemode */ - if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || (arm->drawtype==ARM_LINE)) { + if ((dt <= OB_WIRE) || (arm->flag & ARM_POSEMODE) || ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) { /* draw line check first. we do selection indices */ if ELEM(arm->drawtype, ARM_LINE, ARM_WIRE) { if (arm->flag & ARM_POSEMODE) @@ -2512,7 +2512,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in if(v3d->flag2 & V3D_RENDER_OVERRIDE) return 1; - if(dt>OB_WIRE && arm->drawtype!=ARM_LINE) { + if(dt>OB_WIRE && !ELEM(arm->drawtype, ARM_LINE, ARM_WIRE)) { /* we use color for solid lighting */ glColorMaterial(GL_FRONT_AND_BACK, GL_SPECULAR); glEnable(GL_COLOR_MATERIAL); From 0d7bd0f9b63db4c7891137d18ae6a40e652e190f Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Wed, 19 Oct 2011 17:08:35 +0000 Subject: [PATCH 054/119] Adds an update flag to the bNode struct (similar to bNodeTree->update). This prevents access to non-existent typeinfo during type initialization, when node types have been removed and such nodes are deleted from older files. All blenkernel functions now only set the node->update flag instead of directly calling the update function. All operators, etc. calling blenkernel functions to modify nodes should make a ntreeUpdate call afterward (they already did that anyway). Editor/RNA/renderer/etc. high-level functions still can do immediate updates by using nodeUpdate and nodeUpdateID (replacing NodeTagChanged/NodeTagIDChanged respectively). These old functions were previously used only for setting compositor node needexec flags and clearing cached data, but have become generic update functions that require type-specific functionality (i.e. a valid typeinfo struct). --- source/blender/blenkernel/BKE_node.h | 7 ++- source/blender/blenkernel/intern/depsgraph.c | 2 +- source/blender/blenkernel/intern/image.c | 2 +- source/blender/blenkernel/intern/node.c | 52 +++++++++++-------- .../blender/editors/render/render_internal.c | 4 +- source/blender/editors/space_node/node_draw.c | 4 +- source/blender/editors/space_node/node_edit.c | 22 ++++---- .../blender/editors/space_node/space_node.c | 4 +- source/blender/makesdna/DNA_node_types.h | 11 +++- source/blender/makesrna/intern/rna_nodetree.c | 4 +- .../nodes/composite/node_composite_tree.c | 27 ++++++---- source/blender/nodes/intern/node_common.c | 6 ++- .../blender/nodes/shader/node_shader_tree.c | 7 ++- .../blender/nodes/texture/node_texture_tree.c | 2 +- .../blender/render/intern/source/pipeline.c | 2 +- 15 files changed, 92 insertions(+), 64 deletions(-) diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 1de3c295f4d..b75a8cb29ec 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -346,9 +346,8 @@ struct bNode *nodeGetActiveID(struct bNodeTree *ntree, short idtype); int nodeSetActiveID(struct bNodeTree *ntree, short idtype, struct ID *id); void nodeClearActiveID(struct bNodeTree *ntree, short idtype); -void NodeTagChanged(struct bNodeTree *ntree, struct bNode *node); -int NodeTagIDChanged(struct bNodeTree *ntree, struct ID *id); -void ntreeClearTags(struct bNodeTree *ntree); +void nodeUpdate(struct bNodeTree *ntree, struct bNode *node); +int nodeUpdateID(struct bNodeTree *ntree, struct ID *id); void nodeFreePreview(struct bNode *node); @@ -601,7 +600,7 @@ void ntreeCompositTagRender(struct Scene *sce); int ntreeCompositTagAnimated(struct bNodeTree *ntree); void ntreeCompositTagGenerators(struct bNodeTree *ntree); void ntreeCompositForceHidden(struct bNodeTree *ntree, struct Scene *scene); - +void ntreeCompositClearTags(struct bNodeTree *ntree); /* ************** TEXTURE NODES *************** */ diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 80a40c0a3a3..8d0c20ecc52 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1962,7 +1962,7 @@ static void dag_tag_renderlayers(Scene *sce, unsigned int lay) if(node->id==(ID *)sce) { SceneRenderLayer *srl= BLI_findlink(&sce->r.layers, node->custom1); if(srl && (srl->lay & lay_changed)) - NodeTagChanged(sce->nodetree, node); + nodeUpdate(sce->nodetree, node); } } } diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index cf8f96c143a..1de581034a4 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1514,7 +1514,7 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal) Scene *scene; for(scene= G.main->scene.first; scene; scene= scene->id.next) { if(scene->nodetree) { - NodeTagIDChanged(scene->nodetree, &ima->id); + nodeUpdateID(scene->nodetree, &ima->id); } } } diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index f0be3c99f13..a46b358798a 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -184,7 +184,7 @@ bNodeSocket *nodeAddSocket(bNodeTree *ntree, bNode *node, int in_out, const char else if (in_out==SOCK_OUT) BLI_addtail(&node->outputs, sock); - ntree->update |= NTREE_UPDATE_NODES; + node->update |= NODE_UPDATE; return sock; } @@ -197,7 +197,7 @@ bNodeSocket *nodeInsertSocket(bNodeTree *ntree, bNode *node, int in_out, bNodeSo else if (in_out==SOCK_OUT) BLI_insertlinkbefore(&node->outputs, next_sock, sock); - ntree->update |= NTREE_UPDATE_NODES; + node->update |= NODE_UPDATE; return sock; } @@ -221,7 +221,7 @@ void nodeRemoveSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock) MEM_freeN(sock->default_value); MEM_freeN(sock); - ntree->update |= NTREE_UPDATE_NODES; + node->update |= NODE_UPDATE; } void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node) @@ -246,7 +246,7 @@ void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node) BLI_freelistN(&node->outputs); - ntree->update |= NTREE_UPDATE_NODES; + node->update |= NODE_UPDATE; } /* finds a node based on its name */ @@ -823,7 +823,7 @@ void nodeUnlinkNode(bNodeTree *ntree, bNode *node) if(link->fromnode==node) { lb= &node->outputs; if (link->tonode) - NodeTagChanged(ntree, link->tonode); + link->tonode->update |= NODE_UPDATE; } else if(link->tonode==node) lb= &node->inputs; @@ -1495,18 +1495,19 @@ void ntreeUpdateTree(bNodeTree *ntree) /* update individual nodes */ for (n=0; n < totnodes; ++n) { node = deplist[n]; - if (ntreetype->update_node) - ntreetype->update_node(ntree, node); - else if (node->typeinfo->updatefunc) - node->typeinfo->updatefunc(ntree, node); + + /* node tree update tags override individual node update flags */ + if ((node->update & NODE_UPDATE) || (ntree->update & NTREE_UPDATE)) { + if (ntreetype->update_node) + ntreetype->update_node(ntree, node); + else if (node->typeinfo->updatefunc) + node->typeinfo->updatefunc(ntree, node); + } + /* clear update flag */ + node->update = 0; } MEM_freeN(deplist); - - /* ensures only a single output node is enabled, texnode allows multiple though */ - if(ntree->type!=NTREE_TEXTURE) - ntreeSetOutput(ntree); - } /* general tree updates */ @@ -1518,6 +1519,9 @@ void ntreeUpdateTree(bNodeTree *ntree) if (ntreetype->update) ntreetype->update(ntree); else { + /* Trees can be associated with a specific node type (i.e. group nodes), + * in that case a tree update function may be defined by that node type. + */ bNodeType *ntype= node_get_type(ntree, ntree->nodetype); if (ntype && ntype->updatetreefunc) ntype->updatetreefunc(ntree); @@ -1530,24 +1534,24 @@ void ntreeUpdateTree(bNodeTree *ntree) ntree->update = 0; } -void NodeTagChanged(bNodeTree *ntree, bNode *node) +void nodeUpdate(bNodeTree *ntree, bNode *node) { - bNodeTreeType *ntreetype = ntreeGetType(ntree->type); + bNodeTreeType *ntreetype= ntreeGetType(ntree->type); - /* extra null pointer checks here because this is called when unlinking - unknown nodes on file load, so typeinfo pointers may not be set */ - if (ntreetype && ntreetype->update_node) + if (ntreetype->update_node) ntreetype->update_node(ntree, node); - else if (node->typeinfo && node->typeinfo->updatefunc) + else if (node->typeinfo->updatefunc) node->typeinfo->updatefunc(ntree, node); + /* clear update flag */ + node->update = 0; } -int NodeTagIDChanged(bNodeTree *ntree, ID *id) +int nodeUpdateID(bNodeTree *ntree, ID *id) { bNodeTreeType *ntreetype; bNode *node; int change = FALSE; - + if(ELEM(NULL, id, ntree)) return change; @@ -1558,6 +1562,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id) if(node->id==id) { change = TRUE; ntreetype->update_node(ntree, node); + /* clear update flag */ + node->update = 0; } } } @@ -1567,6 +1573,8 @@ int NodeTagIDChanged(bNodeTree *ntree, ID *id) change = TRUE; if (node->typeinfo->updatefunc) node->typeinfo->updatefunc(ntree, node); + /* clear update flag */ + node->update = 0; } } } diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index 0b350e3afd0..d80f3fef125 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -398,13 +398,13 @@ static void render_endjob(void *rjv) ED_update_for_newframe(G.main, rj->scene, rj->win->screen, 1); /* XXX above function sets all tags in nodes */ - ntreeClearTags(rj->scene->nodetree); + ntreeCompositClearTags(rj->scene->nodetree); /* potentially set by caller */ rj->scene->r.scemode &= ~R_NO_FRAME_UPDATE; if(rj->srl) { - NodeTagIDChanged(rj->scene->nodetree, &rj->scene->id); + nodeUpdateID(rj->scene->nodetree, &rj->scene->id); WM_main_add_notifier(NC_NODE|NA_EDITED, rj->scene); } diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index e713ed5a678..baa47d4147e 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -102,12 +102,12 @@ void ED_node_changed_update(ID *id, bNode *node) WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, id); } else if(treetype==NTREE_COMPOSIT) { - NodeTagChanged(edittree, node); + nodeUpdate(edittree, node); /* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */ node= node_tree_get_editgroup(nodetree); if(node) - NodeTagIDChanged(nodetree, node->id); + nodeUpdateID(nodetree, node->id); WM_main_add_notifier(NC_SCENE|ND_NODES, id); } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index baa755ef841..85942901c00 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -496,17 +496,17 @@ void snode_set_context(SpaceNode *snode, Scene *scene) node_tree_from_ID(snode->id, &snode->nodetree, &snode->edittree, NULL); } -static void snode_tag_changed(SpaceNode *snode, bNode *node) +static void snode_update(SpaceNode *snode, bNode *node) { bNode *gnode; if (node) - NodeTagChanged(snode->edittree, node); + nodeUpdate(snode->edittree, node); /* if inside group, tag entire group */ gnode= node_tree_get_editgroup(snode->nodetree); if(gnode) - NodeTagIDChanged(snode->nodetree, gnode->id); + nodeUpdateID(snode->nodetree, gnode->id); } static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup) @@ -1775,7 +1775,7 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode) link->fromsock= sock; } ntreeUpdateTree(snode->edittree); - snode_tag_changed(snode, node); + snode_update(snode, node); } } } @@ -2127,7 +2127,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace) continue; } - snode_tag_changed(snode, node_to); + snode_update(snode, node_to); ++numlinks; break; } @@ -2175,7 +2175,7 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate if(node->id) id_us_plus(node->id); - snode_tag_changed(snode, node); + snode_update(snode, node); } if(snode->nodetree->type==NTREE_TEXTURE) { @@ -2412,7 +2412,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) case MIDDLEMOUSE: if(link->tosock && link->fromsock) { /* send changed events for original tonode and new */ - snode_tag_changed(snode, link->tonode); + snode_update(snode, link->tonode); /* we might need to remove a link */ if(in_out==SOCK_OUT) @@ -2495,7 +2495,7 @@ static int node_link_init(SpaceNode *snode, bNodeLinkDrag *nldrag) if(link) { /* send changed event to original tonode */ if(link->tonode) - snode_tag_changed(snode, link->tonode); + snode_update(snode, link->tonode); nldrag->node= link->fromnode; nldrag->sock= link->fromsock; @@ -2663,7 +2663,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) next= link->next; if(cut_links_intersect(link, mcoords, i)) { - snode_tag_changed(snode, link->tonode); + snode_update(snode, link->tonode); nodeRemLink(snode->edittree, link); } } @@ -2794,7 +2794,7 @@ void ED_node_link_insert(ScrArea *sa) nodeAddLink(snode->edittree, select, socket_best_match(&select->outputs, sockto->type), node, sockto); ntreeUpdateTree(snode->edittree); /* needed for pointers */ - snode_tag_changed(snode, select); + snode_update(snode, select); ED_node_changed_update(snode->id, select); } } @@ -3198,7 +3198,7 @@ static int node_mute_exec(bContext *C, wmOperator *UNUSED(op)) /* Be able to mute in-/output nodes as well. - DingTo if(node->inputs.first && node->outputs.first) { */ node->flag ^= NODE_MUTED; - snode_tag_changed(snode, node); + snode_update(snode, node); } } diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 9c4581a43da..1047e906a10 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -244,10 +244,10 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) if(type==NTREE_COMPOSIT) { Scene *scene= wmn->window->screen->scene; - /* note that NodeTagIDChanged is already called by BKE_image_signal() on all + /* note that nodeUpdateID is already called by BKE_image_signal() on all * scenes so really this is just to know if the images is used in the compo else * painting on images could become very slow when the compositor is open. */ - if(NodeTagIDChanged(scene->nodetree, wmn->reference)) + if(nodeUpdateID(scene->nodetree, wmn->reference)) ED_area_tag_refresh(sa); } } diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 4cfd0b56b70..f03cc200a56 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -154,7 +154,9 @@ typedef struct bNode { float locx, locy; /* root offset for drawing */ float width, height; /* node custom width and height */ float miniwidth; /* node width if hidden */ - int pad; + + int update; /* update flags */ + char label[32]; /* custom user-defined label */ short custom1, custom2; /* to be abused for buttons */ float custom3, custom4; @@ -192,6 +194,13 @@ typedef struct bNode { /* automatic flag for nodes included in transforms */ #define NODE_TRANSFORM (1<<13) +/* node->update */ +/* XXX NODE_UPDATE is a generic update flag. More fine-grained updates + * might be used in the future, but currently all work the same way. + */ +#define NODE_UPDATE 0xFFFF /* generic update flag (includes all others) */ +#define NODE_UPDATE_ID 1 /* associated id data block has changed */ + typedef struct bNodeLink { struct bNodeLink *next, *prev; diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 061a21056d0..7d20378d55e 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -568,7 +568,7 @@ static bNode *rna_NodeTree_node_new(bNodeTree *ntree, bContext *UNUSED(C), Repor } else { ntreeUpdateTree(ntree); /* update group node socket links*/ - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); WM_main_add_notifier(NC_NODE|NA_EDITED, ntree); if (group) @@ -651,7 +651,7 @@ static bNodeLink *rna_NodeTree_link_new(bNodeTree *ntree, ReportList *reports, b ret= nodeAddLink(ntree, fromnode, in, tonode, out); if(ret) { - NodeTagChanged(ntree, tonode); + nodeUpdate(ntree, tonode); ntreeUpdateTree(ntree); diff --git a/source/blender/nodes/composite/node_composite_tree.c b/source/blender/nodes/composite/node_composite_tree.c index 5c58070be9d..6f4939ecbdd 100644 --- a/source/blender/nodes/composite/node_composite_tree.c +++ b/source/blender/nodes/composite/node_composite_tree.c @@ -183,6 +183,11 @@ static void local_merge(bNodeTree *localtree, bNodeTree *ntree) } } +static void update(bNodeTree *ntree) +{ + ntreeSetOutput(ntree); +} + bNodeTreeType ntreeType_Composite = { /* type */ NTREE_COMPOSIT, /* idname */ "NTCompositing Nodetree", @@ -195,7 +200,7 @@ bNodeTreeType ntreeType_Composite = { /* localize */ localize, /* local_sync */ local_sync, /* local_merge */ local_merge, - /* update */ NULL, + /* update */ update, /* update_node */ update_node }; @@ -716,9 +721,9 @@ void ntreeCompositTagRender(Scene *curscene) for(node= sce->nodetree->nodes.first; node; node= node->next) { if(node->id==(ID *)curscene || node->type==CMP_NODE_COMPOSITE) - NodeTagChanged(sce->nodetree, node); + nodeUpdate(sce->nodetree, node); else if(node->type==CMP_NODE_TEXTURE) /* uses scene sizex/sizey */ - NodeTagChanged(sce->nodetree, node); + nodeUpdate(sce->nodetree, node); } } } @@ -745,7 +750,7 @@ static int node_animation_properties(bNodeTree *ntree, bNode *node) for (index=0; indextype==CMP_NODE_IMAGE) { Image *ima= (Image *)node->id; if(ima && ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); tagged= 1; } } else if(node->type==CMP_NODE_TIME) { - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); tagged= 1; } /* here was tag render layer, but this is called after a render, so re-composites fail */ else if(node->type==NODE_GROUP) { if( ntreeCompositTagAnimated((bNodeTree *)node->id) ) { - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); } } } @@ -818,12 +823,12 @@ void ntreeCompositTagGenerators(bNodeTree *ntree) for(node= ntree->nodes.first; node; node= node->next) { if( ELEM(node->type, CMP_NODE_R_LAYERS, CMP_NODE_IMAGE)) - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); } } /* XXX after render animation system gets a refresh, this call allows composite to end clean */ -void ntreeClearTags(bNodeTree *ntree) +void ntreeCompositClearTags(bNodeTree *ntree) { bNode *node; @@ -832,6 +837,6 @@ void ntreeClearTags(bNodeTree *ntree) for(node= ntree->nodes.first; node; node= node->next) { node->need_exec= 0; if(node->type==NODE_GROUP) - ntreeClearTags((bNodeTree *)node->id); + ntreeCompositClearTags((bNodeTree *)node->id); } } diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c index 56f80840112..4dbf4b96b74 100644 --- a/source/blender/nodes/intern/node_common.c +++ b/source/blender/nodes/intern/node_common.c @@ -239,9 +239,11 @@ bNode *node_group_make_from_selected(bNodeTree *ntree) } } + /* update of the group tree */ ngroup->update |= NTREE_UPDATE; ntreeUpdateTree(ngroup); - ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS; + /* update of the tree containing the group instance node */ + ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS; ntreeUpdateTree(ntree); return gnode; @@ -559,7 +561,7 @@ int node_group_ungroup(bNodeTree *ntree, bNode *gnode) /* free the group tree (takes care of user count) */ free_libblock(&G.main->nodetree, wgroup); - ntree->update |= NTREE_UPDATE_NODES|NTREE_UPDATE_LINKS; + ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS; ntreeUpdateTree(ntree); return 1; diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index 28f0f983454..9f3e7ce3c73 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -85,6 +85,11 @@ static void local_sync(bNodeTree *localtree, bNodeTree *ntree) } } +static void update(bNodeTree *ntree) +{ + ntreeSetOutput(ntree); +} + bNodeTreeType ntreeType_Shader = { /* type */ NTREE_SHADER, /* id_name */ "NTShader Nodetree", @@ -97,7 +102,7 @@ bNodeTreeType ntreeType_Shader = { /* localize */ NULL, /* local_sync */ local_sync, /* local_merge */ NULL, - /* update */ NULL, + /* update */ update, /* update_node */ NULL }; diff --git a/source/blender/nodes/texture/node_texture_tree.c b/source/blender/nodes/texture/node_texture_tree.c index 603aa7ceb77..2b016177820 100644 --- a/source/blender/nodes/texture/node_texture_tree.c +++ b/source/blender/nodes/texture/node_texture_tree.c @@ -108,7 +108,7 @@ int ntreeTexTagAnimated(bNodeTree *ntree) for(node= ntree->nodes.first; node; node= node->next) { if(node->type==TEX_NODE_CURVE_TIME) { - NodeTagChanged(ntree, node); + nodeUpdate(ntree, node); return 1; } else if(node->type==NODE_GROUP) { diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 7835ae6dcd3..19dc0538dba 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2261,7 +2261,7 @@ static void ntree_render_scenes(Render *re) restore_scene= (scene != re->scene); node->id->flag &= ~LIB_DOIT; - NodeTagChanged(re->scene->nodetree, node); + nodeUpdate(re->scene->nodetree, node); } } } From c97aa671f4f5082d61f5e8f08281323e514708d0 Mon Sep 17 00:00:00 2001 From: Peter Schlaile Date: Wed, 19 Oct 2011 18:21:08 +0000 Subject: [PATCH 055/119] == Sequencer == do_versions fix: hd audio tracks within metastrips were not properly upgraded from 2.49 files, resulting in broken unusable tracks, which were rendered as black strips as a bonus. --- source/blender/blenloader/intern/readfile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index dfaf96a6066..a6474fb5044 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -10215,8 +10215,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) { if(scene->ed && scene->ed->seqbasep) { - for(seq = scene->ed->seqbasep->first; seq; seq = seq->next) - { + SEQ_BEGIN(scene->ed, seq) { if(seq->type == SEQ_HD_SOUND) { char str[FILE_MAX]; @@ -10236,6 +10235,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) seq->strip->dir); } } + SEQ_END } } From 4d2a28c2a9408463b182e67c47accb31b8ea7df9 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Wed, 19 Oct 2011 18:46:16 +0000 Subject: [PATCH 056/119] Revert own commit 41026. It now had issues when hiding menus with the - icon, space selector disappeared. I am sorry for that, but I consider this a show stopper eventually. :( This commit introduces the issue with narrowed verts/edge/face select in solid/edit mode again. --- release/scripts/startup/bl_ui/space_view3d.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index e4beee66871..c6a26cd9bbf 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -56,9 +56,9 @@ class VIEW3D_HT_header(Header): # Contains buttons like Mode, Pivot, Manipulator, Layer, Mesh Select Mode... - layout.template_header_3D() + row = layout.row() #XXX Narrowed down vert/edge/face selector in edit mode/solid drawmode. -DingTo + row.template_header_3D() - row = layout.row() if obj: # Particle edit if obj.mode == 'PARTICLE_EDIT': From c661a4b1ab80162d0fac4fd0e2066b806e2acdce Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Wed, 19 Oct 2011 19:12:41 +0000 Subject: [PATCH 057/119] OSX: set at least initial OMP_NUM_THREADS value to avoid warnings in log, remove applescript for now --- source/darwin/blender.app/Contents/Info.plist | 2 +- .../Contents/Info.plist | 44 ------------------ .../Contents/MacOS/applet | Bin 34480 -> 0 bytes .../Contents/PkgInfo | 1 - .../Contents/Resources/Scripts/main.scpt | Bin 4696 -> 0 bytes .../Contents/Resources/applet.icns | Bin 40291 -> 0 bytes .../Contents/Resources/applet.rsrc | Bin 362 -> 0 bytes .../Resources/description.rtfd/TXT.rtf | 4 -- .../set_simulation_threads_applescript.scpt | Bin 5144 -> 0 bytes 9 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist delete mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet delete mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc delete mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf delete mode 100644 source/darwin/set_simulation_threads_applescript.scpt diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist index 9aeb617a051..37920dc8181 100644 --- a/source/darwin/blender.app/Contents/Info.plist +++ b/source/darwin/blender.app/Contents/Info.plist @@ -46,7 +46,7 @@ LSEnvironment OMP_NUM_THREADS - + 4 diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist deleted file mode 100644 index 44d6783599c..00000000000 --- a/source/darwin/set_simulation_threads.app/Contents/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleAllowMixedLocalizations - - CFBundleDevelopmentRegion - English - CFBundleExecutable - applet - CFBundleIconFile - applet - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - set_simulation_threads - CFBundlePackageType - APPL - CFBundleSignature - aplt - LSMinimumSystemVersionByArchitecture - - x86_64 - 10.6 - - LSRequiresCarbon - - WindowState - - dividerCollapsed - - eventLogLevel - -1 - name - ScriptWindowState - positionOfDivider - 470 - savedFrame - 199 169 1197 810 0 0 1920 1178 - selectedTabView - result - - - diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet deleted file mode 100755 index 0079f4b19d448615de26af5c84a0a6195d511bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34480 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 JH;*3O`xk#M8>j#P diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns deleted file mode 100644 index fcc1f09273d73cb424494118a39d8b391ce00bcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40291 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 From f6f9288f353eed07cb298a7be3585f0bf3f620dd Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Wed, 19 Oct 2011 19:15:35 +0000 Subject: [PATCH 058/119] replace former applescript with an editable one --- .../Contents/Info.plist | 44 ++++++++++++++++++ .../Contents/MacOS/applet | Bin 0 -> 34480 bytes .../Contents/PkgInfo | 1 + .../Contents/Resources/Scripts/main.scpt | Bin 0 -> 7664 bytes .../Contents/Resources/applet.icns | Bin 0 -> 40291 bytes .../Contents/Resources/applet.rsrc | Bin 0 -> 362 bytes .../Resources/description.rtfd/TXT.rtf | 4 ++ 7 files changed, 49 insertions(+) create mode 100644 source/darwin/set_simulation_threads.app/Contents/Info.plist create mode 100755 source/darwin/set_simulation_threads.app/Contents/MacOS/applet create mode 100644 source/darwin/set_simulation_threads.app/Contents/PkgInfo create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/Scripts/main.scpt create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/applet.rsrc create mode 100644 source/darwin/set_simulation_threads.app/Contents/Resources/description.rtfd/TXT.rtf diff --git a/source/darwin/set_simulation_threads.app/Contents/Info.plist b/source/darwin/set_simulation_threads.app/Contents/Info.plist new file mode 100644 index 00000000000..eb80955e5a6 --- /dev/null +++ b/source/darwin/set_simulation_threads.app/Contents/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + English + CFBundleExecutable + applet + CFBundleIconFile + applet + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + set_simulation_threads + CFBundlePackageType + APPL + CFBundleSignature + aplt + LSMinimumSystemVersionByArchitecture + + x86_64 + 10.6 + + LSRequiresCarbon + + WindowState + + dividerCollapsed + + eventLogLevel + -1 + name + ScriptWindowState + positionOfDivider + 493 + savedFrame + 698 332 1163 846 0 0 1920 1178 + selectedTabView + result + + + diff --git a/source/darwin/set_simulation_threads.app/Contents/MacOS/applet b/source/darwin/set_simulation_threads.app/Contents/MacOS/applet new file mode 100755 index 0000000000000000000000000000000000000000..0079f4b19d448615de26af5c84a0a6195d511bfc GIT binary patch literal 34480 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 NiLRCRZQFMLe*l(L>tFx? literal 0 HcmV?d00001 diff --git a/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns b/source/darwin/set_simulation_threads.app/Contents/Resources/applet.icns new file mode 100644 index 0000000000000000000000000000000000000000..fcc1f09273d73cb424494118a39d8b391ce00bcc GIT binary patch literal 40291 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 Date: Wed, 19 Oct 2011 21:55:27 +0000 Subject: [PATCH 059/119] pass -noaudio when running blender for various utilities - doc-gen and tests. --- GNUmakefile | 6 +++--- doc/blender_file_format/BlendFileDnaExporter_25.py | 6 +++--- doc/blender_file_format/README | 6 +++--- doc/python_api/sphinx_doc_gen.py | 4 ++-- doc/python_api/sphinx_doc_gen.sh | 2 +- source/blender/makesrna/rna_cleanup/rna_cleaner.py | 2 +- source/blender/makesrna/rna_cleanup/rna_update.sh | 2 +- source/tests/CMakeLists.txt | 2 +- source/tests/rna_info_dump.py | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index af953143b82..c68c8684687 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -174,7 +174,7 @@ package_archive: # Other Targets # translations: - $(BUILD_DIR)/bin/blender --background --factory-startup --python po/update_msg.py + $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python po/update_msg.py python3 po/update_pot.py python3 po/update_po.py python3 po/update_mo.py @@ -238,12 +238,12 @@ check_sparse: # Simple version of ./doc/python_api/sphinx_doc_gen.sh with no PDF generation. doc_py: - $(BUILD_DIR)/bin/blender --background --factory-startup --python doc/python_api/sphinx_doc_gen.py + $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py cd doc/python_api ; sphinx-build -n -b html sphinx-in sphinx-out @echo "docs written into: '$(BLENDER_DIR)/doc/python_api/sphinx-out/contents.html'" doc_dna: - $(BUILD_DIR)/bin/blender --background --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py + $(BUILD_DIR)/bin/blender --background -noaudio --factory-startup --python doc/blender_file_format/BlendFileDnaExporter_25.py @echo "docs written into: '$(BLENDER_DIR)/doc/blender_file_format/dna.html'" doc_man: diff --git a/doc/blender_file_format/BlendFileDnaExporter_25.py b/doc/blender_file_format/BlendFileDnaExporter_25.py index 988c992fd78..bc5b2e73c7e 100755 --- a/doc/blender_file_format/BlendFileDnaExporter_25.py +++ b/doc/blender_file_format/BlendFileDnaExporter_25.py @@ -379,15 +379,15 @@ class DNACatalogHTML: def usage(): - print("\nUsage: \n\tblender2.5 -b -P BlendFileDnaExporter_25.py [-- [options]]") + print("\nUsage: \n\tblender2.5 --background -noaudio --python BlendFileDnaExporter_25.py [-- [options]]") print("Options:") print("\t--dna-keep-blend: doesn't delete the produced blend file DNA export to html") print("\t--dna-debug: sets the logging level to DEBUG (lots of additional info)") print("\t--dna-versioned saves version informations in the html and blend filenames") print("\t--dna-overwrite-css overwrite dna.css, useful when modifying css in the script") print("Examples:") - print("\tdefault: % blender2.5 -b -P BlendFileDnaExporter_25.py") - print("\twith options: % blender2.5 -b -P BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug\n") + print("\tdefault: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py") + print("\twith options: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug\n") ###################################################### diff --git a/doc/blender_file_format/README b/doc/blender_file_format/README index 55dc3b83e49..f28d4b3f6b6 100644 --- a/doc/blender_file_format/README +++ b/doc/blender_file_format/README @@ -16,14 +16,14 @@ Below you have the help message with a list of options you can use. Usage: - blender2.5 -b -P BlendFileDnaExporter_25.py [-- [options]] + blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py [-- [options]] Options: --dna-keep-blend: doesn't delete the produced blend file DNA export to html --dna-debug: sets the logging level to DEBUG (lots of additional info) --dna-versioned saves version informations in the html and blend filenames --dna-overwrite-css overwrite dna.css, useful when modifying css in the script Examples: - default: % blender2.5 -b -P BlendFileDnaExporter_25.py - with options: % blender2.5 -b -P BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug + default: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py + with options: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 2ccf67e2db4..017c2acc363 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -27,7 +27,7 @@ For HTML generation ------------------- - Run this script from blenders root path once you have compiled blender - ./blender.bin --background --python doc/python_api/sphinx_doc_gen.py + ./blender.bin --background -noaudio --python doc/python_api/sphinx_doc_gen.py This will generate python files in doc/python_api/sphinx-in/ providing ./blender.bin is or links to the blender executable @@ -94,7 +94,7 @@ else: # for quick rebuilds """ rm -rf /b/doc/python_api/sphinx-* && \ -./blender.bin --background --factory-startup --python doc/python_api/sphinx_doc_gen.py && \ +./blender.bin --background -noaudio --factory-startup --python doc/python_api/sphinx_doc_gen.py && \ sphinx-build doc/python_api/sphinx-in doc/python_api/sphinx-out """ diff --git a/doc/python_api/sphinx_doc_gen.sh b/doc/python_api/sphinx_doc_gen.sh index 307476d9a92..fad9bfbbf90 100755 --- a/doc/python_api/sphinx_doc_gen.sh +++ b/doc/python_api/sphinx_doc_gen.sh @@ -48,7 +48,7 @@ SPHINXBASE=doc/python_api if $DO_EXE_BLENDER ; then # dont delete existing docs, now partial updates are used for quick builds. - $BLENDER --background --factory-startup --python $SPHINXBASE/sphinx_doc_gen.py + $BLENDER --background -noaudio --factory-startup --python $SPHINXBASE/sphinx_doc_gen.py fi diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py index 5df6e9a86ff..ca610eeb024 100755 --- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py +++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py @@ -8,7 +8,7 @@ Typical line in the input file (elements in [] are optional). [comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target] Geterate output format from blender run this: - ./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt + ./blender.bin --background -noaudio --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt """ diff --git a/source/blender/makesrna/rna_cleanup/rna_update.sh b/source/blender/makesrna/rna_cleanup/rna_update.sh index a4d686cc482..e3119191cb2 100755 --- a/source/blender/makesrna/rna_cleanup/rna_update.sh +++ b/source/blender/makesrna/rna_cleanup/rna_update.sh @@ -1,5 +1,5 @@ cd ../../../../ -./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt +./blender.bin --background -noaudio --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt cd ./source/blender/makesrna/rna_cleanup/ ./rna_cleaner.py out.txt ./rna_cleaner.py rna_properties.txt diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt index c5a6831a4cb..64cc79de879 100644 --- a/source/tests/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -43,7 +43,7 @@ else() endif() # for testing with valgrind prefix: valgrind --track-origins=yes --error-limit=no -set(TEST_BLENDER_EXE ${TEST_BLENDER_EXE} --background --factory-startup --env-system-scripts ${CMAKE_SOURCE_DIR}/release/scripts) +set(TEST_BLENDER_EXE ${TEST_BLENDER_EXE} --background -noaudio --factory-startup --env-system-scripts ${CMAKE_SOURCE_DIR}/release/scripts) # ------------------------------------------------------------------------------ diff --git a/source/tests/rna_info_dump.py b/source/tests/rna_info_dump.py index 62c1248d733..293c02dfb84 100644 --- a/source/tests/rna_info_dump.py +++ b/source/tests/rna_info_dump.py @@ -19,7 +19,7 @@ # # Used for generating API diff's between releases -# ./blender.bin --background --python release/test/rna_info_dump.py +# ./blender.bin --background -noaudio --python release/test/rna_info_dump.py import bpy From 0e66576f02afebdb4016249a9d7013ee5c1f0c36 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 19 Oct 2011 22:40:03 +0000 Subject: [PATCH 060/119] replace RNA function string lookups with direct assignments, currently the lookup returns the same pointer every time. some of these functions - panel/operator poll for eg, are called many times per redraw so while not a bottleneck its unnecessary. --- .../blender/makesrna/intern/rna_animation.c | 12 ++++++-- source/blender/makesrna/intern/rna_render.c | 4 ++- source/blender/makesrna/intern/rna_ui.c | 24 ++++++++++++---- source/blender/makesrna/intern/rna_wm.c | 28 ++++++++++++++----- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c index ebf8990adf3..21e99d312d6 100644 --- a/source/blender/makesrna/intern/rna_animation.c +++ b/source/blender/makesrna/intern/rna_animation.c @@ -80,6 +80,8 @@ static void rna_AnimData_action_set(PointerRNA *ptr, PointerRNA value) /* wrapper for poll callback */ static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C) { + extern FunctionRNA rna_KeyingSetInfo_poll_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; @@ -87,7 +89,7 @@ static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C) int ok; RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr); - func= RNA_struct_find_function(&ptr, "poll"); + func= &rna_KeyingSetInfo_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); /* hook up arguments */ @@ -108,12 +110,14 @@ static int RKS_POLL_rna_internal(KeyingSetInfo *ksi, bContext *C) /* wrapper for iterator callback */ static void RKS_ITER_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks) { + extern FunctionRNA rna_KeyingSetInfo_iterator_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr); - func= RNA_struct_find_function(&ptr, "iterator"); + func= &rna_KeyingSetInfo_iterator_func; /* RNA_struct_find_function(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); /* hook up arguments */ @@ -129,12 +133,14 @@ static void RKS_ITER_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks /* wrapper for generator callback */ static void RKS_GEN_rna_internal(KeyingSetInfo *ksi, bContext *C, KeyingSet *ks, PointerRNA *data) { + extern FunctionRNA rna_KeyingSetInfo_generate_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; RNA_pointer_create(NULL, ksi->ext.srna, ksi, &ptr); - func= RNA_struct_find_function(&ptr, "generate"); + func= &rna_KeyingSetInfo_generate_func; /* RNA_struct_find_generate(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); /* hook up arguments */ diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index f5fab9d2f33..a2e68668856 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -88,12 +88,14 @@ void RE_engines_exit(void) static void engine_render(RenderEngine *engine, struct Scene *scene) { + extern FunctionRNA rna_RenderEngine_render_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr); - func= RNA_struct_find_function(&ptr, "render"); + func= &rna_RenderEngine_render_func; /* RNA_struct_find_function(&ptr, "render"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "scene", &scene); diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 2c2bc4704bf..2a62a39ef33 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -95,6 +95,8 @@ static ARegionType *region_type_find(ReportList *reports, int space_type, int re static int panel_poll(const bContext *C, PanelType *pt) { + extern FunctionRNA rna_Panel_poll_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; @@ -102,7 +104,7 @@ static int panel_poll(const bContext *C, PanelType *pt) int visible; RNA_pointer_create(NULL, pt->ext.srna, NULL, &ptr); /* dummy */ - func= RNA_struct_find_function(&ptr, "poll"); + func= &rna_Panel_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -118,12 +120,14 @@ static int panel_poll(const bContext *C, PanelType *pt) static void panel_draw(const bContext *C, Panel *pnl) { + extern FunctionRNA rna_Panel_draw_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; RNA_pointer_create(&CTX_wm_screen(C)->id, pnl->type->ext.srna, pnl, &ptr); - func= RNA_struct_find_function(&ptr, "draw"); + func= &rna_Panel_draw_func;/* RNA_struct_find_function(&ptr, "draw"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -134,12 +138,14 @@ static void panel_draw(const bContext *C, Panel *pnl) static void panel_draw_header(const bContext *C, Panel *pnl) { + extern FunctionRNA rna_Panel_draw_header_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; RNA_pointer_create(&CTX_wm_screen(C)->id, pnl->type->ext.srna, pnl, &ptr); - func= RNA_struct_find_function(&ptr, "draw_header"); + func= &rna_Panel_draw_header_func; /* RNA_struct_find_function(&ptr, "draw_header"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -249,12 +255,14 @@ static StructRNA* rna_Panel_refine(PointerRNA *ptr) static void header_draw(const bContext *C, Header *hdr) { + extern FunctionRNA rna_Header_draw_func; + PointerRNA htr; ParameterList list; FunctionRNA *func; RNA_pointer_create(&CTX_wm_screen(C)->id, hdr->type->ext.srna, hdr, &htr); - func= RNA_struct_find_function(&htr, "draw"); + func= &rna_Header_draw_func; /* RNA_struct_find_function(&htr, "draw"); */ RNA_parameter_list_create(&list, &htr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -347,6 +355,8 @@ static StructRNA* rna_Header_refine(PointerRNA *htr) static int menu_poll(const bContext *C, MenuType *pt) { + extern FunctionRNA rna_Menu_poll_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; @@ -354,7 +364,7 @@ static int menu_poll(const bContext *C, MenuType *pt) int visible; RNA_pointer_create(NULL, pt->ext.srna, NULL, &ptr); /* dummy */ - func= RNA_struct_find_function(&ptr, "poll"); + func= &rna_Menu_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -370,12 +380,14 @@ static int menu_poll(const bContext *C, MenuType *pt) static void menu_draw(const bContext *C, Menu *hdr) { + extern FunctionRNA rna_Menu_draw_func; + PointerRNA mtr; ParameterList list; FunctionRNA *func; RNA_pointer_create(&CTX_wm_screen(C)->id, hdr->type->ext.srna, hdr, &mtr); - func= RNA_struct_find_function(&mtr, "draw"); + func= &rna_Menu_draw_func; /* RNA_struct_find_function(&mtr, "draw"); */ RNA_parameter_list_create(&list, &mtr, func); RNA_parameter_set_lookup(&list, "context", &C); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index e9df79acd4a..f8383b1d451 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -762,6 +762,8 @@ static void rna_Operator_unregister(struct Main *bmain, StructRNA *type) static int operator_poll(bContext *C, wmOperatorType *ot) { + extern FunctionRNA rna_Operator_poll_func; + PointerRNA ptr; ParameterList list; FunctionRNA *func; @@ -769,7 +771,7 @@ static int operator_poll(bContext *C, wmOperatorType *ot) int visible; RNA_pointer_create(NULL, ot->ext.srna, NULL, &ptr); /* dummy */ - func= RNA_struct_find_function(&ptr, "poll"); + func= &rna_Operator_poll_func; /* RNA_struct_find_function(&ptr, "poll"); */ RNA_parameter_list_create(&list, &ptr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -785,6 +787,8 @@ static int operator_poll(bContext *C, wmOperatorType *ot) static int operator_execute(bContext *C, wmOperator *op) { + extern FunctionRNA rna_Operator_execute_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; @@ -792,7 +796,7 @@ static int operator_execute(bContext *C, wmOperator *op) int result; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "execute"); + func= &rna_Operator_execute_func; /* RNA_struct_find_function(&opr, "execute"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -809,6 +813,8 @@ static int operator_execute(bContext *C, wmOperator *op) /* same as execute() but no return value */ static int operator_check(bContext *C, wmOperator *op) { + extern FunctionRNA rna_Operator_check_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; @@ -816,7 +822,7 @@ static int operator_check(bContext *C, wmOperator *op) int result; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "check"); + func= &rna_Operator_check_func; /* RNA_struct_find_function(&opr, "check"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -832,6 +838,8 @@ static int operator_check(bContext *C, wmOperator *op) static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) { + extern FunctionRNA rna_Operator_invoke_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; @@ -839,7 +847,7 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) int result; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "invoke"); + func= &rna_Operator_invoke_func; /* RNA_struct_find_function(&opr, "invoke"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -857,6 +865,8 @@ static int operator_invoke(bContext *C, wmOperator *op, wmEvent *event) /* same as invoke */ static int operator_modal(bContext *C, wmOperator *op, wmEvent *event) { + extern FunctionRNA rna_Operator_modal_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; @@ -864,7 +874,7 @@ static int operator_modal(bContext *C, wmOperator *op, wmEvent *event) int result; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "modal"); + func= &rna_Operator_modal_func; /* RNA_struct_find_function(&opr, "modal"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -881,12 +891,14 @@ static int operator_modal(bContext *C, wmOperator *op, wmEvent *event) static void operator_draw(bContext *C, wmOperator *op) { + extern FunctionRNA rna_Operator_draw_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "draw"); + func= &rna_Operator_draw_func; /* RNA_struct_find_function(&opr, "draw"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); @@ -898,6 +910,8 @@ static void operator_draw(bContext *C, wmOperator *op) /* same as exec(), but call cancel */ static int operator_cancel(bContext *C, wmOperator *op) { + extern FunctionRNA rna_Operator_cancel_func; + PointerRNA opr; ParameterList list; FunctionRNA *func; @@ -905,7 +919,7 @@ static int operator_cancel(bContext *C, wmOperator *op) int result; RNA_pointer_create(&CTX_wm_screen(C)->id, op->type->ext.srna, op, &opr); - func= RNA_struct_find_function(&opr, "cancel"); + func= &rna_Operator_cancel_func; /* RNA_struct_find_function(&opr, "cancel"); */ RNA_parameter_list_create(&list, &opr, func); RNA_parameter_set_lookup(&list, "context", &C); From 364fcde86d3cdcb09d075a0445fc2e1eb64170d5 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Wed, 19 Oct 2011 23:04:48 +0000 Subject: [PATCH 061/119] #fix: Saving OpenEXR images as floats ignores color profile. This was not noticable in renderer because it works in linear color space. Painting on the image editor, saving and reloading was problematic though. --- .../imbuf/intern/openexr/openexr_api.cpp | 54 ++++++++++++++----- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index e064d7f760d..aa7defb2f39 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -342,27 +342,55 @@ static int imb_save_openexr_float(struct ImBuf *ibuf, const char *name, int flag FrameBuffer frameBuffer; OutputFile *file = new OutputFile(name, header); - int xstride = sizeof(float) * channels; - int ystride = - xstride*width; - float *rect[4] = {NULL, NULL, NULL, NULL}; + int xstride = sizeof(float) * 4; + int ystride = xstride*width; + float *init_to = new float [4 * width*height * sizeof(float)]; + float *from, *to = init_to; - /* last scanline, stride negative */ - rect[0]= ibuf->rect_float + channels*(height-1)*width; - rect[1]= rect[0]+1; - rect[2]= rect[0]+2; - rect[3]= (channels >= 4)? rect[0]+3:rect[0]; /* red as alpha, is this needed since alpha isnt written? */ - - frameBuffer.insert ("R", Slice (FLOAT, (char *)rect[0], xstride, ystride)); - frameBuffer.insert ("G", Slice (FLOAT, (char *)rect[1], xstride, ystride)); - frameBuffer.insert ("B", Slice (FLOAT, (char *)rect[2], xstride, ystride)); + frameBuffer.insert ("R", Slice (FLOAT, (char *)init_to, xstride, ystride)); + frameBuffer.insert ("G", Slice (FLOAT, (char *)(init_to + 1), xstride, ystride)); + frameBuffer.insert ("B", Slice (FLOAT, (char *)(init_to + 2), xstride, ystride)); if (ibuf->depth==32 && channels >= 4) - frameBuffer.insert ("A", Slice (FLOAT, (char *)rect[3], xstride, ystride)); + frameBuffer.insert ("A", Slice (FLOAT, (char *)(init_to + 3), xstride, ystride)); if (write_zbuf) frameBuffer.insert ("Z", Slice (FLOAT, (char *) (ibuf->zbuf_float + (height-1)*width), sizeof(float), sizeof(float) * -width)); + + if(ibuf->profile == IB_PROFILE_LINEAR_RGB) { + for (int i = ibuf->y-1; i >= 0; i--) + { + from= ibuf->rect_float + channels*i*width; + + for (int j = ibuf->x; j > 0; j--) + { + to[0] = from[0]; + to[1] = from[1]; + to[2] = from[2]; + to[3] = (channels >= 4)? from[3]: 1.0f; + to+= 4; from += 4; + } + } + } + else { + for (int i = ibuf->y-1; i >= 0; i--) + { + from= ibuf->rect_float + channels*i*width; + + for (int j = ibuf->x; j > 0; j--) + { + to[0] = srgb_to_linearrgb(from[0]); + to[1] = srgb_to_linearrgb(from[1]); + to[2] = srgb_to_linearrgb(from[2]); + to[3] = (channels >= 4)? from[3]: 1.0f; + to+= 4; from += 4; + } + } + } + file->setFrameBuffer (frameBuffer); file->writePixels (height); delete file; + delete [] init_to; } catch (const std::exception &exc) { From 5cf593a778e3dca51a5ebd6b4c23ce6c7b0a7ac6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 19 Oct 2011 23:10:54 +0000 Subject: [PATCH 062/119] strcpy() --> BLI_strncpy(), where source strings are not fixed and target size is known. --- source/blender/blenkernel/BKE_packedFile.h | 2 +- source/blender/blenkernel/intern/image.c | 6 +-- source/blender/blenkernel/intern/modifier.c | 4 +- source/blender/blenkernel/intern/node.c | 2 +- source/blender/blenkernel/intern/packedFile.c | 53 +++++++++---------- source/blender/blenkernel/intern/pointcache.c | 10 ++-- source/blender/blenkernel/intern/property.c | 6 +-- source/blender/blenkernel/intern/sequencer.c | 14 ++--- source/blender/blenkernel/intern/sound.c | 4 +- source/blender/blenkernel/intern/texture.c | 2 +- source/blender/blenlib/intern/fileops.c | 8 +-- source/blender/blenlib/intern/freetypefont.c | 2 +- source/blender/blenlib/intern/storage.c | 12 ++--- source/blender/blenloader/BLO_readfile.h | 2 +- source/blender/blenloader/BLO_runtime.h | 4 +- .../blender/blenloader/intern/readblenentry.c | 2 +- source/blender/blenloader/intern/readfile.c | 16 +++--- source/blender/blenloader/intern/runtime.c | 4 +- source/blender/collada/AnimationImporter.cpp | 4 +- .../blender/editors/armature/editarmature.c | 6 +-- source/blender/editors/armature/poselib.c | 9 ++-- .../editors/gpencil/editaction_gpencil.c | 2 +- source/blender/editors/interface/resources.c | 2 +- .../editors/object/object_constraint.c | 2 +- .../blender/editors/object/object_relations.c | 10 ++-- source/blender/editors/object/object_vgroup.c | 2 +- .../blender/editors/render/render_preview.c | 2 +- source/blender/editors/screen/screendump.c | 2 +- .../editors/sculpt_paint/paint_image.c | 4 +- .../editors/sculpt_paint/sculpt_undo.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 2 +- .../editors/space_sequencer/sequencer_edit.c | 4 +- source/blender/imbuf/intern/anim_movie.c | 2 +- source/blender/makesrna/intern/rna_lattice.c | 7 +-- .../makesrna/intern/rna_object_force.c | 8 +-- .../blender/modifiers/intern/MOD_solidify.c | 3 +- source/blender/nodes/intern/node_common.c | 4 +- .../render/intern/source/renderdatabase.c | 4 +- .../gameengine/GamePlayer/ghost/GPG_ghost.cpp | 6 +-- 39 files changed, 118 insertions(+), 122 deletions(-) diff --git a/source/blender/blenkernel/BKE_packedFile.h b/source/blender/blenkernel/BKE_packedFile.h index 556ff26e621..f1c7356e6b0 100644 --- a/source/blender/blenkernel/BKE_packedFile.h +++ b/source/blender/blenkernel/BKE_packedFile.h @@ -51,7 +51,7 @@ struct PackedFile *newPackedFileMemory(void *mem, int memlen); void packAll(struct Main *bmain, struct ReportList *reports); /* unpack */ -char *unpackFile(struct ReportList *reports, char *abs_name, char *local_name, struct PackedFile *pf, int how); +char *unpackFile(struct ReportList *reports, const char *abs_name, const char *local_name, struct PackedFile *pf, int how); int unpackVFont(struct ReportList *reports, struct VFont *vfont, int how); int unpackSound(struct Main *bmain, struct ReportList *reports, struct bSound *sound, int how); int unpackImage(struct ReportList *reports, struct Image *ima, int how); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 1de581034a4..37982e7fec9 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -906,8 +906,8 @@ static void stampdata(Scene *scene, Object *camera, StampData *stamp_data, int d if (scene->r.stamp & R_STAMP_MARKER) { char *name = scene_find_last_marker_name(scene, CFRA); - - if (name) strcpy(text, name); + + if (name) BLI_strncpy(text, name, sizeof(text)); else strcpy(text, ""); BLI_snprintf(stamp_data->marker, sizeof(stamp_data->marker), do_prefix ? "Marker %s":"%s", text); @@ -980,7 +980,7 @@ static void stampdata(Scene *scene, Object *camera, StampData *stamp_data, int d if (scene->r.stamp & R_STAMP_SEQSTRIP) { Sequence *seq= seq_foreground_frame_get(scene, scene->r.cfra); - if (seq) strcpy(text, seq->name+2); + if (seq) BLI_strncpy(text, seq->name+2, sizeof(text)); else strcpy(text, ""); BLI_snprintf(stamp_data->strip, sizeof(stamp_data->strip), do_prefix ? "Strip %s":"%s", text); diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 9de75a49998..2cee9676e5e 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -86,8 +86,8 @@ ModifierData *modifier_new(int type) ModifierTypeInfo *mti = modifierType_getInfo(type); ModifierData *md = MEM_callocN(mti->structSize, mti->structName); - // FIXME: we need to make the name always be unique somehow... - strcpy(md->name, mti->name); + /* note, this name must be made unique later */ + BLI_strncpy(md->name, mti->name, sizeof(md->name)); md->type = type; md->mode = eModifierMode_Realtime diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index a46b358798a..cb1f52a6265 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -374,7 +374,7 @@ void nodeMakeDynamicType(bNode *node) /*node->typeinfo= MEM_dupallocN(ntype);*/ bNodeType *newtype= MEM_callocN(sizeof(bNodeType), "dynamic bNodeType"); *newtype= *ntype; - strcpy(newtype->name, ntype->name); + BLI_strncpy(newtype->name, ntype->name, sizeof(newtype->name)); node->typeinfo= newtype; } } diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 2c8975e9cb4..0041cd33c14 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -182,7 +182,7 @@ PackedFile *newPackedFile(ReportList *reports, const char *filename, const char // convert relative filenames to absolute filenames - strcpy(name, filename); + BLI_strncpy(name, filename, sizeof(name)); BLI_path_abs(name, basepath); // open the file @@ -240,7 +240,7 @@ void packAll(Main *bmain, ReportList *reports) } -/* +#if 0 // attempt to create a function that generates an unique filename // this will work when all funtions in fileops.c understand relative filenames... @@ -249,6 +249,7 @@ static char *find_new_name(char *name) { char tempname[FILE_MAXDIR + FILE_MAXFILE]; char *newname; + size_t len; if (fop_exists(name)) { for (number = 1; number <= 999; number++) { @@ -258,14 +259,12 @@ static char *find_new_name(char *name) } } } - - newname = mallocN(strlen(tempname) + 1, "find_new_name"); - strcpy(newname, tempname); - - return(newname); + len= strlen(tempname) + 1; + newname = MEM_mallocN(len, "find_new_name"); + memcpy(newname, tempname, len * sizeof(char)); + return newname; } - -*/ +#endif int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, int guimode) { @@ -277,12 +276,12 @@ int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, i if (guimode) {} //XXX waitcursor(1); - strcpy(name, filename); + BLI_strncpy(name, filename, sizeof(name)); BLI_path_abs(name, G.main->name); if (BLI_exists(name)) { for (number = 1; number <= 999; number++) { - sprintf(tempname, "%s.%03d_", name, number); + BLI_snprintf(tempname, sizeof(tempname), "%s.%03d_", name, number); if (! BLI_exists(tempname)) { if (BLI_copy_fileops(name, tempname) == RET_OK) { remove_tmp = TRUE; @@ -342,7 +341,7 @@ int checkPackedFile(const char *filename, PackedFile *pf) char buf[4096]; char name[FILE_MAXDIR + FILE_MAXFILE]; - strcpy(name, filename); + BLI_strncpy(name, filename, sizeof(name)); BLI_path_abs(name, G.main->name); if (stat(name, &st)) { @@ -392,9 +391,10 @@ there was an error or when the user desides to cancel the operation. */ -char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFile *pf, int how) +char *unpackFile(ReportList *reports, const char *abs_name, const char *local_name, PackedFile *pf, int how) { - char *newname = NULL, *temp = NULL; + char *newname = NULL; + const char *temp = NULL; // char newabs[FILE_MAXDIR + FILE_MAXFILE]; // char newlocal[FILE_MAXDIR + FILE_MAXFILE]; @@ -437,12 +437,11 @@ char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFi } if (temp) { - newname = MEM_mallocN(strlen(temp) + 1, "unpack_file newname"); - strcpy(newname, temp); + newname= BLI_strdup(temp); } } - return (newname); + return newname; } @@ -453,17 +452,17 @@ int unpackVFont(ReportList *reports, VFont *vfont, int how) int ret_value = RET_ERROR; if (vfont != NULL) { - strcpy(localname, vfont->name); + BLI_strncpy(localname, vfont->name, sizeof(localname)); BLI_splitdirstring(localname, fi); - sprintf(localname, "//fonts/%s", fi); + BLI_snprintf(localname, sizeof(localname), "//fonts/%s", fi); newname = unpackFile(reports, vfont->name, localname, vfont->packedfile, how); if (newname != NULL) { ret_value = RET_OK; freePackedFile(vfont->packedfile); vfont->packedfile = NULL; - strcpy(vfont->name, newname); + BLI_strncpy(vfont->name, newname, sizeof(vfont->name)); MEM_freeN(newname); } } @@ -478,13 +477,13 @@ int unpackSound(Main *bmain, ReportList *reports, bSound *sound, int how) int ret_value = RET_ERROR; if (sound != NULL) { - strcpy(localname, sound->name); + BLI_strncpy(localname, sound->name, sizeof(localname)); BLI_splitdirstring(localname, fi); - sprintf(localname, "//sounds/%s", fi); + BLI_snprintf(localname, sizeof(localname), "//sounds/%s", fi); newname = unpackFile(reports, sound->name, localname, sound->packedfile, how); if (newname != NULL) { - strcpy(sound->name, newname); + BLI_strncpy(sound->name, newname, sizeof(sound->name)); MEM_freeN(newname); freePackedFile(sound->packedfile); @@ -506,16 +505,16 @@ int unpackImage(ReportList *reports, Image *ima, int how) int ret_value = RET_ERROR; if (ima != NULL) { - strcpy(localname, ima->name); + BLI_strncpy(localname, ima->name, sizeof(localname)); BLI_splitdirstring(localname, fi); - sprintf(localname, "//textures/%s", fi); - + BLI_snprintf(localname, sizeof(localname), "//textures/%s", fi); + newname = unpackFile(reports, ima->name, localname, ima->packedfile, how); if (newname != NULL) { ret_value = RET_OK; freePackedFile(ima->packedfile); ima->packedfile = NULL; - strcpy(ima->name, newname); + BLI_strncpy(ima->name, newname, sizeof(ima->name)); MEM_freeN(newname); BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD); } diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index bc5bc87b1fa..8e5452e2704 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -2891,24 +2891,24 @@ void BKE_ptcache_disk_cache_rename(PTCacheID *pid, char *from, char *to) char ext[MAX_PTCACHE_PATH]; /* save old name */ - strcpy(old_name, pid->cache->name); + BLI_strncpy(old_name, pid->cache->name, sizeof(old_name)); /* get "from" filename */ - strcpy(pid->cache->name, from); + BLI_strncpy(pid->cache->name, from, sizeof(pid->cache->name)); len = ptcache_filename(pid, old_filename, 0, 0, 0); /* no path */ ptcache_path(pid, path); dir = opendir(path); if(dir==NULL) { - strcpy(pid->cache->name, old_name); + BLI_strncpy(pid->cache->name, old_name, sizeof(pid->cache->name)); return; } BLI_snprintf(ext, sizeof(ext), "_%02u"PTCACHE_EXT, pid->stack_index); /* put new name into cache */ - strcpy(pid->cache->name, to); + BLI_strncpy(pid->cache->name, to, sizeof(pid->cache->name)); while ((de = readdir(dir)) != NULL) { if (strstr(de->d_name, ext)) { /* do we have the right extension?*/ @@ -2963,7 +2963,7 @@ void BKE_ptcache_load_external(PTCacheID *pid) if(cache->index >= 0) BLI_snprintf(ext, sizeof(ext), "_%02d"PTCACHE_EXT, cache->index); else - strcpy(ext, PTCACHE_EXT); + BLI_strncpy(ext, PTCACHE_EXT, sizeof(ext)); while ((de = readdir(dir)) != NULL) { if (strstr(de->d_name, ext)) { /* do we have the right extension?*/ diff --git a/source/blender/blenkernel/intern/property.c b/source/blender/blenkernel/intern/property.c index cdf2e39a4dd..e0e2876f79e 100644 --- a/source/blender/blenkernel/intern/property.c +++ b/source/blender/blenkernel/intern/property.c @@ -166,7 +166,7 @@ void unique_property(bProperty *first, bProperty *prop, int force) int i= 0; /* strip numbers */ - strcpy(base_name, prop->name); + BLI_strncpy(base_name, prop->name, sizeof(base_name)); for(i= strlen(base_name)-1; (i>=0 && isdigit(base_name[i])); i--) { base_name[i]= '\0'; } @@ -178,7 +178,7 @@ void unique_property(bProperty *first, bProperty *prop, int force) strcat(new_name, num); } while(get_property__internal(first, prop, new_name)); - strcpy(prop->name, new_name); + BLI_strncpy(prop->name, new_name, sizeof(prop->name)); } } } @@ -257,7 +257,7 @@ void set_property(bProperty *prop, char *str) *((float *)&prop->data)= (float)atof(str); break; case GPROP_STRING: - strcpy(prop->poin, str); + strcpy(prop->poin, str); /* TODO - check size? */ break; } diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 00534400cf1..a7c19130929 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -866,8 +866,8 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq) SeqUniqueInfo sui; char *dot; sui.seq= seq; - strcpy(sui.name_src, seq->name+2); - strcpy(sui.name_dest, seq->name+2); + BLI_strncpy(sui.name_src, seq->name+2, sizeof(sui.name_src)); + BLI_strncpy(sui.name_dest, seq->name+2, sizeof(sui.name_dest)); sui.count= 1; sui.match= 1; /* assume the worst to start the loop */ @@ -887,7 +887,7 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq) seqbase_recursive_apply(seqbasep, seqbase_unique_name_recursive_cb, &sui); } - strcpy(seq->name+2, sui.name_dest); + BLI_strncpy(seq->name+2, sui.name_dest, sizeof(seq->name)-2); } static const char *give_seqname_by_type(int type) @@ -1204,7 +1204,7 @@ static int seq_proxy_get_fname(SeqRenderData context, Sequence * seq, int cfra, sorry folks, please rebuild your proxies... */ if (seq->flag & (SEQ_USE_PROXY_CUSTOM_DIR|SEQ_USE_PROXY_CUSTOM_FILE)) { - strcpy(dir, seq->strip->proxy->dir); + BLI_strncpy(dir, seq->strip->proxy->dir, sizeof(dir)); } else if (seq->type == SEQ_IMAGE) { BLI_snprintf(dir, PROXY_MAXFILE, "%s/BL_proxy", seq->strip->dir); } else { @@ -3360,9 +3360,9 @@ int seq_swap(Sequence *seq_a, Sequence *seq_b, const char **error_str) SWAP(Sequence, *seq_a, *seq_b); /* swap back names so animation fcurves dont get swapped */ - strcpy(name, seq_a->name+2); - strcpy(seq_a->name+2, seq_b->name+2); - strcpy(seq_b->name+2, name); + BLI_strncpy(name, seq_a->name+2, sizeof(name)); + BLI_strncpy(seq_a->name+2, seq_b->name+2, sizeof(seq_b->name)-2); + BLI_strncpy(seq_b->name+2, name, sizeof(seq_b->name)-2); /* swap back opacity, and overlay mode */ SWAP(int, seq_a->blend_mode, seq_b->blend_mode); diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 07df12d5468..02e381fe9b4 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -79,9 +79,9 @@ struct bSound* sound_new_file(struct Main *bmain, const char *filename) char str[FILE_MAX]; char *path; - int len; + size_t len; - strcpy(str, filename); + BLI_strncpy(str, filename, sizeof(str)); path = /*bmain ? bmain->name :*/ G.main->name; diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index d344f79bb6c..7d720aed62c 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -992,7 +992,7 @@ void autotexname(Tex *tex) if(tex->type==TEX_IMAGE) { ima= tex->ima; if(ima) { - strcpy(di, ima->name); + BLI_strncpy(di, ima->name, sizeof(di)); BLI_splitdirstring(di, fi); strcpy(di, "I."); strcat(di, fi); diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 9ccd7fbe121..e848ad8d0d3 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -227,7 +227,7 @@ int BLI_move(const char *file, const char *to) { // it has to be 'mv filename filename' and not // 'mv filename destdir' - strcpy(str, to); + BLI_strncpy(str, to, sizeof(str)); // points 'to' to a directory ? if (BLI_last_slash(str) == (str + strlen(str) - 1)) { if (BLI_last_slash(file) != NULL) { @@ -252,7 +252,7 @@ int BLI_copy_fileops(const char *file, const char *to) { // it has to be 'cp filename filename' and not // 'cp filename destdir' - strcpy(str, to); + BLI_strncpy(str, to, sizeof(str)); // points 'to' to a directory ? if (BLI_last_slash(str) == (str + strlen(str) - 1)) { if (BLI_last_slash(file) != NULL) { @@ -286,7 +286,7 @@ void BLI_recurdir_fileops(const char *dirname) { // blah1/blah2/ (with slash) after creating // blah1/blah2 (without slash) - strcpy(tmp, dirname); + BLI_strncpy(tmp, dirname, sizeof(tmp)); lslash= BLI_last_slash(tmp); if (lslash == tmp + strlen(tmp) - 1) { @@ -371,7 +371,7 @@ void BLI_recurdir_fileops(const char *dirname) { if (BLI_exists(dirname)) return; - strcpy(tmp, dirname); + BLI_strncpy(tmp, dirname, sizeof(tmp)); lslash= BLI_last_slash(tmp); if (lslash) { diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c index 0fe028eb3c0..7e5d03423e5 100644 --- a/source/blender/blenlib/intern/freetypefont.c +++ b/source/blender/blenlib/intern/freetypefont.c @@ -364,7 +364,7 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf) // get the name fontname = FT_Get_Postscript_Name(face); - strcpy(vfd->name, (fontname == NULL) ? "" : fontname); + BLI_strncpy(vfd->name, (fontname == NULL) ? "" : fontname, sizeof(vfd->name)); // Extract the first 256 character from TTF lcode= charcode= FT_Get_First_Char(face, &glyph_index); diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index e336b914ffa..7638e95b4ec 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -304,15 +304,15 @@ void BLI_adddirstrings(void) for(num=0, file= files; nummode1, types[0]); - strcpy(file->mode2, types[0]); - strcpy(file->mode3, types[0]); + BLI_strncpy(file->mode1, types[0], sizeof(file->mode1)); + BLI_strncpy(file->mode2, types[0], sizeof(file->mode2)); + BLI_strncpy(file->mode3, types[0], sizeof(file->mode3)); #else mode = file->s.st_mode; - strcpy(file->mode1, types[(mode & 0700) >> 6]); - strcpy(file->mode2, types[(mode & 0070) >> 3]); - strcpy(file->mode3, types[(mode & 0007)]); + BLI_strncpy(file->mode1, types[(mode & 0700) >> 6], sizeof(file->mode1)); + BLI_strncpy(file->mode2, types[(mode & 0070) >> 3], sizeof(file->mode2)); + BLI_strncpy(file->mode3, types[(mode & 0007)], sizeof(file->mode3)); if (((mode & S_ISGID) == S_ISGID) && (file->mode2[2]=='-'))file->mode2[2]='l'; diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h index e7be98d955d..2799b2165f0 100644 --- a/source/blender/blenloader/BLO_readfile.h +++ b/source/blender/blenloader/BLO_readfile.h @@ -252,7 +252,7 @@ void BLO_library_append_end(const struct bContext *C, struct Main *mainl, BlendH void *BLO_library_read_struct(struct FileData *fd, struct BHead *bh, const char *blockname); -BlendFileData* blo_read_blendafterruntime(int file, char *name, int actualsize, struct ReportList *reports); +BlendFileData* blo_read_blendafterruntime(int file, const char *name, int actualsize, struct ReportList *reports); #ifdef __cplusplus } diff --git a/source/blender/blenloader/BLO_runtime.h b/source/blender/blenloader/BLO_runtime.h index 920b14e92fa..0a3ceeefa78 100644 --- a/source/blender/blenloader/BLO_runtime.h +++ b/source/blender/blenloader/BLO_runtime.h @@ -42,8 +42,8 @@ extern "C" { struct BlendFileData; struct ReportList; -int BLO_is_a_runtime(char *file); -struct BlendFileData *BLO_read_runtime(char *file, struct ReportList *reports); +int BLO_is_a_runtime(const char *file); +struct BlendFileData *BLO_read_runtime(const char *file, struct ReportList *reports); #ifdef __cplusplus } diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index 0e93e5fa8c0..220784c9ff7 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -288,7 +288,7 @@ BlendFileData *BLO_read_from_memfile(Main *oldmain, const char *filename, MemFil fd = blo_openblendermemfile(memfile, reports); if (fd) { fd->reports= reports; - strcpy(fd->relabase, filename); + BLI_strncpy(fd->relabase, filename, sizeof(fd->relabase)); /* clear ob->proxy_from pointers in old main */ blo_clear_proxy_pointers_from_lib(oldmain); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a6474fb5044..667550bcaa0 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9275,7 +9275,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) simasel->prv_h = 96; simasel->prv_w = 96; simasel->flag = 7; /* ??? elubie */ - strcpy (simasel->dir, U.textudir); /* TON */ + BLI_strncpy (simasel->dir, U.textudir, sizeof(simasel->dir)); /* TON */ simasel->file[0]= '\0'; simasel->returnfunc = NULL; @@ -9498,7 +9498,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ct= MEM_callocN(sizeof(bConstraintTarget), "PyConTarget"); ct->tar = data->tar; - strcpy(ct->subtarget, data->subtarget); + BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget)); ct->space = con->tarspace; BLI_addtail(&data->targets, ct); @@ -9528,7 +9528,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ct= MEM_callocN(sizeof(bConstraintTarget), "PyConTarget"); ct->tar = data->tar; - strcpy(ct->subtarget, data->subtarget); + BLI_strncpy(ct->subtarget, data->subtarget, sizeof(ct->subtarget)); ct->space = con->tarspace; BLI_addtail(&data->targets, ct); @@ -12008,8 +12008,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) aa->flag = ia->flag; aa->sta = ia->sta; aa->end = ia->end; - strcpy(aa->name, ia->name); - strcpy(aa->frameProp, ia->frameProp); + BLI_strncpy(aa->name, ia->name, sizeof(aa->name)); + BLI_strncpy(aa->frameProp, ia->frameProp, sizeof(aa->frameProp)); if (ob->adt) aa->act = ob->adt->action; @@ -13651,8 +13651,8 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) printf(" enter a new path:\n"); if(scanf("%s", newlib_path) > 0) { - strcpy(mainptr->curlib->name, newlib_path); - strcpy(mainptr->curlib->filepath, newlib_path); + BLI_strncpy(mainptr->curlib->name, newlib_path, sizeof(mainptr->curlib->name)); + BLI_strncpy(mainptr->curlib->filepath, newlib_path, sizeof(mainptr->curlib->filepath)); cleanup_path(G.main->name, mainptr->curlib->filepath); fd= blo_openblenderfile(mainptr->curlib->filepath, basefd->reports); @@ -13768,7 +13768,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) /* reading runtime */ -BlendFileData *blo_read_blendafterruntime(int file, char *name, int actualsize, ReportList *reports) +BlendFileData *blo_read_blendafterruntime(int file, const char *name, int actualsize, ReportList *reports) { BlendFileData *bfd = NULL; FileData *fd = filedata_new(); diff --git a/source/blender/blenloader/intern/runtime.c b/source/blender/blenloader/intern/runtime.c index f5308b5ea5c..7a241e007f2 100644 --- a/source/blender/blenloader/intern/runtime.c +++ b/source/blender/blenloader/intern/runtime.c @@ -68,7 +68,7 @@ static int handle_read_msb_int(int handle) return (buf[0]<<24) + (buf[1]<<16) + (buf[2]<<8) + (buf[3]<<0); } -int BLO_is_a_runtime(char *path) +int BLO_is_a_runtime(const char *path) { int res= 0, fd= open(path, O_BINARY|O_RDONLY, 0); int datastart; @@ -97,7 +97,7 @@ cleanup: return res; } -BlendFileData *BLO_read_runtime(char *path, ReportList *reports) +BlendFileData *BLO_read_runtime(const char *path, ReportList *reports) { BlendFileData *bfd= NULL; size_t actualsize; diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index f3a6e2371bb..dec93c0ff63 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -691,7 +691,7 @@ void AnimationImporter::apply_matrix_curves( Object * ob, std::vector& if (is_joint) BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str); else - strcpy(rna_path, tm_str); + BLI_strncpy(rna_path, tm_str, sizeof(rna_path)); newcu[i] = create_fcurve(axis, rna_path); newcu[i]->totvert = frames.size(); } @@ -1246,7 +1246,7 @@ Object *AnimationImporter::translate_animation_OLD(COLLADAFW::Node *node, if (is_joint) BLI_snprintf(rna_path, sizeof(rna_path), "%s.%s", joint_path, tm_str); else - strcpy(rna_path, tm_str); + BLI_strncpy(rna_path, tm_str, sizeof(rna_path)); newcu[i] = create_fcurve(axis, rna_path); #ifdef ARMATURE_TEST diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index 20368bbf57b..11fd932eed6 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -824,7 +824,7 @@ static void joined_armature_fix_links(Object *tarArm, Object *srcArm, bPoseChann } else if (strcmp(ct->subtarget, pchan->name)==0) { ct->tar = tarArm; - strcpy(ct->subtarget, curbone->name); + BLI_strncpy(ct->subtarget, curbone->name, sizeof(ct->subtarget)); } } } @@ -871,7 +871,7 @@ static void joined_armature_fix_links(Object *tarArm, Object *srcArm, bPoseChann } else if (strcmp(ct->subtarget, pchan->name)==0) { ct->tar = tarArm; - strcpy(ct->subtarget, curbone->name); + BLI_strncpy(ct->subtarget, curbone->name, sizeof(ct->subtarget)); } } } @@ -2503,7 +2503,7 @@ void updateDuplicateSubtargetObjects(EditBone *dupBone, ListBase *editbones, Obj */ if (oldtarget->temp) { newtarget = (EditBone *) oldtarget->temp; - strcpy(ct->subtarget, newtarget->name); + BLI_strncpy(ct->subtarget, newtarget->name, sizeof(ct->subtarget)); } } } diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index bf2e17c4e87..e7c7ebf3ece 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -997,11 +997,8 @@ static void poselib_preview_apply (bContext *C, wmOperator *op) } /* get marker name */ - if (pld->marker) - strcpy(markern, pld->marker->name); - else - strcpy(markern, "No Matches"); - + BLI_strncpy(markern, pld->marker ? pld->marker->name : "No Matches", sizeof(markern)); + sprintf(pld->headerstr, "PoseLib Previewing Pose: Filter - [%s] | Current Pose - \"%s\" | Use ScrollWheel or PageUp/Down to change", tempstr, markern); ED_area_headerprint(pld->sa, pld->headerstr); } @@ -1186,7 +1183,7 @@ static int poselib_preview_handle_event (bContext *UNUSED(C), wmOperator *op, wm /* backup stuff that needs to occur before every operation * - make a copy of searchstr, so that we know if cache needs to be rebuilt */ - strcpy(pld->searchold, pld->searchstr); + BLI_strncpy(pld->searchold, pld->searchstr, sizeof(pld->searchold)); /* if we're currently showing the original pose, only certain events are handled */ if (pld->flag & PL_PREVIEW_SHOWORIGINAL) { diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c index b6398c6a2f5..56210864593 100644 --- a/source/blender/editors/gpencil/editaction_gpencil.c +++ b/source/blender/editors/gpencil/editaction_gpencil.c @@ -311,7 +311,7 @@ void copy_gpdata () gpln= MEM_callocN(sizeof(bGPDlayer), "GPCopyPasteLayer"); gpln->frames.first= gpln->frames.last= NULL; - strcpy(gpln->info, gpls->info); + BLI_strncpy(gpln->info, gpls->info, sizeof(gpln->info)); BLI_addtail(&gpcopybuf, gpln); diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 9b9237f70cf..fd511948bac 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1151,7 +1151,7 @@ void init_userdef_do_versions(void) vDM_ColorBand_store((U.flag & USER_CUSTOM_RANGE) ? (&U.coba_weight):NULL); if (bmain->versionfile <= 191) { - strcpy(U.plugtexdir, U.textudir); + BLI_strncpy(U.plugtexdir, U.textudir, sizeof(U.plugtexdir)); strcpy(U.sounddir, "/"); } diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 6c553289052..ec7c6cc6108 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -245,7 +245,7 @@ static void set_constraint_nth_target (bConstraint *con, Object *target, const c for (ct=targets.first, i=0; ct; ct= ct->next, i++) { if (i == index) { ct->tar= target; - strcpy(ct->subtarget, subtarget); + BLI_strncpy(ct->subtarget, subtarget, sizeof(ct->subtarget)); break; } } diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 389c0941cc2..49a71018719 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -334,11 +334,9 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* Add new object for the proxy */ newob= add_object(scene, OB_EMPTY); - if (gob) - strcpy(name, gob->id.name+2); - else - strcpy(name, ob->id.name+2); - strcat(name, "_proxy"); + + BLI_snprintf(name, sizeof(name), "%s_proxy", ((ID *)(gob ? gob : ob))->name); + rename_id(&newob->id, name); /* set layers OK */ @@ -605,7 +603,7 @@ static int parent_set_exec(bContext *C, wmOperator *op) /* handle types */ if (pchan) - strcpy(ob->parsubstr, pchan->name); + BLI_strncpy(ob->parsubstr, pchan->name, sizeof(ob->parsubstr)); else ob->parsubstr[0]= 0; diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 7b4db347315..c1b21865504 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -669,7 +669,7 @@ static void vgroup_duplicate(Object *ob) } cdg = defgroup_duplicate(dg); - strcpy(cdg->name, name); + BLI_strncpy(cdg->name, name, sizeof(cdg->name)); defgroup_unique_name(cdg, ob); BLI_addtail(&ob->defbase, cdg); diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 70709a22d3d..697cddfcee0 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -261,7 +261,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre sce->r.alphamode= R_ADDSKY; sce->r.cfra= scene->r.cfra; - strcpy(sce->r.engine, scene->r.engine); + BLI_strncpy(sce->r.engine, scene->r.engine, sizeof(sce->r.engine)); if(id_type==ID_MA) { Material *mat= NULL, *origmat= (Material *)id; diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 3010adafe20..27c311aa04f 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -157,7 +157,7 @@ static int screenshot_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "filepath", path); - strcpy(G.ima, path); + BLI_strncpy(G.ima, path, sizeof(G.ima)); BLI_path_abs(path, G.main->name); /* BKE_add_image_extension() checks for if extension was already set */ diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index c5af8971907..b6b22c391b8 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -401,7 +401,7 @@ static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int *tmpibuf = IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat|IB_rect); tile= MEM_callocN(sizeof(UndoImageTile), "UndoImageTile"); - strcpy(tile->idname, ima->id.name); + BLI_strncpy(tile->idname, ima->id.name, sizeof(tile->idname)); tile->x= x_tile; tile->y= y_tile; @@ -409,7 +409,7 @@ static void *image_undo_push_tile(Image *ima, ImBuf *ibuf, ImBuf **tmpibuf, int allocsize *= (ibuf->rect_float)? sizeof(float): sizeof(char); tile->rect= MEM_mapallocN(allocsize, "UndeImageTile.rect"); - strcpy(tile->ibufname, ibuf->name); + BLI_strncpy(tile->ibufname, ibuf->name, sizeof(tile->ibufname)); tile->gen_type= ima->gen_type; tile->source= ima->source; diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 13b6fef3004..a32487e7117 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -262,7 +262,7 @@ SculptUndoNode *sculpt_undo_push_node(Object *ob, PBVHNode *node) } unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); - strcpy(unode->idname, ob->id.name); + BLI_strncpy(unode->idname, ob->id.name, sizeof(unode->idname)); unode->node= node; BLI_pbvh_node_num_verts(ss->pbvh, node, &totvert, &allvert); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 7fa4e62359a..7e4d02036ef 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -235,7 +235,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) strip->stripdata= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - strcpy(seq->name+2, sce_seq->id.name+2); + BLI_strncpy(seq->name+2, sce_seq->id.name+2, sizeof(seq->name)-2); seqbase_unique_name_recursive(&ed->seqbase, seq); seq->scene_sound = sound_scene_add_scene_sound(scene, seq, start_frame, start_frame + strip->len, 0); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 45543a9313e..33d2a27f789 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -929,11 +929,11 @@ static void UNUSED_FUNCTION(seq_remap_paths)(Scene *scene) if(last_seq==NULL) return; - BLI_strncpy(from, last_seq->strip->dir, FILE_MAX); + BLI_strncpy(from, last_seq->strip->dir, sizeof(from)); // XXX if (0==sbutton(from, 0, sizeof(from)-1, "From: ")) // return; - strcpy(to, from); + BLI_strncpy(to, from, sizeof(to)); // XXX if (0==sbutton(to, 0, sizeof(to)-1, "To: ")) // return; diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index c1ef8c4792b..34c39b1083a 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -1175,7 +1175,7 @@ static struct ImBuf * anim_getnew(struct anim * anim) { case ANIM_SEQUENCE: ibuf = IMB_loadiffname(anim->name, anim->ib_flags); if (ibuf) { - strcpy(anim->first, anim->name); + BLI_strncpy(anim->first, anim->name, sizeof(anim->first)); anim->duration = 1; } break; diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c index 2a81c4f0a2c..f30fea659ae 100644 --- a/source/blender/makesrna/intern/rna_lattice.c +++ b/source/blender/makesrna/intern/rna_lattice.c @@ -179,10 +179,11 @@ static void rna_Lattice_points_w_set(PointerRNA *ptr, int value) static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value) { Lattice *lt= ptr->data; - strcpy(lt->vgroup, value); + BLI_strncpy(lt->vgroup, value, sizeof(lt->vgroup)); - if(lt->editlatt) - strcpy(lt->editlatt->latt->vgroup, value); + if(lt->editlatt) { + BLI_strncpy(lt->editlatt->latt->vgroup, value, sizeof(lt->editlatt->latt->vgroup)); + } } /* annoying, but is a consequence of RNA structures... */ diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index c36dca22731..8db1faee04d 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -193,7 +193,7 @@ static void rna_Cache_idname_change(Main *UNUSED(bmain), Scene *UNUSED(scene), P pid2 = pid; else if(cache->name[0] != '\0' && strcmp(cache->name,pid->cache->name)==0) { /*TODO: report "name exists" to user */ - strcpy(cache->name, cache->prev_name); + BLI_strncpy(cache->name, cache->prev_name, sizeof(cache->name)); new_name = 0; } } @@ -203,13 +203,13 @@ static void rna_Cache_idname_change(Main *UNUSED(bmain), Scene *UNUSED(scene), P char old_name[80]; char new_name[80]; - strcpy(old_name, cache->prev_name); - strcpy(new_name, cache->name); + BLI_strncpy(old_name, cache->prev_name, sizeof(old_name)); + BLI_strncpy(new_name, cache->name, sizeof(new_name)); BKE_ptcache_disk_cache_rename(pid2, old_name, new_name); } - strcpy(cache->prev_name, cache->name); + BLI_strncpy(cache->prev_name, cache->name, sizeof(cache->prev_name)); } } diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 757da28e4b5..f2e3a0d016a 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -40,6 +40,7 @@ #include "BLI_math.h" #include "BLI_edgehash.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "BKE_cdderivedmesh.h" #include "BKE_mesh.h" @@ -183,7 +184,7 @@ static void copyData(ModifierData *md, ModifierData *target) tsmd->crease_outer = smd->crease_outer; tsmd->crease_rim = smd->crease_rim; tsmd->flag = smd->flag; - strcpy(tsmd->defgrp_name, smd->defgrp_name); + BLI_strncpy(tsmd->defgrp_name, smd->defgrp_name, sizeof(tsmd->defgrp_name)); } static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md) diff --git a/source/blender/nodes/intern/node_common.c b/source/blender/nodes/intern/node_common.c index 4dbf4b96b74..6214f39dc0a 100644 --- a/source/blender/nodes/intern/node_common.c +++ b/source/blender/nodes/intern/node_common.c @@ -718,7 +718,7 @@ static bNodeSocket *group_verify_socket(bNodeTree *ntree, ListBase *lb, int in_o if(sock) { sock->groupsock = gsock; - strcpy(sock->name, gsock->name); + BLI_strncpy(sock->name, gsock->name, sizeof(sock->name)); sock->type= gsock->type; /* XXX hack: group socket input/output roles are inverted internally, @@ -903,7 +903,7 @@ static void loop_sync(bNodeTree *ntree, int sync_in_out) if (mirror->own_index == GET_INT_FROM_POINTER(sock->storage)) break; /* make sure the name is the same (only for identification by user, no deeper meaning) */ - strcpy(mirror->name, sock->name); + BLI_strncpy(mirror->name, sock->name, sizeof(mirror->name)); /* fix the socket order if necessary */ if (mirror != sync) { BLI_remlink(sync_lb, mirror); diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c index 7a39342ac8d..a73bf93841d 100644 --- a/source/blender/render/intern/source/renderdatabase.c +++ b/source/blender/render/intern/source/renderdatabase.c @@ -481,12 +481,12 @@ void RE_set_customdata_names(ObjectRen *obr, CustomData *data) layer= &data->layers[i]; if (layer->type == CD_MTFACE) { - strcpy(obr->mtface[mtfn++], layer->name); + BLI_strncpy(obr->mtface[mtfn++], layer->name, sizeof(layer->name)); obr->actmtface= CLAMPIS(layer->active_rnd, 0, numtf); obr->bakemtface= layer->active; } else if (layer->type == CD_MCOL) { - strcpy(obr->mcol[mcn++], layer->name); + BLI_strncpy(obr->mcol[mcn++], layer->name, sizeof(layer->name)); obr->actmcol= CLAMPIS(layer->active_rnd, 0, numcol); } } diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index f5bd3a91c26..ea17b9adcfd 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -309,7 +309,7 @@ static void get_filename(int argc, char **argv, char *filename) #endif // !_APPLE } -static BlendFileData *load_game_data(char *progname, char *filename = NULL, char *relativename = NULL) +static BlendFileData *load_game_data(const char *progname, char *filename = NULL, char *relativename = NULL) { ReportList reports; BlendFileData *bfd = NULL; @@ -321,7 +321,7 @@ static BlendFileData *load_game_data(char *progname, char *filename = NULL, char bfd= BLO_read_runtime(progname, &reports); if (bfd) { bfd->type= BLENFILETYPE_RUNTIME; - strcpy(bfd->main->name, progname); + BLI_strncpy(bfd->main->name, progname, sizeof(bfd->main->name)); } } else { bfd= BLO_read_from_file(progname, &reports); @@ -766,7 +766,7 @@ int main(int argc, char** argv) char basedpath[240]; // base the actuator filename relative to the last file - strcpy(basedpath, exitstring.Ptr()); + BLI_strncpy(basedpath, exitstring.Ptr(), sizeof(basedpath)); BLI_path_abs(basedpath, pathname); bfd = load_game_data(basedpath); From 4512f10db981bdd9083bd6763fc993f2a162ac53 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 00:19:21 +0000 Subject: [PATCH 063/119] misc edits - rename define DISABLE_SDL --> WITH_SDL (which was already used in some places) - blenders interation preset was using orbit rather then turntable 3d view preference (different from factory defaults). - tagged some unused rna args. --- build_files/scons/tools/Blender.py | 4 +- .../scripts/presets/interaction/blender.py | 2 +- source/blender/blenkernel/SConscript | 3 +- source/blender/blenlib/BLI_utildefines.h | 2 +- source/blender/makesdna/DNA_space_types.h | 3 +- source/blender/makesrna/intern/rna_action.c | 3 +- source/blender/makesrna/intern/rna_actuator.c | 2 +- source/blender/makesrna/intern/rna_boid.c | 2 +- source/blender/makesrna/intern/rna_curve.c | 2 +- source/blender/makesrna/intern/rna_fluidsim.c | 3 +- source/blender/makesrna/intern/rna_rna.c | 6 +-- source/blender/makesrna/intern/rna_scene.c | 2 +- source/blender/makesrna/intern/rna_space.c | 2 +- source/blender/makesrna/intern/rna_texture.c | 10 ++--- source/blender/makesrna/intern/rna_userdef.c | 2 +- source/creator/CMakeLists.txt | 4 +- source/creator/creator.c | 4 +- source/gameengine/GameLogic/CMakeLists.txt | 4 +- .../GameLogic/Joystick/SCA_Joystick.cpp | 44 +++++++++---------- .../GameLogic/Joystick/SCA_Joystick.h | 12 ++--- .../GameLogic/Joystick/SCA_JoystickEvents.cpp | 8 ++-- .../GameLogic/Joystick/SCA_JoystickPrivate.h | 4 +- .../GameLogic/SCA_JoystickManager.cpp | 2 +- source/gameengine/GameLogic/SConscript | 3 +- source/gameengine/Ketsji/CMakeLists.txt | 3 +- source/gameengine/Ketsji/SConscript | 3 +- 26 files changed, 68 insertions(+), 71 deletions(-) diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index 147316c204a..c802eee4fb6 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -316,8 +316,8 @@ def creator(env): if env['WITH_BF_TIFF']: defs.append('WITH_TIFF') - if not env['WITH_BF_SDL']: - defs.append('DISABLE_SDL') + if env['WITH_BF_SDL']: + defs.append('WITH_SDL') if env['WITH_BF_PYTHON']: incs.append('#/source/blender/python') diff --git a/release/scripts/presets/interaction/blender.py b/release/scripts/presets/interaction/blender.py index 3b6ce13d7e0..c5454e479a3 100644 --- a/release/scripts/presets/interaction/blender.py +++ b/release/scripts/presets/interaction/blender.py @@ -9,5 +9,5 @@ bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb = False bpy.context.user_preferences.inputs.select_mouse = 'RIGHT' bpy.context.user_preferences.inputs.view_zoom_method = 'DOLLY' bpy.context.user_preferences.inputs.view_zoom_axis = 'VERTICAL' -bpy.context.user_preferences.inputs.view_rotate_method = 'TRACKBALL' +bpy.context.user_preferences.inputs.view_rotate_method = 'TURNTABLE' bpy.context.user_preferences.inputs.invert_mouse_zoom = False diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript index 7d7ab56ec3f..512eec4021f 100644 --- a/source/blender/blenkernel/SConscript +++ b/source/blender/blenkernel/SConscript @@ -41,8 +41,7 @@ if env['WITH_BF_QUICKTIME']: if env['WITH_BF_SDL']: incs += ' ' + env['BF_SDL_INC'] -else: - defs.append('DISABLE_SDL') + defs.append('WITH_SDL') if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index 456ee72c4e0..b2b3e7381c6 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -221,7 +221,7 @@ # else # define _dummy_abort() (void)0 # endif -# ifdef __GNUC__ /* just want to check if __func__ is available */ +# if defined(__GNUC__) || defined(_MSC_VER) /* just want to check if __func__ is available */ # define BLI_assert(a) \ do { \ if (!(a)) { \ diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index 1627d4d2acb..13be1253184 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -434,7 +434,8 @@ typedef struct SpaceLogic { struct bGPdata *gpd; /* grease-pencil data */ } SpaceLogic; - +/* note, this entire struct isnt used anymore!, + * may remove some day - campbell */ typedef struct SpaceImaSel { SpaceLink *next, *prev; ListBase regionbase; /* storage of regions for inactive spaces */ diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 44c37f93b5e..f2d1578388d 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -132,7 +132,7 @@ static void rna_Action_fcurve_remove(bAction *act, ReportList *reports, FCurve * } } -static TimeMarker *rna_Action_pose_markers_new(bAction *act, ReportList *reports, const char name[]) +static TimeMarker *rna_Action_pose_markers_new(bAction *act, const char name[]) { TimeMarker *marker = MEM_callocN(sizeof(TimeMarker), "TimeMarker"); marker->flag= 1; @@ -550,7 +550,6 @@ static void rna_def_action_pose_markers(BlenderRNA *brna, PropertyRNA *cprop) func= RNA_def_function(srna, "new", "rna_Action_pose_markers_new"); RNA_def_function_ui_description(func, "Add a pose marker to the action"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); parm= RNA_def_string(func, "name", "Marker", 0, "", "New name for the marker (not unique)"); RNA_def_property_flag(parm, PROP_REQUIRED); diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c index d828139a6d5..2859a7bb89b 100644 --- a/source/blender/makesrna/intern/rna_actuator.c +++ b/source/blender/makesrna/intern/rna_actuator.c @@ -450,7 +450,7 @@ EnumPropertyItem *rna_Actuator_type_itemf(bContext *C, PointerRNA *ptr, Property return item; } -static void rna_Actuator_Armature_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Actuator_Armature_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { bActuator *act= (bActuator *)ptr->data; bArmatureActuator *aa = act->data; diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 357f613f65f..e21f6aeb26f 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -76,7 +76,7 @@ EnumPropertyItem boidruleset_type_items[] ={ #include "BKE_depsgraph.h" #include "BKE_particle.h" -static void rna_Boids_reset(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Boids_reset(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { if(ptr->type==&RNA_ParticleSystem) { ParticleSystem *psys = (ParticleSystem*)ptr->data; diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index edae977f3f6..49f39a207d2 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -292,7 +292,7 @@ static void rna_Curve_dimension_set(PointerRNA *ptr, int value) } } -static EnumPropertyItem *rna_Curve_fill_mode_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *free) +static EnumPropertyItem *rna_Curve_fill_mode_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free)) { Curve *cu= (Curve*)ptr->id.data; diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c index ba90aca47a3..c114c44ad77 100644 --- a/source/blender/makesrna/intern/rna_fluidsim.c +++ b/source/blender/makesrna/intern/rna_fluidsim.c @@ -173,6 +173,7 @@ static void rna_FluidSettings_update_type(Main *bmain, Scene *scene, PointerRNA static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *value) { #ifdef DISABLE_ELBEEM + (void)ptr; value[0]= '\0'; #else Object *ob= (Object*)ptr->id.data; @@ -182,7 +183,7 @@ static void rna_DomainFluidSettings_memory_estimate_get(PointerRNA *ptr, char *v #endif } -static int rna_DomainFluidSettings_memory_estimate_length(PointerRNA *ptr) +static int rna_DomainFluidSettings_memory_estimate_length(PointerRNA *UNUSED(ptr)) { #ifdef DISABLE_ELBEEM return 0; diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index 376b0c529d0..31c872f43f8 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -167,7 +167,7 @@ static int rna_idproperty_known(CollectionPropertyIterator *iter, void *data) return 0; } -static int rna_property_builtin(CollectionPropertyIterator *iter, void *data) +static int rna_property_builtin(CollectionPropertyIterator *UNUSED(iter), void *data) { PropertyRNA *prop= (PropertyRNA*)data; @@ -176,7 +176,7 @@ static int rna_property_builtin(CollectionPropertyIterator *iter, void *data) return (prop->flag & PROP_BUILTIN); } -static int rna_function_builtin(CollectionPropertyIterator *iter, void *data) +static int rna_function_builtin(CollectionPropertyIterator *UNUSED(iter), void *data) { FunctionRNA *func= (FunctionRNA*)data; @@ -775,7 +775,7 @@ static int rna_EnumProperty_default_get(PointerRNA *ptr) return ((EnumPropertyRNA*)prop)->defaultvalue; } -static int rna_enum_check_separator(CollectionPropertyIterator *iter, void *data) +static int rna_enum_check_separator(CollectionPropertyIterator *UNUSED(iter), void *data) { EnumPropertyItem *item= (EnumPropertyItem*)data; diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index ccc8151ac7f..09824616936 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1054,7 +1054,7 @@ static KeyingSet *rna_Scene_keying_set_new(Scene *sce, ReportList *reports, cons * is not for general use and only for the few cases where changing scene * settings and NOT for general purpose updates, possibly this should be * given its own notifier. */ -static void rna_Scene_update_active_object_data(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Scene_update_active_object_data(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr) { Object *ob= OBACT; if(ob) { diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 8afcd61b9c8..cbe06e6cab5 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -860,7 +860,7 @@ static int rna_SpaceNodeEditor_node_tree_poll(PointerRNA *ptr, PointerRNA value) return (ntree->nodetype==0 && ntree->type == snode->treetype); } -static void rna_SpaceNodeEditor_node_tree_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_SpaceNodeEditor_node_tree_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr) { SpaceNode *snode= (SpaceNode*)ptr->data; diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index b5e8acb76e5..03f0a4ba363 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -133,7 +133,7 @@ static StructRNA *rna_Texture_refine(struct PointerRNA *ptr) } } -static void rna_Texture_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Texture_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Tex *tex= ptr->id.data; @@ -162,7 +162,7 @@ static void rna_Texture_voxeldata_image_update(Main *bmain, Scene *scene, Pointe /* Used for Texture Properties, used (also) for/in Nodes */ -static void rna_Texture_nodes_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_Texture_nodes_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Tex *tex= ptr->id.data; @@ -177,7 +177,7 @@ static void rna_Texture_type_set(PointerRNA *ptr, int value) tex_set_type(tex, value); } -void rna_TextureSlot_update(Main *bmain, Scene *scene, PointerRNA *ptr) +void rna_TextureSlot_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { ID *id= ptr->id.data; @@ -388,12 +388,12 @@ static void rna_PointDensity_psys_set(PointerRNA *ptr, PointerRNA value) pd->psys= BLI_findindex(&ob->particlesystem, value.data) + 1; } -static char *rna_PointDensity_path(PointerRNA *ptr) +static char *rna_PointDensity_path(PointerRNA *UNUSED(ptr)) { return BLI_sprintfN("point_density"); } -static char *rna_VoxelData_path(PointerRNA *ptr) +static char *rna_VoxelData_path(PointerRNA *UNUSED(ptr)) { return BLI_sprintfN("voxel_data"); } diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index e2f0f4dab1f..9202647981b 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -72,7 +72,7 @@ static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Pointe WM_main_add_notifier(NC_WINDOW, NULL); } -static void rna_userdef_dpi_update(Main *bmain, Scene *scene, PointerRNA *ptr) +static void rna_userdef_dpi_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr)) { U.widget_unit = (U.dpi * 20 + 36)/72; WM_main_add_notifier(NC_WINDOW, NULL); /* full redraw */ diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index e7a1ff14f03..b4e9d4d262e 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -88,8 +88,8 @@ if(WITH_GAMEENGINE) add_definitions(-DWITH_GAMEENGINE) endif() -if(NOT WITH_SDL) - add_definitions(-DDISABLE_SDL) +if(WITH_SDL) + add_definitions(-DWITH_SDL) endif() if(WITH_BINRELOC) diff --git a/source/creator/creator.c b/source/creator/creator.c index 3ce469de4e8..f6b99a9f73c 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -305,7 +305,7 @@ static int print_help(int UNUSED(argc), const char **UNUSED(argv), void *data) #else printf (" $TMP or $TMPDIR Store temporary files here.\n"); #endif -#ifndef DISABLE_SDL +#ifdef WITH_SDL printf (" $SDL_AUDIODRIVER LibSDL audio driver - alsa, esd, dma.\n"); #endif printf (" $PYTHONHOME Path to the python directory, eg. /usr/lib/python.\n\n"); @@ -1213,7 +1213,7 @@ int main(int argc, const char **argv) /* this is properly initialized with user defs, but this is default */ BLI_where_is_temp(btempdir, FILE_MAX, 1); /* call after loading the startup.blend so we can read U.tempdir */ -#ifndef DISABLE_SDL +#ifdef WITH_SDL BLI_setenv("SDL_VIDEODRIVER", "dummy"); #endif } diff --git a/source/gameengine/GameLogic/CMakeLists.txt b/source/gameengine/GameLogic/CMakeLists.txt index bd417165337..9a57de60517 100644 --- a/source/gameengine/GameLogic/CMakeLists.txt +++ b/source/gameengine/GameLogic/CMakeLists.txt @@ -131,8 +131,8 @@ if(WITH_SDL) list(APPEND INC_SYS ${SDL_INCLUDE_DIR} ) -else() - add_definitions(-DDISABLE_SDL) + + add_definitions(-DWITH_SDL) endif() blender_add_lib(ge_logic "${SRC}" "${INC}" "${INC_SYS}") diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp index 48ba09e67d2..0547d97285d 100644 --- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp +++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp @@ -29,8 +29,8 @@ * \ingroup gamelogic */ -#ifndef DISABLE_SDL -#include +#ifdef WITH_SDL +# include #endif #include @@ -57,7 +57,7 @@ SCA_Joystick::SCA_Joystick(short int index) for(int i=0; i= JOYINDEX_MAX) { echo("Error-invalid joystick index: " << joyindex); return NULL; @@ -107,14 +107,14 @@ SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex ) m_refCount++; } return m_instance[joyindex]; -#endif +#endif /* WITH_SDL */ } void SCA_Joystick::ReleaseInstance() { if (--m_refCount == 0) { -#ifndef DISABLE_SDL +#ifdef WITH_SDL int i; for (i=0; i=m_joynum) { // don't print a message, because this is done anyway @@ -257,13 +257,13 @@ bool SCA_Joystick::CreateJoystickDevice(void) } return true; -#endif +#endif /* WITH_SDL */ } void SCA_Joystick::DestroyJoystickDevice(void) { -#ifndef DISABLE_SDL +#ifdef WITH_SDL if (m_isinit){ if(SDL_JoystickOpened(m_joyindex)){ echo("Closing-joystick " << m_joyindex); @@ -271,12 +271,12 @@ void SCA_Joystick::DestroyJoystickDevice(void) } m_isinit = false; } -#endif +#endif /* WITH_SDL */ } int SCA_Joystick::Connected(void) { -#ifndef DISABLE_SDL +#ifdef WITH_SDL if (m_isinit && SDL_JoystickOpened(m_joyindex)) return 1; #endif @@ -285,7 +285,7 @@ int SCA_Joystick::Connected(void) int SCA_Joystick::pGetAxis(int axisnum, int udlr) { -#ifndef DISABLE_SDL +#ifdef WITH_SDL return m_axis_array[(axisnum*2)+udlr]; #endif return 0; @@ -293,7 +293,7 @@ int SCA_Joystick::pGetAxis(int axisnum, int udlr) int SCA_Joystick::pAxisTest(int axisnum) { -#ifndef DISABLE_SDL +#ifdef WITH_SDL short i1= m_axis_array[(axisnum*2)]; short i2= m_axis_array[(axisnum*2)+1]; @@ -304,7 +304,7 @@ int SCA_Joystick::pAxisTest(int axisnum) if (i2 < 0) i2 = -i2; if (i1 +#ifdef WITH_SDL +# include #endif #include "SCA_Joystick.h" #include "SCA_JoystickPrivate.h" -#ifndef DISABLE_SDL +#ifdef WITH_SDL void SCA_Joystick::OnAxisMotion(SDL_Event* sdl_event) { if(sdl_event->jaxis.axis >= JOYAXIS_MAX) @@ -125,4 +125,4 @@ void SCA_Joystick::HandleEvents(void) } } } -#endif +#endif /* WITH_SDL */ diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h index 02dd8145bb7..472a7353190 100644 --- a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h +++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h @@ -33,7 +33,7 @@ #define __SCA_JOYSTICKPRIVATE_H__ #include "SCA_Joystick.h" -#ifndef DISABLE_SDL +#ifdef WITH_SDL class SCA_Joystick::PrivateData { public: @@ -47,6 +47,6 @@ public: { } }; -#endif +#endif /* WITH_SDL */ #endif diff --git a/source/gameengine/GameLogic/SCA_JoystickManager.cpp b/source/gameengine/GameLogic/SCA_JoystickManager.cpp index b61e4f4edca..2942384055b 100644 --- a/source/gameengine/GameLogic/SCA_JoystickManager.cpp +++ b/source/gameengine/GameLogic/SCA_JoystickManager.cpp @@ -65,7 +65,7 @@ void SCA_JoystickManager::NextFrame(double curtime,double deltatime) } else { ; -#ifndef DISABLE_SDL +#ifdef WITH_SDL SCA_Joystick::HandleEvents(); /* Handle all SDL Joystick events */ #endif SG_DList::iterator it(m_sensors); diff --git a/source/gameengine/GameLogic/SConscript b/source/gameengine/GameLogic/SConscript index d6323882267..62bdbc29544 100644 --- a/source/gameengine/GameLogic/SConscript +++ b/source/gameengine/GameLogic/SConscript @@ -10,9 +10,8 @@ incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph' defs = [] if env['WITH_BF_SDL']: + defs.append('WITH_SDL') incs += ' ' + env['BF_SDL_INC'] -else: - defs.append('DISABLE_SDL') if env['WITH_BF_PYTHON']: incs += ' ' + env['BF_PYTHON_INC'] diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt index 9d8b1781869..329ac890cd2 100644 --- a/source/gameengine/Ketsji/CMakeLists.txt +++ b/source/gameengine/Ketsji/CMakeLists.txt @@ -225,8 +225,7 @@ if(WITH_SDL) list(APPEND INC_SYS ${SDL_INCLUDE_DIR} ) -else() - add_definitions(-DDISABLE_SDL) + add_definitions(-DWITH_SDL) endif() if(WITH_CODEC_FFMPEG) diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript index 9b453ed76d5..064f09df9f3 100644 --- a/source/gameengine/Ketsji/SConscript +++ b/source/gameengine/Ketsji/SConscript @@ -27,8 +27,7 @@ incs += ' ' + env['BF_OPENGL_INC'] if env['WITH_BF_SDL']: incs += ' ' + env['BF_SDL_INC'] -else: - defs.append('DISABLE_SDL') + defs.append('WITH_SDL') if env['WITH_BF_PYTHON']: incs += ' ' + env['BF_PYTHON_INC'] From 445279524a6c10fc09cd365a63fa9b69e364be83 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 00:48:00 +0000 Subject: [PATCH 064/119] debug build option WITH_PYTHON_UI_INFO, so you can right click and edit the python source for UI layout directly. --- CMakeLists.txt | 8 ++ source/blender/editors/interface/interface.c | 18 ++++ .../editors/interface/interface_handlers.c | 11 +++ .../editors/interface/interface_intern.h | 5 ++ .../blender/editors/space_text/space_text.c | 5 ++ source/blender/python/generic/py_capi_utils.c | 9 ++ source/blender/python/generic/py_capi_utils.h | 1 + .../windowmanager/intern/wm_operators.c | 82 +++++++++++++++++++ 8 files changed, 139 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cfda3a01e6..6e3247a7d2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,6 +213,10 @@ mark_as_advanced(WITH_CXX_GUARDEDALLOC) option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF) mark_as_advanced(WITH_ASSERT_ABORT) +option(WITH_PYTHON_UI_INFO "Allow navigating to UI source from the context menu" OFF) +mark_as_advanced(WITH_PYTHON_UI_INFO) + + if(APPLE) if(NOT CMAKE_OSX_ARCHITECTURES) set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING @@ -1326,6 +1330,10 @@ if(WITH_ASSERT_ABORT) add_definitions(-DWITH_ASSERT_ABORT) endif() +if(WITH_PYTHON_UI_INFO) + add_definitions(-DWITH_PYTHON_UI_INFO) +endif() + # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}") # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index b6c72c2e96f..ac1fab365f0 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2559,6 +2559,24 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, const char *str, if(block->curlayout) ui_layout_add_but(block->curlayout, but); +#ifdef WITH_PYTHON_UI_INFO + { + extern void PyC_FileAndNum_Safe(const char **filename, int *lineno); + + const char *fn; + int lineno= -1; + PyC_FileAndNum_Safe(&fn, &lineno); + if (lineno != -1) { + BLI_strncpy(but->py_dbg_fn, fn, sizeof(but->py_dbg_fn)); + but->py_dbg_ln= lineno; + } + else { + but->py_dbg_fn[0]= '\0'; + but->py_dbg_ln= -1; + } + } +#endif /* WITH_PYTHON_UI_INFO */ + return but; } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index f4400d2d7db..4df9d7f12e2 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4438,6 +4438,17 @@ static int ui_but_menu(bContext *C, uiBut *but) } } +#ifdef WITH_PYTHON_UI_INFO + if (but->py_dbg_ln != -1) { + PointerRNA ptr_props; + + WM_operator_properties_create(&ptr_props, "WM_OT_text_edit"); + RNA_string_set(&ptr_props, "filepath", but->py_dbg_fn); + RNA_int_set(&ptr_props, "line", but->py_dbg_ln); + uiItemFullO(layout, "WM_OT_text_edit", "Edit Source", ICON_NONE, ptr_props.data, WM_OP_EXEC_DEFAULT, 0); + } +#endif /* WITH_PYTHON_UI_INFO */ + uiPupMenuEnd(C, pup); return 1; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 12e9d39e896..c5843397c12 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -252,6 +252,11 @@ struct uiBut { /* pointer back */ uiBlock *block; + +#ifdef WITH_PYTHON_UI_INFO + char py_dbg_fn[240]; + int py_dbg_ln; +#endif }; struct uiBlock { diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 47f051e1ec4..51f4f1e579c 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -136,7 +136,12 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn) switch(wmn->data) { case ND_DISPLAY: + ED_area_tag_redraw(sa); + break; case ND_CURSOR: + if(st->text && st->text == wmn->reference) + text_scroll_to_cursor(st, sa); + ED_area_tag_redraw(sa); break; } diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index 1bccc8a24c4..e658532db24 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -184,6 +184,15 @@ void PyC_FileAndNum(const char **filename, int *lineno) } } +void PyC_FileAndNum_Safe(const char **filename, int *lineno) +{ + if(!PYC_INTERPRETER_ACTIVE) { + return; + } + + PyC_FileAndNum(filename, lineno); +} + /* Would be nice if python had this built in */ PyObject *PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n, ...) { diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h index 03a8637710e..f38ce209be2 100644 --- a/source/blender/python/generic/py_capi_utils.h +++ b/source/blender/python/generic/py_capi_utils.h @@ -36,6 +36,7 @@ PyObject * PyC_ExceptionBuffer(void); PyObject * PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n, ...); PyObject * PyC_Err_Format_Prefix(PyObject *exception_type_prefix, const char *format, ...); void PyC_FileAndNum(const char **filename, int *lineno); +void PyC_FileAndNum_Safe(const char **filename, int *lineno); /* checks python is running */ int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObject *type, const short is_double, const char *error_prefix); /* follow http://www.python.org/dev/peps/pep-0383/ */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index b0183d05ac2..4924457da1a 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -105,6 +105,11 @@ static GHash *global_ops_hash= NULL; +#ifdef WITH_PYTHON_UI_INFO +# include "DNA_text_types.h" +# include "BKE_text.h" +#endif + /* ************ operator API, exported ********** */ @@ -3505,6 +3510,79 @@ static void operatortype_ghash_free_cb(wmOperatorType *ot) MEM_freeN(ot); } +#ifdef WITH_PYTHON_UI_INFO + +static ScrArea *biggest_text_view(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa, *big= NULL; + int size, maxsize= 0; + + for(sa= sc->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_TEXT) { + size= sa->winx * sa->winy; + if(size > maxsize) { + maxsize= size; + big= sa; + } + } + } + return big; +} + +static int wm_text_edit_exec(bContext *C, wmOperator *op) +{ + Main *bmain= CTX_data_main(C); + Text *text; + + char filepath[240]; + int line= RNA_int_get(op->ptr, "line"); + RNA_string_get(op->ptr, "filepath", filepath); + + for (text=bmain->text.first; text; text=text->id.next) { + if (text->name && BLI_path_cmp(text->name, filepath) == 0) { + break; + } + } + + if (text == NULL) { + text= add_text(filepath, bmain->name); + } + + if (text == NULL) { + BKE_reportf(op->reports, RPT_WARNING, "file: '%s' can't be opened", filepath); + return OPERATOR_CANCELLED; + } + else { + /* naughty!, find text area to set, not good behavior + * but since this is a dev tool lets allow it - campbell */ + ScrArea *sa= biggest_text_view(C); + if(sa) { + SpaceText *st= sa->spacedata.first; + st->text= text; + } + + txt_move_toline(text, line - 1, FALSE); + WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + } + + return OPERATOR_FINISHED; +} + +static void WM_OT_text_edit(wmOperatorType *ot) +{ + ot->name= "Edit Text File"; + ot->idname= "WM_OT_text_edit"; + + ot->exec= wm_text_edit_exec; + + RNA_def_string_file_path(ot->srna, "filepath", "", FILE_MAX, "Path", ""); + RNA_def_int(ot->srna, "line", 0, INT_MIN, INT_MAX, "Line", "", 0, INT_MAX); +} + +#endif /* WITH_PYTHON_UI_INFO */ + + /* ******************************************************* */ /* called on initialize WM_exit() */ void wm_operatortype_free(void) @@ -3548,6 +3626,10 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_collada_import); #endif +#ifdef WITH_PYTHON_UI_INFO + WM_operatortype_append(WM_OT_text_edit); +#endif + } /* circleselect-like modal operators */ From 8e58fceab1452fc914e0fe88aaf7ecc80ea9bdb6 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Thu, 20 Oct 2011 05:18:02 +0000 Subject: [PATCH 065/119] Bugfix [#28976] crash when moving keys in dopesheet editor --- source/blender/editors/transform/transform_conversions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index c4295b15858..879dc425091 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2947,7 +2947,7 @@ static TransData *ActionFCurveToTransData(TransData *td, TransData2D **td2dv, FC TransData2D *td2d = *td2dv; int i; - if (fcu == NULL) + if (ELEM(NULL, fcu, fcu->bezt)) return td; for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) { From 9bbec84e7e14f11f86baeaea6a9a2bce6b7499de Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 05:30:26 +0000 Subject: [PATCH 066/119] initial support for unicode keyboard input for ghost & blenders WM. - currently X11 only, depends on Xinput (but should not break other os's). - ghost stores utf8 buffer, copies to wmEvent's - UI text input is currently the only area that uses this - not console or text editor. - no rna access yet. --- intern/ghost/GHOST_Types.h | 1 + intern/ghost/intern/GHOST_EventKey.h | 5 +- intern/ghost/intern/GHOST_SystemCarbon.cpp | 2 +- intern/ghost/intern/GHOST_SystemCocoa.mm | 6 +- intern/ghost/intern/GHOST_SystemSDL.cpp | 2 +- intern/ghost/intern/GHOST_SystemWin32.cpp | 3 +- intern/ghost/intern/GHOST_SystemX11.cpp | 55 ++++++++++++++++++- intern/ghost/intern/GHOST_SystemX11.h | 17 ++++++ intern/ghost/intern/GHOST_WindowX11.cpp | 14 +++++ intern/ghost/intern/GHOST_WindowX11.h | 8 +++ .../editors/interface/interface_handlers.c | 40 +++++++++++++- source/blender/windowmanager/WM_types.h | 4 +- .../windowmanager/intern/wm_event_system.c | 1 + source/gameengine/Ketsji/KX_PythonInit.cpp | 2 +- 14 files changed, 148 insertions(+), 12 deletions(-) diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h index dd399a7aa95..78fc3f69c7a 100644 --- a/intern/ghost/GHOST_Types.h +++ b/intern/ghost/GHOST_Types.h @@ -468,6 +468,7 @@ typedef struct { GHOST_TKey key; /** The ascii code for the key event ('\0' if none). */ char ascii; + char utf8_buf[6]; } GHOST_TEventKeyData; typedef struct { diff --git a/intern/ghost/intern/GHOST_EventKey.h b/intern/ghost/intern/GHOST_EventKey.h index 3581cd86b20..a8fca1e8f2d 100644 --- a/intern/ghost/intern/GHOST_EventKey.h +++ b/intern/ghost/intern/GHOST_EventKey.h @@ -55,6 +55,7 @@ public: { m_keyEventData.key = key; m_keyEventData.ascii = '\0'; + m_keyEventData.utf8_buf[0]= '\0'; m_data = &m_keyEventData; } @@ -65,11 +66,13 @@ public: * @param key The key code of the key. * @param ascii The ascii code for the key event. */ - GHOST_EventKey(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, GHOST_TKey key, char ascii) + GHOST_EventKey(GHOST_TUns64 msec, GHOST_TEventType type, GHOST_IWindow* window, GHOST_TKey key, char ascii, const char utf8_buf[6]) : GHOST_Event(msec, type, window) { m_keyEventData.key = key; m_keyEventData.ascii = ascii; + if (utf8_buf) memcpy(m_keyEventData.utf8_buf, utf8_buf, sizeof(m_keyEventData.utf8_buf)); + else m_keyEventData.utf8_buf[0]= '\0'; m_data = &m_keyEventData; } diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp index 02ff5c0f559..762966c9b9e 100644 --- a/intern/ghost/intern/GHOST_SystemCarbon.cpp +++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp @@ -931,7 +931,7 @@ OSStatus GHOST_SystemCarbon::handleKeyEvent(EventRef event) } else { type = GHOST_kEventKeyUp; } - pushEvent( new GHOST_EventKey( getMilliSeconds(), type, window, key, ascii) ); + pushEvent( new GHOST_EventKey( getMilliSeconds(), type, window, key, ascii, NULL) ); // } break; diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 303c2b24497..e8ec13f20df 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1656,6 +1656,8 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) } switch ([event type]) { + char utf8_buf[6]= {'\0'}; /* TODO, unicode input */ + case NSKeyDown: case NSKeyUp: charsIgnoringModifiers = [event charactersIgnoringModifiers]; @@ -1684,10 +1686,10 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) break; //Cmd-Q is directly handled by Cocoa if ([event type] == NSKeyDown) { - pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii) ); + pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii, utf8_buf) ); //printf("\nKey down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii); } else { - pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii) ); + pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii, utf8_buf) ); //printf("\nKey up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii); } break; diff --git a/intern/ghost/intern/GHOST_SystemSDL.cpp b/intern/ghost/intern/GHOST_SystemSDL.cpp index f2cc45731fa..11bd562f767 100644 --- a/intern/ghost/intern/GHOST_SystemSDL.cpp +++ b/intern/ghost/intern/GHOST_SystemSDL.cpp @@ -441,7 +441,7 @@ GHOST_SystemSDL::processEvent(SDL_Event *sdl_event) } } - g_event= new GHOST_EventKey(getMilliSeconds(), type, window, gkey, sym); + g_event= new GHOST_EventKey(getMilliSeconds(), type, window, gkey, sym, NULL); } break; } diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 38f3985b139..24b6474732e 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -725,7 +725,8 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP (LPSTR) &ascii, 1, NULL,NULL); - event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii); + /* TODO, last arg is utf8, need to pass utf8 arg */ + event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii, NULL); #ifdef GHOST_DEBUG std::cout << ascii << std::endl; diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp index 27a61cf57fc..209ffe501f4 100644 --- a/intern/ghost/intern/GHOST_SystemX11.cpp +++ b/intern/ghost/intern/GHOST_SystemX11.cpp @@ -89,6 +89,11 @@ GHOST_SystemX11( abort(); //was return before, but this would just mean it will crash later } + /* Open a connection to the X input manager */ +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + m_xim = XOpenIM(m_display, NULL, (char *)GHOST_X11_RES_NAME, (char *)GHOST_X11_RES_CLASS); +#endif + m_delete_window_atom = XInternAtom(m_display, "WM_DELETE_WINDOW", True); @@ -141,6 +146,10 @@ GHOST_SystemX11( GHOST_SystemX11:: ~GHOST_SystemX11() { +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + XCloseIM(m_xim); +#endif + XCloseDisplay(m_display); } @@ -500,9 +509,9 @@ GHOST_SystemX11::processEvent(XEvent *xe) case KeyRelease: { XKeyEvent *xke = &(xe->xkey); - KeySym key_sym = XLookupKeysym(xke,0); char ascii; + char utf8_buf[6]; /* 6 is enough for a utf8 char */ GHOST_TKey gkey = convertXKey(key_sym); GHOST_TEventType type = (xke->type == KeyPress) ? @@ -512,13 +521,55 @@ GHOST_SystemX11::processEvent(XEvent *xe) ascii = '\0'; } +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + /* getting unicode on key-up events gives XLookupNone status */ + if (xke->type == KeyPress) { + Status status; + int len; + + /* use utf8 because its not locale depentant, from xorg docs */ + if (!(len= Xutf8LookupString(window->getX11_XIC(), xke, utf8_buf, sizeof(utf8_buf), &key_sym, &status))) { + utf8_buf[0]= '\0'; + } + + if ((status == XLookupChars || status == XLookupBoth)) { + if ((unsigned char)utf8_buf[0] >= 32) { /* not an ascii control character */ + /* do nothing for now, this is valid utf8 */ + } + else { + utf8_buf[0]= '\0'; + } + } + else if (status == XLookupKeySym) { + /* this key doesn't have a text representation, it is a command + key of some sort */; + } + else { + printf("Bad keycode lookup. Keysym 0x%x Status: %s\n", + (unsigned int) key_sym, + (status == XBufferOverflow ? "BufferOverflow" : + status == XLookupNone ? "XLookupNone" : + status == XLookupKeySym ? "XLookupKeySym" : + "Unknown status")); + + printf("'%.*s' %p %p\n", len, utf8_buf, window->getX11_XIC(), m_xim); + } + } + else { + utf8_buf[0]= '\0'; + } +#else + utf8_buf[0]= '\0'; +#endif + g_event = new GHOST_EventKey( getMilliSeconds(), type, window, gkey, - ascii + ascii, + utf8_buf ); break; diff --git a/intern/ghost/intern/GHOST_SystemX11.h b/intern/ghost/intern/GHOST_SystemX11.h index b43d955d156..af45d68450f 100644 --- a/intern/ghost/intern/GHOST_SystemX11.h +++ b/intern/ghost/intern/GHOST_SystemX11.h @@ -40,6 +40,12 @@ #include "GHOST_System.h" #include "../GHOST_Types.h" +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) +# define GHOST_X11_RES_NAME "Blender" /* res_name */ +# define GHOST_X11_RES_CLASS "Blender" /* res_class */ +#endif + + class GHOST_WindowX11; /** @@ -203,6 +209,14 @@ public: return m_display; } +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + XIM + getX11_XIM( + ) { + return m_xim; + } +#endif + /* Helped function for get data from the clipboard. */ void getClipboard_xcout(XEvent evt, Atom sel, Atom target, unsigned char **txt, unsigned long *len, @@ -258,6 +272,9 @@ public: private : Display * m_display; +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + XIM m_xim; +#endif /// The vector of windows that need to be updated. std::vector m_dirty_windows; diff --git a/intern/ghost/intern/GHOST_WindowX11.cpp b/intern/ghost/intern/GHOST_WindowX11.cpp index 160980b6331..d26224d956a 100644 --- a/intern/ghost/intern/GHOST_WindowX11.cpp +++ b/intern/ghost/intern/GHOST_WindowX11.cpp @@ -392,6 +392,13 @@ GHOST_WindowX11( } } +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + m_xic = XCreateIC(m_system->getX11_XIM(), XNClientWindow, m_window, XNFocusWindow, m_window, + XNInputStyle, XIMPreeditNothing | XIMStatusNothing, + XNResourceName, GHOST_X11_RES_NAME, XNResourceClass, + GHOST_X11_RES_CLASS, NULL); +#endif + // Set the window icon XWMHints *xwmhints = XAllocWMHints(); XImage *x_image, *mask_image; @@ -1304,6 +1311,13 @@ GHOST_WindowX11:: XSetSelectionOwner(m_display, Clipboard_atom, None, CurrentTime); } +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + if (m_xic) { + XDestroyIC(m_xic); + } +#endif + + XDestroyWindow(m_display, m_window); XFree(m_visual); } diff --git a/intern/ghost/intern/GHOST_WindowX11.h b/intern/ghost/intern/GHOST_WindowX11.h index 2cb269ea919..ee662945eaa 100644 --- a/intern/ghost/intern/GHOST_WindowX11.h +++ b/intern/ghost/intern/GHOST_WindowX11.h @@ -221,6 +221,10 @@ public: { return NULL; } #endif // WITH_X11_XINPUT +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + XIC getX11_XIC() { return m_xic; } +#endif + /* * Need this in case that we want start the window * in FullScree or Maximized state. @@ -363,6 +367,10 @@ private : XTablet m_xtablet; #endif +#if defined(WITH_X11_XINPUT) && defined(X_HAVE_UTF8_STRING) + XIC m_xic; +#endif + void icccmSetState(int state); int icccmGetState() const; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 4df9d7f12e2..85103b42244 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1428,6 +1428,36 @@ static void ui_textedit_set_cursor_select(uiBut *but, uiHandleButtonData *data, ui_check_but(but); } +/* note: utf8 & ascii funcs should be merged */ +static int ui_textedit_type_utf8(uiBut *but, uiHandleButtonData *data, const char utf8_buf[6]) +{ + char *str; + int len, x, changed= 0; + size_t step= BLI_strnlen(utf8_buf, sizeof(utf8_buf)); + + str= data->str; + len= strlen(str); + + if(len-(but->selend - but->selsta)+1 <= data->maxlen) { + /* type over the current selection */ + if ((but->selend - but->selsta) > 0) + changed= ui_textedit_delete_selection(but, data); + + len= strlen(str); + if(len+step < data->maxlen) { + for(x= data->maxlen; x>but->pos; x--) + str[x]= str[x-step]; + memcpy(&str[but->pos], utf8_buf, step * sizeof(char)); + str[len+step]= '\0'; + + but->pos += step; + changed= 1; + } + } + + return changed; +} + static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char ascii) { char *str; @@ -1939,7 +1969,15 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle if(event->type == PADPERIOD && ascii == ',') ascii = '.'; - changed= ui_textedit_type_ascii(but, data, ascii); + if(event->utf8_buf[0]) { + /* keep this printf until utf8 is well tested */ + printf("%s: utf8 char '%s'\n", __func__, event->utf8_buf); + changed= ui_textedit_type_utf8(but, data, event->utf8_buf); + } + else { + changed= ui_textedit_type_ascii(but, data, ascii); + } + retval= WM_UI_HANDLER_BREAK; } diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index fec59e97194..f28fb08ac6e 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -341,8 +341,8 @@ typedef struct wmEvent { short val; /* press, release, scrollvalue */ int x, y; /* mouse pointer position, screen coord */ int mval[2]; /* region mouse position, name convention pre 2.5 :) */ - short unicode; /* future, ghost? */ - char ascii; /* from ghost */ + char utf8_buf[6]; /* from, ghost if utf8 is enabled for the platform */ + char ascii; /* from ghost, fallback if utf8 isnt set */ char pad; /* previous state */ diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 33e98007fed..7dcb4cf091f 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2578,6 +2578,7 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U GHOST_TEventKeyData *kd= customdata; event.type= convert_key(kd->key); event.ascii= kd->ascii; + strcpy(event.utf8_buf, kd->utf8_buf); event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE; /* exclude arrow keys, esc, etc from text input */ diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index 40917a67c2f..e86831b9323 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -1816,7 +1816,7 @@ PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecur /* Yet another gotcha in the py api * Cant run PySys_SetArgv more then once because this adds the * binary dir to the sys.path each time. - * Id have thaught python being totally restarted would make this ok but + * Id have thought python being totally restarted would make this ok but * somehow it remembers the sys.path - Campbell */ static bool first_time = true; From e0604e5941f958f332911b0948cddfc1f21f0014 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 20 Oct 2011 06:29:14 +0000 Subject: [PATCH 067/119] OSX fix for recent utf8 commit --- intern/ghost/intern/GHOST_SystemCocoa.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index e8ec13f20df..58a856375bb 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1655,8 +1655,8 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) return GHOST_kFailure; } + char utf8_buf[6]= {'\0'}; /* TODO, unicode input */ switch ([event type]) { - char utf8_buf[6]= {'\0'}; /* TODO, unicode input */ case NSKeyDown: case NSKeyUp: From 415f35d1dc916edcb9b050f25ae406c6eee2b63d Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Thu, 20 Oct 2011 06:38:45 +0000 Subject: [PATCH 068/119] =?UTF-8?q?bge=20bugfix:=20patch=20#28893=20"Fix?= =?UTF-8?q?=20for=20#28753=20and=20some=20other=20changes=20for=20BGE=20pr?= =?UTF-8?q?ojection=20code"=20by=20Juha=20M=C3=A4ki-Kanto=20(kanttori)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BlenderRoutines/BL_KetsjiEmbedStart.cpp | 9 ++++++++- source/gameengine/Ketsji/KX_KetsjiEngine.cpp | 10 ++++++++-- .../gameengine/Ketsji/KX_MouseFocusSensor.cpp | 18 +++++++----------- .../Rasterizer/RAS_FramingManager.cpp | 2 +- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index ce542671425..af4df5035bb 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -360,7 +360,14 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == RV3D_ORTHO)); ketsjiengine->SetCameraOverrideProjectionMatrix(MT_CmMatrix4x4(rv3d->winmat)); ketsjiengine->SetCameraOverrideViewMatrix(MT_CmMatrix4x4(rv3d->viewmat)); - ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far); + if(rv3d->persp == RV3D_ORTHO) + { + ketsjiengine->SetCameraOverrideClipping(-v3d->far, v3d->far); + } + else + { + ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far); + } ketsjiengine->SetCameraOverrideLens(v3d->lens); } diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp index 8e6126bb173..afc3bf2b53d 100644 --- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp +++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp @@ -1400,8 +1400,14 @@ void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene) KX_Camera* activecam = NULL; RAS_CameraData camdata = RAS_CameraData(); - if (override_camera) camdata.m_lens = m_overrideCamLens; - + if (override_camera) + { + camdata.m_lens = m_overrideCamLens; + camdata.m_clipstart = m_overrideCamNear; + camdata.m_clipend = m_overrideCamFar; + + camdata.m_perspective= !m_overrideCamUseOrtho; + } activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata); activecam->SetName("__default__cam__"); diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp index 34f5c26415d..e1978263a12 100644 --- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp +++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp @@ -240,29 +240,23 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam) /* build the from and to point in normalized device coordinates - * Looks like normailized device coordinates are [-1,1] in x [-1,1] in y - * [0,-1] in z + * Normalized device coordinates are [-1,1] in x, y, z * * The actual z coordinates used don't have to be exact just infront and * behind of the near and far clip planes. */ frompoint.setValue( (2 * (m_x-x_lb) / width) - 1.0, 1.0 - (2 * (m_y_inv - y_lb) / height), - /*cam->GetCameraData()->m_perspective ? 0.0:cdata->m_clipstart,*/ /* real clipstart is scaled in ortho for some reason, zero is ok */ - 0.0, /* nearclip, see above comments */ + -1.0, 1.0 ); topoint.setValue( (2 * (m_x-x_lb) / width) - 1.0, 1.0 - (2 * (m_y_inv-y_lb) / height), - cam->GetCameraData()->m_perspective ? 1.0:cam->GetCameraData()->m_clipend, /* farclip, see above comments */ + 1.0, 1.0 ); - - /* camera to world */ - MT_Transform wcs_camcs_tranform = cam->GetWorldToCamera(); - MT_Transform cams_wcs_transform; - cams_wcs_transform.invert(wcs_camcs_tranform); - MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cams_wcs_transform); + /* camera to world */ + MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cam->GetCameraToWorld()); /* badly defined, the first time round.... I wonder why... I might * want to guard against floating point errors here.*/ @@ -272,6 +266,8 @@ bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam) /* shoot-points: clip to cam to wcs . win to clip was already done.*/ frompoint = clip_camcs_matrix * frompoint; topoint = clip_camcs_matrix * topoint; + /* clipstart = - (frompoint[2] / frompoint[3]) + * clipend = - (topoint[2] / topoint[3]) */ frompoint = camcs_wcs_matrix * frompoint; topoint = camcs_wcs_matrix * topoint; diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.cpp b/source/gameengine/Rasterizer/RAS_FramingManager.cpp index edacd1dd0f1..6ca402691cb 100644 --- a/source/gameengine/Rasterizer/RAS_FramingManager.cpp +++ b/source/gameengine/Rasterizer/RAS_FramingManager.cpp @@ -99,7 +99,7 @@ ComputeDefaultOrtho( frustum.x1 = -frustum.x2; frustum.y2 = sizeY; frustum.y1 = -frustum.y2; - frustum.camnear = -camfar; + frustum.camnear = camnear; frustum.camfar = camfar; } From 3a51a446c1b14a5e4ac68007eef2d8a8bfdc49de Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Thu, 20 Oct 2011 07:03:08 +0000 Subject: [PATCH 069/119] Fix for 7.1 audio export being misscalculated... --- intern/audaspace/intern/AUD_ChannelMapperReader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp index 27d10ce6dc8..7764164a9b0 100644 --- a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp +++ b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp @@ -352,7 +352,7 @@ const float AUD_ChannelMapperReader::SURROUND71_ANGLES[] = 0.0f * M_PI / 180.0f, 0.0f * M_PI / 180.0f, -110.0f * M_PI / 180.0f, - 110.0f * M_PI / 180.0f + 110.0f * M_PI / 180.0f, -150.0f * M_PI / 180.0f, 150.0f * M_PI / 180.0f }; From 7aca04ad0a5d71f555008671ba740a6396bb0db0 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 07:12:14 +0000 Subject: [PATCH 070/119] minor changes to test editing - use BLI_strncpy_utf8 for utf8 buttons when pasting. - reuse code for ui_textedit_type_ascii / ui_textedit_type_utf8. - use memmove rather then for() loops in string editing. - merge jump/all arguments in interface_handlers.c into one enum arg. --- source/blender/editors/interface/interface.c | 4 +- .../editors/interface/interface_anim.c | 4 +- .../editors/interface/interface_handlers.c | 129 +++++++----------- .../editors/interface/interface_intern.h | 1 + 4 files changed, 56 insertions(+), 82 deletions(-) diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index ac1fab365f0..16edd0a1a9e 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1747,7 +1747,9 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) } else if(but->type == TEX) { /* string */ - BLI_strncpy(but->poin, str, but->hardmax); + if(ui_is_but_utf8(but)) BLI_strncpy_utf8(but->poin, str, but->hardmax); + else BLI_strncpy(but->poin, str, but->hardmax); + return 1; } else if(but->type == SEARCH_MENU) { diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 6c661ba014e..545d60bfcb9 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -115,7 +115,7 @@ int ui_but_anim_expression_set(uiBut *but, const char *str) driver= fcu->driver; if(driver && driver->type == DRIVER_TYPE_PYTHON) { - BLI_strncpy(driver->expression, str, sizeof(driver->expression)); + BLI_strncpy_utf8(driver->expression, str, sizeof(driver->expression)); driver->flag |= DRIVER_FLAG_RECOMPILE; WM_event_add_notifier(but->block->evil_C, NC_ANIMATION|ND_KEYFRAME, NULL); return 1; @@ -164,7 +164,7 @@ int ui_but_anim_expression_create(uiBut *but, const char *str) /* set the expression */ // TODO: need some way of identifying variables used - BLI_strncpy(driver->expression, str, sizeof(driver->expression)); + BLI_strncpy_utf8(driver->expression, str, sizeof(driver->expression)); /* FIXME: for now, assume that * - for expressions, users are likely to be using "frame" -> current frame" as a variable diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 85103b42244..1f30f8a5109 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -107,6 +107,12 @@ typedef enum uiHandleButtonState { BUTTON_STATE_EXIT } uiHandleButtonState; +typedef enum uiButtonJumpType { + BUTTON_EDIT_JUMP_NONE, + BUTTON_EDIT_JUMP_DELIM, + BUTTON_EDIT_JUMP_ALL +} uiButtonJumpType; + typedef struct uiHandleButtonData { wmWindowManager *wm; wmWindow *window; @@ -260,7 +266,7 @@ static int ui_is_a_warp_but(uiBut *but) } /* file selectors are exempt from utf-8 checks */ -static int ui_is_utf8_but(uiBut *but) +int ui_is_but_utf8(uiBut *but) { if (but->rnaprop) { const int subtype= RNA_property_subtype(but->rnaprop); @@ -1163,7 +1169,10 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, } else { button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING); - BLI_strncpy(active_data->str, buf, active_data->maxlen); + + if(ui_is_but_utf8(but)) BLI_strncpy_utf8(active_data->str, buf, active_data->maxlen); + else BLI_strncpy(active_data->str, buf, active_data->maxlen); + if(but->type == SEARCH_MENU) { /* else uiSearchboxData.active member is not updated [#26856] */ ui_searchbox_update(C, data->searchbox, but, 1); @@ -1282,18 +1291,18 @@ static int ui_textedit_step_prev_utf8(const char *str, size_t UNUSED(maxlen), sh static void ui_textedit_step_utf8(const char *str, size_t maxlen, short *pos, const char direction, - const short do_jump, const short do_all) + uiButtonJumpType jump) { const short pos_prev= *pos; if(direction) { /* right*/ - if(do_jump) { + if(jump != BUTTON_EDIT_JUMP_NONE) { /* jump between special characters (/,\,_,-, etc.), * look at function test_special_char() for complete * list of special character, ctr -> */ while((*pos) < maxlen) { if (ui_textedit_step_next_utf8(str, maxlen, pos)) { - if(!do_all && test_special_char(str[(*pos)])) break; + if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break; } else { break; /* unlikely but just incase */ @@ -1305,7 +1314,7 @@ static void ui_textedit_step_utf8(const char *str, size_t maxlen, } } else { /* left */ - if(do_jump) { + if(jump != BUTTON_EDIT_JUMP_NONE) { /* left only: compensate for index/change in direction */ ui_textedit_step_prev_utf8(str, maxlen, pos); @@ -1314,7 +1323,7 @@ static void ui_textedit_step_utf8(const char *str, size_t maxlen, * list of special character, ctr -> */ while ((*pos) > 0) { if (ui_textedit_step_prev_utf8(str, maxlen, pos)) { - if(!do_all && test_special_char(str[(*pos)])) break; + if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break; } else { break; @@ -1432,24 +1441,23 @@ static void ui_textedit_set_cursor_select(uiBut *but, uiHandleButtonData *data, static int ui_textedit_type_utf8(uiBut *but, uiHandleButtonData *data, const char utf8_buf[6]) { char *str; - int len, x, changed= 0; - size_t step= BLI_strnlen(utf8_buf, sizeof(utf8_buf)); + int len, changed= 0; str= data->str; len= strlen(str); if(len-(but->selend - but->selsta)+1 <= data->maxlen) { + int step= BLI_strnlen(utf8_buf, sizeof(utf8_buf)); + /* type over the current selection */ - if ((but->selend - but->selsta) > 0) + if ((but->selend - but->selsta) > 0) { changed= ui_textedit_delete_selection(but, data); + len= strlen(str); + } - len= strlen(str); - if(len+step < data->maxlen) { - for(x= data->maxlen; x>but->pos; x--) - str[x]= str[x-step]; + if(len + step < data->maxlen) { + memmove(&str[but->pos + step], &str[but->pos], (len + 1) - but->pos); memcpy(&str[but->pos], utf8_buf, step * sizeof(char)); - str[len+step]= '\0'; - but->pos += step; changed= 1; } @@ -1460,33 +1468,11 @@ static int ui_textedit_type_utf8(uiBut *but, uiHandleButtonData *data, const cha static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char ascii) { - char *str; - int len, x, changed= 0; - - str= data->str; - len= strlen(str); - - if(len-(but->selend - but->selsta)+1 <= data->maxlen) { - /* type over the current selection */ - if ((but->selend - but->selsta) > 0) - changed= ui_textedit_delete_selection(but, data); - - len= strlen(str); - if(len+1 < data->maxlen) { - for(x= data->maxlen; x>but->pos; x--) - str[x]= str[x-1]; - str[but->pos]= ascii; - str[len+1]= '\0'; - - but->pos++; - changed= 1; - } - } - - return changed; + char utf8_buf[6]= {ascii, '\0'}; + return ui_textedit_type_utf8(but, data, utf8_buf); } -static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump, int jump_all) +static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, uiButtonJumpType jump) { const char *str= data->str; const int len= strlen(str); @@ -1495,7 +1481,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction /* special case, quit selection and set cursor */ if (has_sel && !select) { - if (jump_all) { + if (jump == BUTTON_EDIT_JUMP_ALL) { but->selsta = but->selend= but->pos = direction ? len : 0; } else { @@ -1509,7 +1495,7 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction data->selextend = 0; } else { - ui_textedit_step_utf8(str, len, &but->pos, direction, jump, jump_all); + ui_textedit_step_utf8(str, len, &but->pos, direction, jump); if(select) { /* existing selection */ @@ -1558,35 +1544,33 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction } } -static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, const int all, const int jump) +static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, uiButtonJumpType jump) { char *str= data->str; const int len= strlen(str); - int x, changed= 0; + int changed= 0; - if(all) { + if(jump == BUTTON_EDIT_JUMP_ALL) { if(len) changed=1; - str[0]= 0; + str[0]= '\0'; but->pos= 0; } else if(direction) { /* delete */ if ((but->selend - but->selsta) > 0) { changed= ui_textedit_delete_selection(but, data); } - else if(but->pos>=0 && but->pospos>=0 && but->pospos; int step; - ui_textedit_step_utf8(str, len, &pos, direction, jump, all); + ui_textedit_step_utf8(str, len, &pos, direction, jump); step= pos - but->pos; - for(x=but->pos; xpos], &str[but->pos + step], (len + 1) - but->pos); changed= 1; } } else { /* backspace */ - if(len!=0) { + if (len != 0) { if ((but->selend - but->selsta) > 0) { changed= ui_textedit_delete_selection(but, data); } @@ -1594,13 +1578,9 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio short pos= but->pos; int step; - ui_textedit_step_utf8(str, len, &pos, direction, jump, all); + ui_textedit_step_utf8(str, len, &pos, direction, jump); step= but->pos - pos; - - for(x=but->pos; xpos - step], &str[but->pos], (len + 1) - but->pos); but->pos -= step; changed= 1; } @@ -1710,19 +1690,9 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) ui_get_but_string(but, data->str, data->maxlen); if(ELEM3(but->type, NUM, NUMABS, NUMSLI)) { - /* XXX: we dont have utf editing yet so for numbers its best to strip out utf chars - * this is so the deg' synbol isnt included in number editing fields: bug 22274 */ - int i; - for(i=0; data->str[i]; i++) { - if(!isascii(data->str[i])) { - /* no stripping actually: just convert to alt name */ - ui_convert_to_unit_alt_name(but, data->str, data->maxlen); - break; - } - } + ui_convert_to_unit_alt_name(but, data->str, data->maxlen); } - - + data->origstr= BLI_strdup(data->str); data->selextend= 0; data->selstartx= 0; @@ -1747,7 +1717,7 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data) { if(but) { - if(ui_is_utf8_but(but)) { + if(ui_is_but_utf8(but)) { int strip= BLI_utf8_invalid_strip(but->editstr, strlen(but->editstr)); /* not a file?, strip non utf-8 chars */ if(strip) { @@ -1899,11 +1869,11 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle } break; case RIGHTARROWKEY: - ui_textedit_move(but, data, 1, event->shift, event->ctrl, FALSE); + ui_textedit_move(but, data, 1, event->shift, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE); retval= WM_UI_HANDLER_BREAK; break; case LEFTARROWKEY: - ui_textedit_move(but, data, 0, event->shift, event->ctrl, FALSE); + ui_textedit_move(but, data, 0, event->shift, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE); retval= WM_UI_HANDLER_BREAK; break; case DOWNARROWKEY: @@ -1913,7 +1883,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle } /* pass on purposedly */ case ENDKEY: - ui_textedit_move(but, data, 1, event->shift, TRUE, TRUE); + ui_textedit_move(but, data, 1, event->shift, BUTTON_EDIT_JUMP_ALL); retval= WM_UI_HANDLER_BREAK; break; case UPARROWKEY: @@ -1923,7 +1893,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle } /* pass on purposedly */ case HOMEKEY: - ui_textedit_move(but, data, 0, event->shift, TRUE, TRUE); + ui_textedit_move(but, data, 0, event->shift, BUTTON_EDIT_JUMP_ALL); retval= WM_UI_HANDLER_BREAK; break; case PADENTER: @@ -1932,12 +1902,12 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle retval= WM_UI_HANDLER_BREAK; break; case DELKEY: - changed= ui_textedit_delete(but, data, 1, 0, event->ctrl); + changed= ui_textedit_delete(but, data, 1, event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE); retval= WM_UI_HANDLER_BREAK; break; case BACKSPACEKEY: - changed= ui_textedit_delete(but, data, 0, event->shift, event->ctrl); + changed= ui_textedit_delete(but, data, 0, event->shift ? BUTTON_EDIT_JUMP_ALL : (event->ctrl ? BUTTON_EDIT_JUMP_DELIM : BUTTON_EDIT_JUMP_NONE)); retval= WM_UI_HANDLER_BREAK; break; @@ -1969,9 +1939,10 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle if(event->type == PADPERIOD && ascii == ',') ascii = '.'; - if(event->utf8_buf[0]) { + if(event->utf8_buf[0] || 1) { /* keep this printf until utf8 is well tested */ printf("%s: utf8 char '%s'\n", __func__, event->utf8_buf); + // strcpy(event->utf8_buf, "12345"); changed= ui_textedit_type_utf8(but, data, event->utf8_buf); } else { diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index c5843397c12..b7a2227f98a 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -373,6 +373,7 @@ extern void ui_check_but(uiBut *but); extern int ui_is_but_float(uiBut *but); extern int ui_is_but_unit(uiBut *but); extern int ui_is_but_rna_valid(uiBut *but); +extern int ui_is_but_utf8(uiBut *but); extern void ui_bounds_block(uiBlock *block); extern void ui_block_translate(uiBlock *block, int x, int y); From f1fe89acf1f42df4becfc5dd53d2d3ea8635a72c Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Thu, 20 Oct 2011 07:20:17 +0000 Subject: [PATCH 071/119] Fix for bug #28979 "Action actuator breaks animation" reported by Goran Milovanovic. Apparently IPO options can be set too frequently... --- source/gameengine/Ketsji/BL_Action.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/gameengine/Ketsji/BL_Action.cpp b/source/gameengine/Ketsji/BL_Action.cpp index 08794042e37..9e8f53ad219 100644 --- a/source/gameengine/Ketsji/BL_Action.cpp +++ b/source/gameengine/Ketsji/BL_Action.cpp @@ -361,9 +361,6 @@ void BL_Action::Update(float curtime) break; } - - if (!m_done) - InitIPO(); } if (m_obj->GetGameObjectType() == SCA_IObject::OBJ_ARMATURE) @@ -446,8 +443,6 @@ void BL_Action::Update(float curtime) obj->SetActiveAction(NULL, 0, curtime); } - - InitIPO(); m_obj->UpdateIPO(m_localtime, m_ipo_flags & ACT_IPOFLAG_CHILD); } } From daf51fe6cd1b47d3727e932bb465b8e2a8723d41 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 20 Oct 2011 07:56:04 +0000 Subject: [PATCH 072/119] A big set of UI messages fixes and tweaks! No functional changes. --- release/scripts/startup/bl_operators/anim.py | 2 +- .../scripts/startup/bl_operators/object.py | 2 +- .../scripts/startup/bl_operators/presets.py | 2 +- .../bl_operators/screen_play_rendered_anim.py | 2 +- .../startup/bl_operators/vertexpaint_dirt.py | 2 +- source/blender/editors/armature/poseobject.c | 2 +- source/blender/editors/curve/editfont.c | 2 +- source/blender/editors/object/object_edit.c | 2 +- source/blender/editors/object/object_hook.c | 2 +- source/blender/editors/screen/screen_ops.c | 2 +- .../editors/space_image/image_buttons.c | 4 +- .../blender/editors/space_info/info_report.c | 2 +- .../blender/editors/space_logic/logic_ops.c | 4 +- source/blender/makesrna/intern/rna_curve.c | 8 +-- source/blender/makesrna/intern/rna_fcurve.c | 5 +- source/blender/makesrna/intern/rna_image.c | 8 +-- source/blender/makesrna/intern/rna_mesh.c | 21 +++--- source/blender/makesrna/intern/rna_nodetree.c | 6 +- source/blender/makesrna/intern/rna_object.c | 16 ++--- .../makesrna/intern/rna_object_force.c | 32 ++++++--- source/blender/makesrna/intern/rna_pose.c | 68 ++++++++++++------- source/blender/makesrna/intern/rna_scene.c | 20 +++--- .../makesrna/intern/rna_sculpt_paint.c | 19 ++++-- .../blender/makesrna/intern/rna_sequencer.c | 2 +- source/blender/makesrna/intern/rna_smoke.c | 8 +-- source/blender/makesrna/intern/rna_texture.c | 12 ++-- source/blender/makesrna/intern/rna_userdef.c | 14 ++-- source/blender/makesrna/intern/rna_wm.c | 2 +- source/blender/makesrna/intern/rna_world.c | 4 +- 29 files changed, 160 insertions(+), 115 deletions(-) diff --git a/release/scripts/startup/bl_operators/anim.py b/release/scripts/startup/bl_operators/anim.py index 3051914cf00..e1d33198142 100644 --- a/release/scripts/startup/bl_operators/anim.py +++ b/release/scripts/startup/bl_operators/anim.py @@ -228,7 +228,7 @@ class BakeAction(Operator): class ClearUselessActions(Operator): """Mark actions with no F-Curves for deletion after save+reload of """ \ - """file preserving "action libraries""" + """file preserving \"action libraries\"""" bl_idname = "anim.clear_useless_actions" bl_label = "Clear Useless Actions" bl_options = {'REGISTER', 'UNDO'} diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index 51c530db672..738cc7b24e0 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -122,7 +122,7 @@ class SelectCamera(Operator): class SelectHierarchy(Operator): - '''Select object relative to the active objects position''' \ + '''Select object relative to the active object's position''' \ '''in the hierarchy''' bl_idname = "object.select_hierarchy" bl_label = "Select Hierarchy" diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index 2fd0c4a9e12..2e42105fbf0 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -142,7 +142,7 @@ class AddPresetBase(): class ExecutePreset(Operator): - ''' Executes a preset ''' + '''Execute a preset''' bl_idname = "script.execute_preset" bl_label = "Execute a Python Preset" diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py index 3479a3f9e53..5ee7cf86142 100644 --- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -66,7 +66,7 @@ def guess_player_path(preset): class PlayRenderedAnim(Operator): - '''Plays back rendered frames/movies using an external player''' + '''Play back rendered frames/movies using an external player''' bl_idname = "render.play_rendered_anim" bl_label = "Play Rendered Animation" bl_options = {'REGISTER'} diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py index ce4942ae238..5fb5c7f39cf 100644 --- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py +++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py @@ -159,7 +159,7 @@ class VertexPaintDirt(Operator): ) blur_iterations = IntProperty( name="Blur Iterations", - description="Number times to blur the colors. (higher blurs more)", + description="Number times to blur the colors (higher blurs more)", min=0, max=40, default=1, ) diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 61935aa72ca..a978f327993 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1197,7 +1197,7 @@ void POSE_OT_paste (wmOperatorType *ot) /* identifiers */ ot->name= "Paste Pose"; ot->idname= "POSE_OT_paste"; - ot->description= "Pastes the stored pose on to the current pose"; + ot->description= "Paste the stored pose on to the current pose"; /* api callbacks */ ot->exec= pose_paste_exec; diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 1f2ef79e091..60b1cc8f5cd 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1046,7 +1046,7 @@ void FONT_OT_change_spacing(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_int(ot->srna, "delta", 1, -20, 20, "Delta", "Amount to decrease or increasing character spacing with", -20, 20); + RNA_def_int(ot->srna, "delta", 1, -20, 20, "Delta", "Amount to decrease or increase character spacing with", -20, 20); } /************************* change character **********************/ diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 76cbfdc88e7..0ad11d1a997 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -585,7 +585,7 @@ void OBJECT_OT_posemode_toggle(wmOperatorType *ot) /* identifiers */ ot->name= "Toggle Pose Mode"; ot->idname= "OBJECT_OT_posemode_toggle"; - ot->description= "Enables or disables posing/selecting bones"; + ot->description= "Enable or disable posing/selecting bones"; /* api callbacks */ ot->exec= posemode_exec; diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index ce01bef34f6..9f1ad8e4c3c 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -837,7 +837,7 @@ void OBJECT_OT_hook_select(wmOperatorType *ot) /* identifiers */ ot->name= "Select Hook"; - ot->description= "Selects effected vertices on mesh"; + ot->description= "Select affected vertices on mesh"; ot->idname= "OBJECT_OT_hook_select"; /* callbacks */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index a2be1e8fa6f..bae6fa9d6b0 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -649,7 +649,7 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot) ot->flag= OPTYPE_BLOCKING; - RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2); + RNA_def_int(ot->srna, "modifier", 0, 0, 2, "Modifier", "Modifier state", 0, 2); } /* ************** swap area operator *********************************** */ diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 71d9dd3adcb..beeb5e3532f 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -704,8 +704,8 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, const char sprintf(str, "(%d) Frames:", iuser->framenr); else strcpy(str, "Frames:"); uiBlockBeginAlign(block); - uiDefButI(block, NUM, imagechanged, str, 10, 90,150, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Sets the number of images of a movie to use"); - uiDefButI(block, NUM, imagechanged, "StartFr:", 160,90,150,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Sets the global starting frame of the movie"); + uiDefButI(block, NUM, imagechanged, str, 10, 90,150, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Number of images of a movie to use"); + uiDefButI(block, NUM, imagechanged, "StartFr:", 160,90,150,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Global starting frame of the movie"); } #endif } diff --git a/source/blender/editors/space_info/info_report.c b/source/blender/editors/space_info/info_report.c index d0a80cddf56..52930626964 100644 --- a/source/blender/editors/space_info/info_report.c +++ b/source/blender/editors/space_info/info_report.c @@ -160,7 +160,7 @@ void INFO_OT_select_pick(wmOperatorType *ot) /* ot->flag= OPTYPE_REGISTER; */ /* properties */ - RNA_def_int(ot->srna, "report_index", 0, 0, INT_MAX, "Report", "The index of the report", 0, INT_MAX); + RNA_def_int(ot->srna, "report_index", 0, 0, INT_MAX, "Report", "Index of the report", 0, INT_MAX); } diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c index b7f9af09348..b1c0dd02e4b 100644 --- a/source/blender/editors/space_logic/logic_ops.c +++ b/source/blender/editors/space_logic/logic_ops.c @@ -478,7 +478,7 @@ static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(e static void LOGIC_OT_actuator_remove(wmOperatorType *ot) { ot->name= "Remove Actuator"; - ot->description= "Remove a actuator from the active object"; + ot->description= "Remove an actuator from the active object"; ot->idname= "LOGIC_OT_actuator_remove"; ot->invoke= actuator_remove_invoke; @@ -533,7 +533,7 @@ static void LOGIC_OT_actuator_add(wmOperatorType *ot) /* identifiers */ ot->name= "Add Actuator"; - ot->description = "Add a actuator to the active object"; + ot->description = "Add an actuator to the active object"; ot->idname= "LOGIC_OT_actuator_add"; /* api callbacks */ diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 49f39a207d2..c03a10f2170 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -722,7 +722,7 @@ static void rna_def_bpoint(BlenderRNA *brna) prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "vec[3]"); - RNA_def_property_ui_text(prop, "Weight", "Nurbs weight"); + RNA_def_property_ui_text(prop, "Weight", "NURBS weight"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); /* Number values */ @@ -1446,7 +1446,7 @@ static void rna_def_curve_nurb(BlenderRNA *brna) srna= RNA_def_struct(brna, "Spline", NULL); RNA_def_struct_sdna(srna, "Nurb"); - RNA_def_struct_ui_text(srna, "Spline", "Element of a curve, either Nurbs, Bezier or Polyline or a character with text objects"); + RNA_def_struct_ui_text(srna, "Spline", "Element of a curve, either NURBS, Bezier or Polyline or a character with text objects"); prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "bp", NULL); @@ -1496,13 +1496,13 @@ static void rna_def_curve_nurb(BlenderRNA *brna) prop= RNA_def_property(srna, "order_u", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "orderu"); RNA_def_property_range(prop, 2, 6); - RNA_def_property_ui_text(prop, "Order U", "Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area"); + RNA_def_property_ui_text(prop, "Order U", "NURBS order in the U direction (for splines and surfaces, higher values let points influence a greater area)"); RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_u"); prop= RNA_def_property(srna, "order_v", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "orderv"); RNA_def_property_range(prop, 2, 6); - RNA_def_property_ui_text(prop, "Order V", "Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area"); + RNA_def_property_ui_text(prop, "Order V", "NURBS order in the V direction (for surfaces only, higher values let points influence a greater area)"); RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_v"); diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 43812ad4a01..08a71e0cd4f 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -1368,13 +1368,14 @@ static void rna_def_fkeyframe(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "ipo"); RNA_def_property_enum_items(prop, beztriple_interpolation_mode_items); RNA_def_property_ui_text(prop, "Interpolation", - "Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe"); + "Interpolation method to use for segment of the F-Curve from " + "this Keyframe until the next Keyframe"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "hide"); RNA_def_property_enum_items(prop, beztriple_keyframe_type_items); - RNA_def_property_ui_text(prop, "Type", "The type of keyframe (for visual purposes only"); + RNA_def_property_ui_text(prop, "Type", "Type of keyframe (for visual purposes only)"); RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL); /* Vector values */ diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index eac4932ac43..66bcc5951cd 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -369,25 +369,25 @@ static void rna_def_imageuser(BlenderRNA *brna) prop= RNA_def_property(srna, "frame_duration", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "frames"); RNA_def_property_range(prop, 0, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Frames", "Sets the number of images of a movie to use"); + RNA_def_property_ui_text(prop, "Frames", "Number of images of a movie to use"); RNA_def_property_update(prop, 0, "rna_ImageUser_update"); prop= RNA_def_property(srna, "frame_offset", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "offset"); RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Offset", "Offsets the number of the frame to use in the animation"); + RNA_def_property_ui_text(prop, "Offset", "Offset the number of the frame to use in the animation"); RNA_def_property_update(prop, 0, "rna_ImageUser_update"); prop= RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "sfra"); RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Start Frame", "Sets the global starting frame of the movie/sequence, assuming first picture has a #1"); + RNA_def_property_ui_text(prop, "Start Frame", "Global starting frame of the movie/sequence, assuming first picture has a #1"); RNA_def_property_update(prop, 0, "rna_ImageUser_update"); prop= RNA_def_property(srna, "fields_per_frame", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "fie_ima"); RNA_def_property_range(prop, 1, 200); - RNA_def_property_ui_text(prop, "Fields per Frame", "The number of fields per rendered frame (2 fields is 1 image)"); + RNA_def_property_ui_text(prop, "Fields per Frame", "Number of fields per rendered frame (2 fields is 1 image)"); RNA_def_property_update(prop, 0, "rna_ImageUser_update"); prop= RNA_def_property(srna, "multilayer_layer", PROP_INT, PROP_UNSIGNED); diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index d35b7ad38fb..c4f33f9cf10 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -1383,20 +1383,20 @@ static void rna_def_mtface(BlenderRNA *brna) prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_get", "rna_MeshTextureFaceLayer_active_set"); - RNA_def_property_ui_text(prop, "Active", "Sets the layer as active for display and editing"); + RNA_def_property_ui_text(prop, "Active", "Set the layer as active for display and editing"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); prop= RNA_def_property(srna, "active_render", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "active_rnd", 0); RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_active_render_get", "rna_MeshTextureFaceLayer_active_render_set"); - RNA_def_property_ui_text(prop, "Active Render", "Sets the layer as active for rendering"); + RNA_def_property_ui_text(prop, "Active Render", "Set the layer as active for rendering"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); prop= RNA_def_property(srna, "active_clone", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "active_clone", 0); RNA_def_property_boolean_funcs(prop, "rna_MeshTextureFaceLayer_clone_get", "rna_MeshTextureFaceLayer_clone_set"); - RNA_def_property_ui_text(prop, "Active Clone", "Sets the layer as active for cloning"); + RNA_def_property_ui_text(prop, "Active Clone", "Set the layer as active for cloning"); RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); prop= RNA_def_property(srna, "data", PROP_COLLECTION, PROP_NONE); @@ -1835,7 +1835,8 @@ static void rna_def_mesh(BlenderRNA *brna) /* UV textures */ prop= RNA_def_property(srna, "uv_textures", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", NULL, NULL, NULL, "rna_Mesh_uv_textures_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_uv_textures_begin", NULL, NULL, NULL, + "rna_Mesh_uv_textures_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshTextureFaceLayer"); RNA_def_property_ui_text(prop, "UV Textures", ""); rna_def_uv_textures(brna, prop); @@ -1865,26 +1866,30 @@ static void rna_def_mesh(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_colors", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", NULL, NULL, NULL, "rna_Mesh_vertex_colors_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_vertex_colors_begin", NULL, NULL, NULL, + "rna_Mesh_vertex_colors_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshColorLayer"); RNA_def_property_ui_text(prop, "Vertex Colors", ""); rna_def_vertex_colors(brna, prop); prop= RNA_def_property(srna, "layers_float", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", NULL, NULL, NULL, "rna_Mesh_float_layers_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", NULL, NULL, NULL, + "rna_Mesh_float_layers_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshFloatPropertyLayer"); RNA_def_property_ui_text(prop, "Float Property Layers", ""); prop= RNA_def_property(srna, "layers_int", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", NULL, NULL, NULL, "rna_Mesh_int_layers_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", NULL, NULL, NULL, + "rna_Mesh_int_layers_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshIntPropertyLayer"); RNA_def_property_ui_text(prop, "Int Property Layers", ""); prop= RNA_def_property(srna, "layers_string", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer"); - RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", NULL, NULL, NULL, "rna_Mesh_string_layers_length", NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", NULL, NULL, NULL, + "rna_Mesh_string_layers_length", NULL, NULL, NULL); RNA_def_property_struct_type(prop, "MeshStringPropertyLayer"); RNA_def_property_ui_text(prop, "String Property Layers", ""); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index 7d20378d55e..0677b848fee 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -1403,19 +1403,19 @@ static void def_cmp_image(StructRNA *srna) prop = RNA_def_property(srna, "frame_duration", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "frames"); RNA_def_property_range(prop, 0, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Frames", "Sets the number of images of a movie to use"); /* copied from the rna_image.c */ + RNA_def_property_ui_text(prop, "Frames", "Number of images of a movie to use"); /* copied from the rna_image.c */ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "sfra"); RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Start Frame", "Sets the global starting frame of the movie/sequence, assuming first picture has a #1"); /* copied from the rna_image.c */ + RNA_def_property_ui_text(prop, "Start Frame", "Global starting frame of the movie/sequence, assuming first picture has a #1"); /* copied from the rna_image.c */ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); prop = RNA_def_property(srna, "frame_offset", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "offset"); RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF); - RNA_def_property_ui_text(prop, "Offset", "Offsets the number of the frame to use in the animation"); /* copied from the rna_image.c */ + RNA_def_property_ui_text(prop, "Offset", "Offset the number of the frame to use in the animation"); /* copied from the rna_image.c */ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); prop = RNA_def_property(srna, "use_cyclic", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index bbbec3bcf9a..e329df8470d 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1397,7 +1397,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "controllers", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "Controller"); RNA_def_property_ui_text(prop, "Controllers", - "Game engine controllers to process events, connecting sensor to actuators"); + "Game engine controllers to process events, connecting sensors to actuators"); prop= RNA_def_property(srna, "actuators", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "Actuator"); @@ -1426,7 +1426,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "body_type"); RNA_def_property_enum_items(prop, body_type_items); RNA_def_property_enum_funcs(prop, "rna_GameObjectSettings_physics_type_get", "rna_GameObjectSettings_physics_type_set", NULL); - RNA_def_property_ui_text(prop, "Physics Type", "Selects the type of physical representation"); + RNA_def_property_ui_text(prop, "Physics Type", "Select the type of physical representation"); RNA_def_property_update(prop, NC_LOGIC, NULL); prop= RNA_def_property(srna, "use_actor", PROP_BOOLEAN, PROP_NONE); @@ -1488,20 +1488,20 @@ static void rna_def_object_game_settings(BlenderRNA *brna) /* lock rotation */ prop= RNA_def_property(srna, "lock_rotation_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_X_ROT_AXIS); - RNA_def_property_ui_text(prop, "Lock X Rotation Axis", "Disable simulation of angular motion along the X axis"); + RNA_def_property_ui_text(prop, "Lock X Rotation Axis", "Disable simulation of angular motion along the X axis"); prop= RNA_def_property(srna, "lock_rotation_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Y_ROT_AXIS); - RNA_def_property_ui_text(prop, "Lock Y Rotation Axis", "Disable simulation of angular motion along the Y axis"); + RNA_def_property_ui_text(prop, "Lock Y Rotation Axis", "Disable simulation of angular motion along the Y axis"); prop= RNA_def_property(srna, "lock_rotation_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Z_ROT_AXIS); - RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis"); + RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis"); /* is this used anywhere ? */ prop= RNA_def_property(srna, "use_activity_culling", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflag2", OB_NEVER_DO_ACTIVITY_CULLING); - RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis"); + RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis"); prop= RNA_def_property(srna, "use_material_physics_fh", PROP_BOOLEAN, PROP_NONE); @@ -1526,7 +1526,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "anisotropicFriction"); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Friction Coefficients", - "Relative friction coefficient in the in the X, Y and Z directions, " + "Relative friction coefficients in the in the X, Y and Z directions, " "when anisotropic friction is enabled"); prop= RNA_def_property(srna, "use_collision_bounds", PROP_BOOLEAN, PROP_NONE); @@ -1537,7 +1537,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "boundtype"); RNA_def_property_enum_items(prop, collision_bounds_items); RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Object_collision_bounds_itemf"); - RNA_def_property_ui_text(prop, "Collision Bounds", "Selects the collision type"); + RNA_def_property_ui_text(prop, "Collision Bounds", "Select the collision type"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); prop= RNA_def_property(srna, "use_collision_compound", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 8db1faee04d..597f8730e72 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -679,7 +679,8 @@ static void rna_softbody_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Point } -static EnumPropertyItem *rna_Effector_shape_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *UNUSED(free)) +static EnumPropertyItem *rna_Effector_shape_itemf(bContext *UNUSED(C), PointerRNA *ptr, + PropertyRNA *UNUSED(prop), int *UNUSED(free)) { Object *ob= NULL; @@ -725,7 +726,8 @@ static void rna_def_ptcache_point_caches(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_struct_ui_text(srna, "Point Caches", "Collection of point caches"); prop= RNA_def_property(srna, "active_index", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_funcs(prop, "rna_Cache_active_point_cache_index_get", "rna_Cache_active_point_cache_index_set", "rna_Cache_active_point_cache_index_range"); + RNA_def_property_int_funcs(prop, "rna_Cache_active_point_cache_index_get", "rna_Cache_active_point_cache_index_set", + "rna_Cache_active_point_cache_index_range"); RNA_def_property_ui_text(prop, "Active Point Cache Index", ""); RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_change"); } @@ -827,7 +829,8 @@ static void rna_def_pointcache(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change"); prop= RNA_def_property(srna, "point_caches", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", NULL, NULL, NULL, NULL); + RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next", + "rna_iterator_listbase_end", "rna_iterator_listbase_get", NULL, NULL, NULL, NULL); RNA_def_property_struct_type(prop, "PointCache"); RNA_def_property_ui_text(prop, "Point Cache List", "Point cache list"); rna_def_ptcache_point_caches(brna, prop); @@ -914,7 +917,8 @@ static void rna_def_collision(BlenderRNA *brna) prop= RNA_def_property(srna, "absorption", PROP_FLOAT, PROP_FACTOR); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 2); - RNA_def_property_ui_text(prop, "Absorption", "How much of effector force gets lost during collision with this object (in percent)"); + RNA_def_property_ui_text(prop, "Absorption", + "How much of effector force gets lost during collision with this object (in percent)"); RNA_def_property_update(prop, 0, "rna_CollisionSettings_update"); } @@ -1128,7 +1132,9 @@ static void rna_def_field(BlenderRNA *brna) prop= RNA_def_property(srna, "texture_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "tex_mode"); RNA_def_property_enum_items(prop, texture_items); - RNA_def_property_ui_text(prop, "Texture Mode", "How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead)"); + RNA_def_property_ui_text(prop, "Texture Mode", + "How the texture effect is calculated (RGB & Curl need a RGB texture, " + "else Gradient will be used instead)"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); prop= RNA_def_property(srna, "z_direction", PROP_ENUM, PROP_NONE); @@ -1423,7 +1429,10 @@ static void rna_def_game_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "weld_threshold", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "welding"); RNA_def_property_range(prop, 0.0f, 0.01f); - RNA_def_property_ui_text(prop, "Welding", "Welding threshold: distance between nearby vertices to be considered equal => set to 0.0 to disable welding test and speed up scene loading (ok if the mesh has no duplicates)"); + RNA_def_property_ui_text(prop, "Welding", + "Welding threshold: distance between nearby vertices to be considered equal " + "=> set to 0.0 to disable welding test and speed up scene loading " + "(ok if the mesh has no duplicates)"); /* Integers */ @@ -1435,7 +1444,7 @@ static void rna_def_game_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "cluster_iterations", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "numclusteriterations"); RNA_def_property_range(prop, 1, 128); - RNA_def_property_ui_text(prop, "Cluster Iterations", "Specify the number of cluster iterations"); + RNA_def_property_ui_text(prop, "Cluster Iterations", "Number of cluster iterations"); /* Booleans */ @@ -1519,7 +1528,8 @@ static void rna_def_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "vertex_group_goal", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "vertgroup"); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); /* not impossible .. but not supported yet */ - RNA_def_property_string_funcs(prop, "rna_SoftBodySettings_goal_vgroup_get", "rna_SoftBodySettings_goal_vgroup_length", "rna_SoftBodySettings_goal_vgroup_set"); + RNA_def_property_string_funcs(prop, "rna_SoftBodySettings_goal_vgroup_get", "rna_SoftBodySettings_goal_vgroup_length", + "rna_SoftBodySettings_goal_vgroup_set"); RNA_def_property_ui_text(prop, "Goal Vertex Group", "Control point weight values"); prop= RNA_def_property(srna, "goal_min", PROP_FLOAT, PROP_NONE); @@ -1641,7 +1651,8 @@ static void rna_def_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "error_threshold", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "rklimit"); RNA_def_property_range(prop, 0.001f, 10.0f); - RNA_def_property_ui_text(prop, "Error Limit", "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed"); + RNA_def_property_ui_text(prop, "Error Limit", + "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed"); RNA_def_property_update(prop, 0, "rna_softbody_update"); prop= RNA_def_property(srna, "step_min", PROP_INT, PROP_NONE); @@ -1665,7 +1676,8 @@ static void rna_def_softbody(BlenderRNA *brna) prop= RNA_def_property(srna, "fuzzy", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "fuzzyness"); RNA_def_property_range(prop, 1, 100); - RNA_def_property_ui_text(prop, "Fuzzy", "Fuzziness while on collision, high values make collision handling faster but less stable"); + RNA_def_property_ui_text(prop, "Fuzzy", + "Fuzziness while on collision, high values make collision handling faster but less stable"); RNA_def_property_update(prop, 0, "rna_softbody_update"); prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index e3a3f93b5f3..d224bd0d4e5 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -48,13 +48,14 @@ // XXX: this RNA enum define is currently duplicated for objects, since there is some text here which is not applicable EnumPropertyItem posebone_rotmode_items[] = { {ROT_MODE_QUAT, "QUATERNION", 0, "Quaternion (WXYZ)", "No Gimbal Lock (default)"}, - {ROT_MODE_XYZ, "XYZ", 0, "XYZ Euler", "XYZ Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_XZY, "XZY", 0, "XZY Euler", "XZY Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_YXZ, "YXZ", 0, "YXZ Euler", "YXZ Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_YZX, "YZX", 0, "YZX Euler", "YZX Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_ZXY, "ZXY", 0, "ZXY Euler", "ZXY Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_ZYX, "ZYX", 0, "ZYX Euler", "ZYX Rotation Order. Prone to Gimbal Lock"}, - {ROT_MODE_AXISANGLE, "AXIS_ANGLE", 0, "Axis Angle", "Axis Angle (W+XYZ). Defines a rotation around some axis defined by 3D-Vector"}, + {ROT_MODE_XYZ, "XYZ", 0, "XYZ Euler", "XYZ Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_XZY, "XZY", 0, "XZY Euler", "XZY Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_YXZ, "YXZ", 0, "YXZ Euler", "YXZ Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_YZX, "YZX", 0, "YZX Euler", "YZX Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_ZXY, "ZXY", 0, "ZXY Euler", "ZXY Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_ZYX, "ZYX", 0, "ZYX Euler", "ZYX Rotation Order (prone to Gimbal Lock)"}, + {ROT_MODE_AXISANGLE, "AXIS_ANGLE", 0, "Axis Angle", + "Axis Angle (W+XYZ), defines a rotation around some axis defined by 3D-Vector"}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -717,7 +718,8 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro /* Collection active property */ prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Constraint"); - RNA_def_property_pointer_funcs(prop, "rna_PoseChannel_active_constraint_get", "rna_PoseChannel_active_constraint_set", NULL, NULL); + RNA_def_property_pointer_funcs(prop, "rna_PoseChannel_active_constraint_get", + "rna_PoseChannel_active_constraint_set", NULL, NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Active Constraint", "Active PoseChannel constraint"); @@ -820,7 +822,8 @@ static void rna_def_pose_channel(BlenderRNA *brna) */ prop= RNA_def_property(srna, "rotation_axis_angle", PROP_FLOAT, PROP_AXISANGLE); RNA_def_property_array(prop, 4); - RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", "rna_PoseChannel_rotation_axis_angle_set", NULL); + RNA_def_property_float_funcs(prop, "rna_PoseChannel_rotation_axis_angle_get", + "rna_PoseChannel_rotation_axis_angle_set", NULL); RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_float_array_default(prop, default_axisAngle); RNA_def_property_ui_text(prop, "Axis-Angle Rotation", "Angle of Rotation for Axis-Angle rotation representation"); @@ -853,7 +856,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) prop= RNA_def_property(srna, "matrix_basis", PROP_FLOAT, PROP_MATRIX); RNA_def_property_multi_array(prop, 2, matrix_dimsize); RNA_def_property_ui_text(prop, "Basis Matrix", - "Provides an alternative access to loc/scale/rotation relative to the parent and own rest bone"); + "Alternative access to location/scale/rotation relative to the parent and own rest bone"); RNA_def_property_float_funcs(prop, "rna_PoseChannel_matrix_basis_get", "rna_PoseChannel_matrix_basis_set", NULL); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); @@ -1039,7 +1042,8 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "agrp_index"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_int_funcs(prop, "rna_PoseChannel_bone_group_index_get", "rna_PoseChannel_bone_group_index_set", "rna_PoseChannel_bone_group_index_range"); + RNA_def_property_int_funcs(prop, "rna_PoseChannel_bone_group_index_get", "rna_PoseChannel_bone_group_index_set", + "rna_PoseChannel_bone_group_index_range"); RNA_def_property_ui_text(prop, "Bone Group Index", "Bone Group this pose channel belongs to (0=no group)"); RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); @@ -1072,7 +1076,8 @@ static void rna_def_pose_channel(BlenderRNA *brna) // XXX this is sub-optimal - it really should be included above, but due to technical reasons we can't do this! prop= RNA_def_property(srna, "lock_rotation_w", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTW); - RNA_def_property_ui_text(prop, "Lock Rotation (4D Angle)", "Lock editing of 'angle' component of four-component rotations in the interface"); + RNA_def_property_ui_text(prop, "Lock Rotation (4D Angle)", + "Lock editing of 'angle' component of four-component rotations in the interface"); RNA_def_property_ui_icon(prop, ICON_UNLOCKED, 1); RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); @@ -1080,7 +1085,8 @@ static void rna_def_pose_channel(BlenderRNA *brna) // XXX this needs a better name prop= RNA_def_property(srna, "lock_rotations_4d", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROT4D); - RNA_def_property_ui_text(prop, "Lock Rotations (4D)", "Lock editing of four component rotations by components (instead of as Eulers)"); + RNA_def_property_ui_text(prop, "Lock Rotations (4D)", + "Lock editing of four component rotations by components (instead of as Eulers)"); RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); @@ -1098,13 +1104,17 @@ static void rna_def_pose_channel(BlenderRNA *brna) static void rna_def_pose_itasc(BlenderRNA *brna) { static const EnumPropertyItem prop_itasc_mode_items[]= { - {0, "ANIMATION", 0, "Animation", "Stateless solver computing pose starting from current action and non-IK constraints"}, - {ITASC_SIMULATION, "SIMULATION", 0, "Simulation", "Statefull solver running in real-time context and ignoring actions and non-IK constraints"}, + {0, "ANIMATION", 0, "Animation", + "Stateless solver computing pose starting from current action and non-IK constraints"}, + {ITASC_SIMULATION, "SIMULATION", 0, "Simulation", + "Statefull solver running in real-time context and ignoring actions and non-IK constraints"}, {0, NULL, 0, NULL, NULL}}; static const EnumPropertyItem prop_itasc_reiteration_items[]= { {0, "NEVER", 0, "Never", "The solver does not reiterate, not even on first frame (starts from rest pose)"}, - {ITASC_INITIAL_REITERATION, "INITIAL", 0, "Initial", "The solver reiterates (converges) on the first frame but not on subsequent frame"}, - {ITASC_INITIAL_REITERATION|ITASC_REITERATION, "ALWAYS", 0, "Always", "The solver reiterates (converges) on all frames"}, + {ITASC_INITIAL_REITERATION, "INITIAL", 0, "Initial", + "The solver reiterates (converges) on the first frame but not on subsequent frame"}, + {ITASC_INITIAL_REITERATION|ITASC_REITERATION, "ALWAYS", 0, "Always", + "The solver reiterates (converges) on all frames"}, {0, NULL, 0, NULL, NULL}}; StructRNA *srna; @@ -1141,12 +1151,15 @@ static void rna_def_pose_itasc(BlenderRNA *brna) prop= RNA_def_property(srna, "reiteration_method", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); RNA_def_property_enum_items(prop, prop_itasc_reiteration_items); - RNA_def_property_ui_text(prop, "Reiteration", "Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames"); + RNA_def_property_ui_text(prop, "Reiteration", + "Defines if the solver is allowed to reiterate (converges until " + "precision is met) on none, first or all frames"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update"); prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", ITASC_AUTO_STEP); - RNA_def_property_ui_text(prop, "Auto step", "Automatically determine the optimal number of steps for best performance/accuracy trade off"); + RNA_def_property_ui_text(prop, "Auto step", + "Automatically determine the optimal number of steps for best performance/accuracy trade off"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update"); prop= RNA_def_property(srna, "step_min", PROP_FLOAT, PROP_NONE); @@ -1164,7 +1177,8 @@ static void rna_def_pose_itasc(BlenderRNA *brna) prop= RNA_def_property(srna, "feedback", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "feedback"); RNA_def_property_range(prop, 0.0f,100.0f); - RNA_def_property_ui_text(prop, "Feedback", "Feedback coefficient for error correction. Average response time=1/feedback. Default=20"); + RNA_def_property_ui_text(prop, "Feedback", + "Feedback coefficient for error correction. Average response time=1/feedback. Default=20"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update"); prop= RNA_def_property(srna, "velocity_max", PROP_FLOAT, PROP_NONE); @@ -1182,13 +1196,17 @@ static void rna_def_pose_itasc(BlenderRNA *brna) prop= RNA_def_property(srna, "damping_max", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dampmax"); RNA_def_property_range(prop, 0.0f,1.0f); - RNA_def_property_ui_text(prop, "Damp", "Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5"); + RNA_def_property_ui_text(prop, "Damp", + "Maximum damping coefficient when singular value is nearly 0 " + "(higher values=more stability, less reactivity - default=0.5)"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update"); prop= RNA_def_property(srna, "damping_epsilon", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dampeps"); RNA_def_property_range(prop, 0.0f,1.0f); - RNA_def_property_ui_text(prop, "Epsilon", "Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1"); + RNA_def_property_ui_text(prop, "Epsilon", + "Singular value under which damping is progressively applied " + "(higher values=more stability, less reactivity - default=0.1)"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update"); } @@ -1232,7 +1250,8 @@ static void rna_def_bone_groups(BlenderRNA *brna, PropertyRNA *cprop) prop= RNA_def_property(srna, "active_index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "active_group"); - RNA_def_property_int_funcs(prop, "rna_Pose_active_bone_group_index_get", "rna_Pose_active_bone_group_index_set", "rna_Pose_active_bone_group_index_range"); + RNA_def_property_int_funcs(prop, "rna_Pose_active_bone_group_index_get", "rna_Pose_active_bone_group_index_set", + "rna_Pose_active_bone_group_index_range"); RNA_def_property_ui_text(prop, "Active Bone Group Index", "Active index in bone groups array"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); } @@ -1265,7 +1284,8 @@ static void rna_def_pose(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "iksolver"); RNA_def_property_enum_funcs(prop, NULL, "rna_Pose_ik_solver_set", NULL); RNA_def_property_enum_items(prop, prop_iksolver_items); - RNA_def_property_ui_text(prop, "IK Solver", "Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC"); + RNA_def_property_ui_text(prop, "IK Solver", + "Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_ik_solver_update"); prop= RNA_def_property(srna, "ik_param", PROP_POINTER, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 09824616936..70ff5682717 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -1755,13 +1755,13 @@ static void rna_def_scene_game_recast_data(BlenderRNA *brna) prop= RNA_def_property(srna, "region_min_size", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "regionminsize"); RNA_def_property_ui_range(prop, 0, 150, 1, 2); - RNA_def_property_ui_text(prop, "Min Region Size", "Minimum regions size. Smaller regions will be deleted"); + RNA_def_property_ui_text(prop, "Min Region Size", "Minimum regions size (smaller regions will be deleted)"); RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "region_merge_size", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "regionmergesize"); RNA_def_property_ui_range(prop, 0, 150, 1, 2); - RNA_def_property_ui_text(prop, "Merged Region Size", "Minimum regions size. Smaller regions will be merged"); + RNA_def_property_ui_text(prop, "Merged Region Size", "Minimum regions size (smaller regions will be merged)"); RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "edge_max_len", PROP_FLOAT, PROP_NONE); @@ -1977,7 +1977,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "occlusionRes"); RNA_def_property_range(prop, 128.0, 1024.0); RNA_def_property_ui_text(prop, "Occlusion Resolution", - "The size of the occlusion buffer in pixel, use higher value for better precision (slower)"); + "Size of the occlusion buffer in pixel, use higher value for better precision (slower)"); RNA_def_property_update(prop, NC_SCENE, NULL); prop= RNA_def_property(srna, "fps", PROP_INT, PROP_NONE); @@ -1985,7 +1985,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_ui_range(prop, 1, 60, 1, 1); RNA_def_property_range(prop, 1, 250); RNA_def_property_ui_text(prop, "Frames Per Second", - "The nominal number of game frames per second " + "Nominal number of game frames per second " "(physics fixed timestep = 1/fps, independently of actual frame rate)"); RNA_def_property_update(prop, NC_SCENE, NULL); @@ -1994,7 +1994,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_ui_range(prop, 1, 5, 1, 1); RNA_def_property_range(prop, 1, 5); RNA_def_property_ui_text(prop, "Max Logic Steps", - "Sets the maximum number of logic frame per game frame if graphics slows down the game, " + "Maximum number of logic frame per game frame if graphics slows down the game, " "higher value allows better synchronization with physics"); RNA_def_property_update(prop, NC_SCENE, NULL); @@ -2003,7 +2003,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_ui_range(prop, 1, 5, 1, 1); RNA_def_property_range(prop, 1, 5); RNA_def_property_ui_text(prop, "Max Physics Steps", - "Sets the maximum number of physics step per game frame if graphics slows down the game, " + "Maximum number of physics step per game frame if graphics slows down the game, " "higher value allows physics to keep up with realtime"); RNA_def_property_update(prop, NC_SCENE, NULL); @@ -2012,7 +2012,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) RNA_def_property_ui_range(prop, 1, 5, 1, 1); RNA_def_property_range(prop, 1, 5); RNA_def_property_ui_text(prop, "Physics Sub Steps", - "Sets the number of simulation substep per physic timestep, " + "Number of simulation substep per physic timestep, " "higher value give better physics precision"); RNA_def_property_update(prop, NC_SCENE, NULL); @@ -2066,7 +2066,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna) prop= RNA_def_property(srna, "use_animation_record", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_ENABLE_ANIMATION_RECORD); - RNA_def_property_ui_text(prop, "Record Animation", "Record animation to fcurves"); + RNA_def_property_ui_text(prop, "Record Animation", "Record animation to F-Curves"); prop= RNA_def_property(srna, "use_auto_start", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_GameSettings_auto_start_get", "rna_GameSettings_auto_start_set"); @@ -2075,8 +2075,8 @@ static void rna_def_scene_game_data(BlenderRNA *brna) prop= RNA_def_property(srna, "restrict_animation_updates", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_RESTRICT_ANIM_UPDATES); RNA_def_property_ui_text(prop, "Restrict Animation Updates", - "Restrict the number of animation updates to the animation FPS. This is " - "better for performance, but can cause issues with smooth playback"); + "Restrict the number of animation updates to the animation FPS (this is " + "better for performance, but can cause issues with smooth playback)"); /* materials */ prop= RNA_def_property(srna, "material_mode", PROP_ENUM, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 28b96f3b08b..d169ee5079b 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -127,7 +127,8 @@ static void rna_ParticleEdit_tool_set(PointerRNA *ptr, int value) pset->brushtype = value; } -static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *UNUSED(free)) +static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr), + PropertyRNA *UNUSED(prop), int *UNUSED(free)) { Scene *scene= CTX_data_scene(C); Object *ob= (scene->basact)? scene->basact->object: NULL; @@ -275,7 +276,8 @@ static void rna_def_sculpt(BlenderRNA *brna) prop= RNA_def_property(srna, "use_symmetry_feather", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_SYMMETRY_FEATHER); - RNA_def_property_ui_text(prop, "Symmetry Feathering", "Reduce the strength of the brush where it overlaps symmetrical daubs"); + RNA_def_property_ui_text(prop, "Symmetry Feathering", + "Reduce the strength of the brush where it overlaps symmetrical daubs"); prop= RNA_def_property(srna, "use_threaded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_USE_OPENMP); @@ -283,7 +285,9 @@ static void rna_def_sculpt(BlenderRNA *brna) prop= RNA_def_property(srna, "use_deform_only", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", SCULPT_ONLY_DEFORM); - RNA_def_property_ui_text(prop, "Use Deform Only", "Use only deformation modifiers (temporary disable all constructive modifiers except multi-resolution)"); + RNA_def_property_ui_text(prop, "Use Deform Only", + "Use only deformation modifiers (temporary disable all " + "constructive modifiers except multi-resolution)"); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Sculpt_update"); } @@ -345,7 +349,8 @@ static void rna_def_image_paint(BlenderRNA *brna) prop= RNA_def_property(srna, "use_clone_layer", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_LAYER_CLONE); - RNA_def_property_ui_text(prop, "Clone Layer", "Use another UV layer as clone source, otherwise use 3D the cursor as the source"); + RNA_def_property_ui_text(prop, "Clone Layer", + "Use another UV layer as clone source, otherwise use 3D the cursor as the source"); /* integers */ @@ -357,7 +362,8 @@ static void rna_def_image_paint(BlenderRNA *brna) RNA_def_property_range(prop, 0, 90); RNA_def_property_ui_text(prop, "Angle", "Paint most on faces pointing towards the view according to this angle"); - prop= RNA_def_int_array(srna, "screen_grab_size", 2, NULL, 0, 0, "screen_grab_size", "Size to capture the image for re-projecting", 0, 0); + prop= RNA_def_int_array(srna, "screen_grab_size", 2, NULL, 0, 0, "screen_grab_size", + "Size to capture the image for re-projecting", 0, 0); RNA_def_property_range(prop, 512, 16384); } @@ -518,7 +524,8 @@ static void rna_def_particle_edit(BlenderRNA *brna) prop= RNA_def_property(srna, "use_puff_volume", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_BRUSH_DATA_PUFF_VOLUME); - RNA_def_property_ui_text(prop, "Puff Volume", "Apply puff to unselected end-points, (helps maintain hair volume when puffing root)"); + RNA_def_property_ui_text(prop, "Puff Volume", + "Apply puff to unselected end-points (helps maintain hair volume when puffing root)"); prop= RNA_def_property(srna, "length_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "invert"); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index b90f10693ac..9d72eeacf3e 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -1190,7 +1190,7 @@ static void rna_def_editor(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Overlay Offset", ""); RNA_def_property_int_funcs(prop, "rna_SequenceEditor_overlay_frame_get", "rna_SequenceEditor_overlay_frame_set", NULL); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL); - RNA_def_property_ui_text(prop, "Active Strip", "Sequencers active strip"); + RNA_def_property_ui_text(prop, "Active Strip", "Sequencer's active strip"); } static void rna_def_filter_video(StructRNA *srna) diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index 217d68860f2..44bdeba3e2e 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -177,14 +177,14 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "alpha"); RNA_def_property_range(prop, -5.0, 5.0); RNA_def_property_ui_range(prop, -5.0, 5.0, 0.02, 5); - RNA_def_property_ui_text(prop, "Density", "How much density effects smoke motion, higher value results in faster rising smoke"); + RNA_def_property_ui_text(prop, "Density", "How much density affects smoke motion (higher value results in faster rising smoke)"); RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "beta", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "beta"); RNA_def_property_range(prop, -5.0, 5.0); RNA_def_property_ui_range(prop, -5.0, 5.0, 0.02, 5); - RNA_def_property_ui_text(prop, "Heat", "How much heat effects smoke motion, higher value results in faster rising smoke"); + RNA_def_property_ui_text(prop, "Heat", "How much heat affects smoke motion (higher value results in faster rising smoke)"); RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "collision_group", PROP_POINTER, PROP_NONE); @@ -245,7 +245,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "collision_extents", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "border_collisions"); RNA_def_property_enum_items(prop, smoke_domain_colli_items); - RNA_def_property_ui_text(prop, "Border Collisions", "Selects which domain border will be treated as collision object"); + RNA_def_property_ui_text(prop, "Border Collisions", "Select which domain border will be treated as collision object"); RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "effector_weights", PROP_POINTER, PROP_NONE); @@ -313,7 +313,7 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "initial_velocity", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_INITVELOCITY); - RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits it's velocity from the emitter particle"); + RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits its velocity from the emitter particle"); prop= RNA_def_property(srna, "velocity_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "vel_multi"); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index 03f0a4ba363..1babf5e61a1 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -698,7 +698,7 @@ static EnumPropertyItem prop_noise_basis_items[] = { {TEX_VORONOI_CRACKLE, "VORONOI_CRACKLE", 0, "Voronoi Crackle", "Noise algorithm - Voronoi Crackle: Voronoi tessellation with sharp edges"}, {TEX_CELLNOISE, "CELL_NOISE", 0, "Cell Noise", - "Noise algorithm - Cell Noise: Square cell tessallation"}, + "Noise algorithm - Cell Noise: Square cell tessellation"}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem prop_noise_type[] = { @@ -1525,13 +1525,13 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna) prop= RNA_def_property(srna, "particle_cache_space", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "psys_cache_space"); RNA_def_property_enum_items(prop, particle_cache_items); - RNA_def_property_ui_text(prop, "Particle Cache", "Co-ordinate system to cache particles in"); + RNA_def_property_ui_text(prop, "Particle Cache", "Coordinate system to cache particles in"); RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "vertex_cache_space", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "ob_cache_space"); RNA_def_property_enum_items(prop, vertice_cache_items); - RNA_def_property_ui_text(prop, "Vertices Cache", "Co-ordinate system to cache vertices in"); + RNA_def_property_ui_text(prop, "Vertices Cache", "Coordinate system to cache vertices in"); RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_NONE); @@ -1657,9 +1657,9 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem voxeldata_extension[] = { - {TEX_EXTEND, "EXTEND", 0, "Extend", "Extends by repeating edge pixels of the image"}, - {TEX_CLIP, "CLIP", 0, "Clip", "Clips to image size and sets exterior pixels as transparent"}, - {TEX_REPEAT, "REPEAT", 0, "Repeat", "Causes the image to repeat horizontally and vertically"}, + {TEX_EXTEND, "EXTEND", 0, "Extend", "Extend by repeating edge pixels of the image"}, + {TEX_CLIP, "CLIP", 0, "Clip", "Clip to image size and set exterior pixels as transparent"}, + {TEX_REPEAT, "REPEAT", 0, "Repeat", "Cause the image to repeat horizontally and vertically"}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem smoked_type_items[] = { diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 9202647981b..0c3ff108c03 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -813,25 +813,25 @@ static void rna_def_userdef_theme_spaces_curves(StructRNA *srna, short incl_nurb prop= RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "nurb_uline"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Nurb U-lines", ""); + RNA_def_property_ui_text(prop, "NURBS U-lines", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "nurb_vline", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "nurb_vline"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Nurb V-lines", ""); + RNA_def_property_ui_text(prop, "NURBS V-lines", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "nurb_sel_uline", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "nurb_sel_uline"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Nurb active U-lines", ""); + RNA_def_property_ui_text(prop, "NURBS active U-lines", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "nurb_sel_vline", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_float_sdna(prop, NULL, "nurb_sel_vline"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Nurb active V-lines", ""); + RNA_def_property_ui_text(prop, "NURBS active V-lines", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "act_spline", PROP_FLOAT, PROP_COLOR_GAMMA); @@ -1984,19 +1984,19 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "vec"); RNA_def_property_array(prop, 3); RNA_def_property_float_array_default(prop, default_dir); - RNA_def_property_ui_text(prop, "Direction", "The direction that the OpenGL light is shining"); + RNA_def_property_ui_text(prop, "Direction", "Direction that the OpenGL light is shining"); RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "diffuse_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "col"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Diffuse Color", "The diffuse color of the OpenGL light"); + RNA_def_property_ui_text(prop, "Diffuse Color", "Diffuse color of the OpenGL light"); RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); prop= RNA_def_property(srna, "specular_color", PROP_FLOAT, PROP_COLOR); RNA_def_property_float_sdna(prop, NULL, "spec"); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Specular Color", "The color of the lights specular highlight"); + RNA_def_property_ui_text(prop, "Specular Color", "Color of the light's specular highlight"); RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update"); } diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index f8383b1d451..676fe1e092d 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -1703,7 +1703,7 @@ static void rna_def_keyconfig(BlenderRNA *brna) prop= RNA_def_property(srna, "id", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "id"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "id", "ID of the item"); + RNA_def_property_ui_text(prop, "ID", "ID of the item"); RNA_def_property_update(prop, 0, "rna_KeyMapItem_update"); prop= RNA_def_property(srna, "any", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index 11ec327c306..62975763874 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -409,7 +409,7 @@ static void rna_def_world_mist(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "mistdist"); RNA_def_property_range(prop, 0, FLT_MAX); RNA_def_property_ui_range(prop, 0, 10000, 10, 2); - RNA_def_property_ui_text(prop, "Depth", "The distance over which the mist effect fades in"); + RNA_def_property_ui_text(prop, "Depth", "Distance over which the mist effect fades in"); RNA_def_property_update(prop, 0, "rna_World_draw_mist_update"); prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_DISTANCE); @@ -433,7 +433,7 @@ static void rna_def_world_stars(BlenderRNA *brna) srna= RNA_def_struct(brna, "WorldStarsSettings", NULL); RNA_def_struct_sdna(srna, "World"); RNA_def_struct_nested(brna, srna, "World"); - RNA_def_struct_ui_text(srna, "World Stars", "Stars setting for a World data-block"); + RNA_def_struct_ui_text(srna, "World Stars", "Stars settings for a World data-block"); prop= RNA_def_property(srna, "use_stars", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_STARS); From 9969ebffa60d37762bf20b67b3cf1fd6430ff9fa Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 20 Oct 2011 08:03:29 +0000 Subject: [PATCH 073/119] Fix #28942: Minimize stretch in UV editing has no continues grab --- source/blender/editors/uvedit/uvedit_unwrap_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index ae4718d8f56..7f6394e822b 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -464,7 +464,7 @@ void UV_OT_minimize_stretch(wmOperatorType *ot) /* identifiers */ ot->name= "Minimize Stretch"; ot->idname= "UV_OT_minimize_stretch"; - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_GRAB_POINTER|OPTYPE_BLOCKING; ot->description="Reduce UV stretching by relaxing angles"; /* api callbacks */ From 1555d4b1a8ff43414b6ab5e87097d53f86c86a00 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 08:12:39 +0000 Subject: [PATCH 074/119] fix [#28902] Rendering and visibility icons in modifier panel move between clicks --- .../editors/interface/interface_templates.c | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 4dcdeab2169..77a25307651 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -759,18 +759,28 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif if (mti->flags & eModifierTypeFlag_SupportsEditmode) uiItemR(row, &ptr, "show_in_editmode", 0, "", ICON_NONE); } - if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex)) - { - /* -- convert to rna ? */ - but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, - UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode"))); - if (index < cageIndex) - uiButSetFlag(but, UI_BUT_DISABLED); - uiButSetFunc(but, modifiers_setOnCage, ob, md); - } - /* tesselation point for curve-typed objects */ - if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { + if (ob->type==OB_MESH) { + if (modifier_couldBeCage(scene, md) && (index <= lastCageIndex)) + { + /* -- convert to rna ? */ + but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, + UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode"))); + if (index < cageIndex) + uiButSetFlag(but, UI_BUT_DISABLED); + uiButSetFunc(but, modifiers_setOnCage, ob, md); + } + else { + uiBlockEndAlign(block); + + /* place holder button */ + uiBlockSetEmboss(block, UI_EMBOSSN); + but= uiDefIconBut(block, BUT, 0, ICON_NONE, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, NULL); + uiButSetFlag(but, UI_BUT_DISABLED); + uiBlockSetEmboss(block, UI_EMBOSS); + } + } /* tesselation point for curve-typed objects */ + else if (ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) { /* some modifiers could work with pre-tesselated curves only */ if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) { /* add disabled pre-tesselated button, so users could have From f037642843bf7f7b8fe219d73480c896d7746372 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 20 Oct 2011 08:19:51 +0000 Subject: [PATCH 075/119] Fix #28937: Text Editor Selection (Scroll Bar) Do not start selection if mouse cursor.x >= scrollbar.x --- source/blender/editors/space_text/text_ops.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 8d40550961f..242bccd2376 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -2583,6 +2583,9 @@ static int set_selection_invoke(bContext *C, wmOperator *op, wmEvent *event) SpaceText *st= CTX_wm_space_text(C); SetSelection *ssel; + if(event->mval[0]>=st->txtbar.xmin) + return OPERATOR_PASS_THROUGH; + op->customdata= MEM_callocN(sizeof(SetSelection), "SetCursor"); ssel= op->customdata; ssel->selecting= RNA_boolean_get(op->ptr, "select"); From e02dfe4a79b3632b3143d5d45e0dee1463ff7aa6 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 20 Oct 2011 08:32:26 +0000 Subject: [PATCH 076/119] Fix #28938: Black frames when composite output node even with disabled nodes --- source/blender/render/intern/source/pipeline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 19dc0538dba..3db73816025 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2468,7 +2468,7 @@ static void do_render_composite_fields_blur_3d(Render *re) ntreeCompositTagAnimated(ntree); } - if(ntree && re->r.scemode & R_DOCOMP) { + if(ntree && re->scene->use_nodes && re->r.scemode & R_DOCOMP) { /* checks if there are render-result nodes that need scene */ if((re->r.scemode & R_SINGLE_LAYER)==0) ntree_render_scenes(re); From 8d6a554d7502029f04aca33efcdd004744b9bd84 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 09:47:05 +0000 Subject: [PATCH 077/119] - add BLI_string_utf8.h for unicode functions. - move font.c unicode functions into string_utf8.c and rename to fit with other BLI_string funcs. --- source/blender/blenkernel/BKE_font.h | 5 - source/blender/blenkernel/intern/font.c | 140 +--------------- .../blenkernel/intern/particle_system.c | 1 - source/blender/blenkernel/intern/smoke.c | 3 +- source/blender/blenlib/BLI_blenlib.h | 2 + source/blender/blenlib/BLI_string.h | 14 +- source/blender/blenlib/BLI_string_utf8.h | 55 +++++++ source/blender/blenlib/CMakeLists.txt | 1 + source/blender/blenlib/intern/BLI_args.c | 1 - source/blender/blenlib/intern/string_utf8.c | 155 ++++++++++++++++++ source/blender/editors/curve/editfont.c | 14 +- .../editors/interface/interface_anim.c | 1 + .../editors/interface/interface_draw.c | 4 +- .../editors/interface/interface_templates.c | 1 - source/blender/editors/space_file/fsmenu.c | 1 - source/blender/imbuf/intern/indexer.c | 3 +- source/blender/makesrna/intern/rna_curve.c | 2 +- source/blender/makesrna/intern/rna_define.c | 1 - source/blender/python/generic/py_capi_utils.c | 4 +- source/blender/python/intern/bpy_interface.c | 4 +- .../windowmanager/intern/wm_operators.c | 1 - 21 files changed, 234 insertions(+), 179 deletions(-) create mode 100644 source/blender/blenlib/BLI_string_utf8.h diff --git a/source/blender/blenkernel/BKE_font.h b/source/blender/blenkernel/BKE_font.h index e4e8805164a..214ae03b453 100644 --- a/source/blender/blenkernel/BKE_font.h +++ b/source/blender/blenkernel/BKE_font.h @@ -85,11 +85,6 @@ struct chartrans *BKE_text_to_curve(struct Main *bmain, struct Scene *scene, str int BKE_font_getselection(struct Object *ob, int *start, int *end); -size_t chtoutf8(const unsigned long c, char o[4]); -void wcs2utf8s(char *dst, const wchar_t *src); -size_t wcsleninu8(wchar_t *src); -size_t utf8towchar(wchar_t *w, const char *c); - #ifdef __cplusplus } #endif diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index 9c01b35b91a..068e70bbb50 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -64,142 +64,6 @@ static ListBase ttfdata= {NULL, NULL}; -/* UTF-8 <-> wchar transformations */ -size_t chtoutf8(const unsigned long c, char o[4]) -{ - // Variables and initialization -/* memset(o, 0, 4); */ - - // Create the utf-8 string - if (c < 0x80) { - o[0] = (char) c; - return 1; - } - else if (c < 0x800) { - o[0] = (0xC0 | (c>>6)); - o[1] = (0x80 | (c & 0x3f)); - return 2; - } - else if (c < 0x10000) { - o[0] = (0xe0 | (c >> 12)); - o[1] = (0x80 | (c >>6 & 0x3f)); - o[2] = (0x80 | (c & 0x3f)); - return 3; - } - else if (c < 0x200000) { - o[0] = (0xf0 | (c>>18)); - o[1] = (0x80 | (c >>12 & 0x3f)); - o[2] = (0x80 | (c >> 6 & 0x3f)); - o[3] = (0x80 | (c & 0x3f)); - return 4; - } - - /* should we assert here? */ - return 0; -} - -void wcs2utf8s(char *dst, const wchar_t *src) -{ - while(*src) { - dst += chtoutf8(*src++, dst); - } - - *dst= '\0'; -} - -size_t wcsleninu8(wchar_t *src) -{ - char ch_dummy[4]; - size_t len = 0; - - while(*src) { - len += chtoutf8(*src++, ch_dummy); - } - - return len; -} - -static size_t utf8slen(const char *strc) -{ - int len=0; - - while(*strc) { - if ((*strc & 0xe0) == 0xc0) { - if((strc[1] & 0x80) && (strc[1] & 0x40) == 0x00) - strc++; - } else if ((*strc & 0xf0) == 0xe0) { - if((strc[1] & strc[2] & 0x80) && ((strc[1] | strc[2]) & 0x40) == 0x00) - strc += 2; - } else if ((*strc & 0xf8) == 0xf0) { - if((strc[1] & strc[2] & strc[3] & 0x80) && ((strc[1] | strc[2] | strc[3]) & 0x40) == 0x00) - strc += 3; - } - - strc++; - len++; - } - - return len; -} - - -/* Converts Unicode to wchar - -According to RFC 3629 "UTF-8, a transformation format of ISO 10646" -(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are: - - Char. number range | UTF-8 octet sequence - (hexadecimal) | (binary) - --------------------+--------------------------------------------- - 0000 0000-0000 007F | 0xxxxxxx - 0000 0080-0000 07FF | 110xxxxx 10xxxxxx - 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx - 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - -If the encoding incidated by the first character is incorrect (because the -1 to 3 following characters do not match 10xxxxxx), the output is a '?' and -only a single input character is consumed. - -*/ - -size_t utf8towchar(wchar_t *w, const char *c) -{ - int len=0; - - if(w==NULL || c==NULL) return(0); - - while(*c) { - if ((*c & 0xe0) == 0xc0) { - if((c[1] & 0x80) && (c[1] & 0x40) == 0x00) { - *w=((c[0] &0x1f)<<6) | (c[1]&0x3f); - c++; - } else { - *w = '?'; - } - } else if ((*c & 0xf0) == 0xe0) { - if((c[1] & c[2] & 0x80) && ((c[1] | c[2]) & 0x40) == 0x00) { - *w=((c[0] & 0x0f)<<12) | ((c[1]&0x3f)<<6) | (c[2]&0x3f); - c += 2; - } else { - *w = '?'; - } - } else if ((*c & 0xf8) == 0xf0) { - if((c[1] & c[2] & c[3] & 0x80) && ((c[1] | c[2] | c[3]) & 0x40) == 0x00) { - *w=((c[0] & 0x07)<<18) | ((c[1]&0x1f)<<12) | ((c[2]&0x3f)<<6) | (c[3]&0x3f); - c += 3; - } else { - *w = '?'; - } - } else - *w=(c[0] & 0x7f); - - c++; - w++; - len++; - } - return len; -} - /* The vfont code */ void free_vfont(struct VFont *vf) { @@ -691,10 +555,10 @@ struct chartrans *BKE_text_to_curve(Main *bmain, Scene *scene, Object *ob, int m if(vfont == NULL) return NULL; // Create unicode string - utf8len = utf8slen(cu->str); + utf8len = BLI_strlen_utf8(cu->str); mem = MEM_callocN(((utf8len + 1) * sizeof(wchar_t)), "convertedmem"); - utf8towchar(mem, cu->str); + BLI_strncpy_wchar_from_utf8(mem, cu->str, utf8len + 1); // Count the wchar_t string length slen = wcslen(mem); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 7b2d621aff2..64a90e15b60 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -70,7 +70,6 @@ #include "BLI_listbase.h" #include "BLI_threads.h" #include "BLI_storage.h" /* For _LARGEFILE64_SOURCE; zlib needs this on some systems */ -#include "BLI_string.h" #include "BLI_utildefines.h" #include "BKE_main.h" diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 85140841f15..49c8831f06c 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -812,13 +812,12 @@ void smokeModifier_copy(struct SmokeModifierData *smd, struct SmokeModifierData } } +#ifdef WITH_SMOKE // forward decleration static void smoke_calc_transparency(float *result, float *input, float *p0, float *p1, int res[3], float dx, float *light, bresenham_callback cb, float correct); static float calc_voxel_transp(float *result, float *input, int res[3], int *pixel, float *tRay, float correct); -#ifdef WITH_SMOKE - static int get_lamp(Scene *scene, float *light) { Base *base_tmp = NULL; diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index ba5d04f3021..cda7a51c47f 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -74,6 +74,8 @@ extern "C" { #include "BLI_string.h" +#include "BLI_string_utf8.h" + #include "BLI_path_util.h" #include "BLI_storage.h" diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h index 3ac8dba106a..958f240e3a8 100644 --- a/source/blender/blenlib/BLI_string.h +++ b/source/blender/blenlib/BLI_string.h @@ -25,9 +25,7 @@ * Contributor(s): none yet. * * ***** END GPL LICENSE BLOCK ***** - * - * $Id$ -*/ + */ #ifndef BLI_STRING_H #define BLI_STRING_H @@ -142,16 +140,6 @@ void BLI_timestr(double _time, char *str); /* time var is global */ void BLI_ascii_strtolower(char *str, int len); void BLI_ascii_strtoupper(char *str, int len); - -/* string_utf8.c - may move these into their own header some day - campbell */ -char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy); -int BLI_utf8_invalid_byte(const char *str, int length); -int BLI_utf8_invalid_strip(char *str, int length); - /* copied from glib */ -char *BLI_str_find_prev_char_utf8(const char *str, const char *p); -char *BLI_str_find_next_char_utf8(const char *p, const char *end); -char *BLI_str_prev_char_utf8(const char *p); - #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h new file mode 100644 index 00000000000..15884c4d2d9 --- /dev/null +++ b/source/blender/blenlib/BLI_string_utf8.h @@ -0,0 +1,55 @@ +/* + * $Id: + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BLI_STRING_UTF8_H +#define BLI_STRING_UTF8_H + +/** \file BLI_string.h + * \ingroup bli + */ + +#ifdef __cplusplus +extern "C" { +#endif + +char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy); +int BLI_utf8_invalid_byte(const char *str, int length); +int BLI_utf8_invalid_strip(char *str, int length); + + /* copied from glib */ +char *BLI_str_find_prev_char_utf8(const char *str, const char *p); +char *BLI_str_find_next_char_utf8(const char *p, const char *end); +char *BLI_str_prev_char_utf8(const char *p); + + /* wchar_t functions, copied from blenders own font.c originally */ +size_t BLI_wstrlen_utf8(const wchar_t *src); +size_t BLI_strlen_utf8(const char *strc); +size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy); +size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst, const char *src, const size_t maxcpy); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index aa822731474..ea9f72c19c3 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -128,6 +128,7 @@ set(SRC BLI_storage.h BLI_storage_types.h BLI_string.h + BLI_string_utf8.h BLI_threads.h BLI_utildefines.h BLI_uvproject.h diff --git a/source/blender/blenlib/intern/BLI_args.c b/source/blender/blenlib/intern/BLI_args.c index cf3605a80ff..82891b1e121 100644 --- a/source/blender/blenlib/intern/BLI_args.c +++ b/source/blender/blenlib/intern/BLI_args.c @@ -39,7 +39,6 @@ #include "MEM_guardedalloc.h" #include "BLI_listbase.h" -#include "BLI_string.h" #include "BLI_utildefines.h" #include "BLI_args.h" #include "BLI_ghash.h" diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index dc6cb0ef228..f331d13e580 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -31,6 +31,8 @@ */ #include +#include +#include #include "BLI_string.h" @@ -183,6 +185,159 @@ char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy) return dst_r; } + +/* --------------------------------------------------------------------------*/ +/* wchar_t / utf8 functions */ + +/* UTF-8 <-> wchar transformations */ +static size_t chtoutf8(const unsigned long c, char o[4]) +{ + // Variables and initialization +/* memset(o, 0, 4); */ + + // Create the utf-8 string + if (c < 0x80) { + o[0] = (char) c; + return 1; + } + else if (c < 0x800) { + o[0] = (0xC0 | (c>>6)); + o[1] = (0x80 | (c & 0x3f)); + return 2; + } + else if (c < 0x10000) { + o[0] = (0xe0 | (c >> 12)); + o[1] = (0x80 | (c >>6 & 0x3f)); + o[2] = (0x80 | (c & 0x3f)); + return 3; + } + else if (c < 0x200000) { + o[0] = (0xf0 | (c>>18)); + o[1] = (0x80 | (c >>12 & 0x3f)); + o[2] = (0x80 | (c >> 6 & 0x3f)); + o[3] = (0x80 | (c & 0x3f)); + return 4; + } + + /* should we assert here? */ + return 0; +} + +size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy) +{ + size_t len = 0; + while(*src && len < maxcpy) { /* XXX can still run over the buffer because utf8 size isnt known :| */ + len += chtoutf8(*src++, dst+len); + } + + dst[len]= '\0'; + + return len; +} + +/* wchar len in utf8 */ +size_t BLI_wstrlen_utf8(const wchar_t *src) +{ + char ch_dummy[4]; + size_t len = 0; + + while(*src) { + len += chtoutf8(*src++, ch_dummy); + } + + return len; +} + +// utf8slen +size_t BLI_strlen_utf8(const char *strc) +{ + int len=0; + + while(*strc) { + if ((*strc & 0xe0) == 0xc0) { + if((strc[1] & 0x80) && (strc[1] & 0x40) == 0x00) + strc++; + } else if ((*strc & 0xf0) == 0xe0) { + if((strc[1] & strc[2] & 0x80) && ((strc[1] | strc[2]) & 0x40) == 0x00) + strc += 2; + } else if ((*strc & 0xf8) == 0xf0) { + if((strc[1] & strc[2] & strc[3] & 0x80) && ((strc[1] | strc[2] | strc[3]) & 0x40) == 0x00) + strc += 3; + } + + strc++; + len++; + } + + return len; +} + + +/* Converts Unicode to wchar + +According to RFC 3629 "UTF-8, a transformation format of ISO 10646" +(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are: + + Char. number range | UTF-8 octet sequence + (hexadecimal) | (binary) + --------------------+--------------------------------------------- + 0000 0000-0000 007F | 0xxxxxxx + 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + +If the encoding incidated by the first character is incorrect (because the +1 to 3 following characters do not match 10xxxxxx), the output is a '?' and +only a single input character is consumed. + +*/ + +size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size_t maxcpy) +{ + int len=0; + + if(dst_w==NULL || src_c==NULL) return(0); + + while(*src_c && len < maxcpy) { + if ((*src_c & 0xe0) == 0xc0) { + if((src_c[1] & 0x80) && (src_c[1] & 0x40) == 0x00) { + *dst_w=((src_c[0] &0x1f)<<6) | (src_c[1]&0x3f); + src_c++; + } else { + *dst_w = '?'; + } + } else if ((*src_c & 0xf0) == 0xe0) { + if((src_c[1] & src_c[2] & 0x80) && ((src_c[1] | src_c[2]) & 0x40) == 0x00) { + *dst_w=((src_c[0] & 0x0f)<<12) | ((src_c[1]&0x3f)<<6) | (src_c[2]&0x3f); + src_c += 2; + } else { + *dst_w = '?'; + } + } else if ((*src_c & 0xf8) == 0xf0) { + if((src_c[1] & src_c[2] & src_c[3] & 0x80) && ((src_c[1] | src_c[2] | src_c[3]) & 0x40) == 0x00) { + *dst_w=((src_c[0] & 0x07)<<18) | ((src_c[1]&0x1f)<<12) | ((src_c[2]&0x3f)<<6) | (src_c[3]&0x3f); + src_c += 3; + } else { + *dst_w = '?'; + } + } else { + *dst_w=(src_c[0] & 0x7f); + } + + src_c++; + dst_w++; + len++; + } + return len; +} + +/* end wchar_t / utf8 functions */ +/* --------------------------------------------------------------------------*/ + + + + + /* copied from glib */ /** * g_utf8_find_prev_char: diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 60b1cc8f5cd..03e226e3a75 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -221,13 +221,13 @@ static void update_string(Curve *cu) MEM_freeN(cu->str); // Calculate the actual string length in UTF-8 variable characters - len = wcsleninu8(ef->textbuf); + len = BLI_wstrlen_utf8(ef->textbuf); // Alloc memory for UTF-8 variable char length string cu->str = MEM_callocN(len + sizeof(wchar_t), "str"); // Copy the wchar to UTF-8 - wcs2utf8s(cu->str, ef->textbuf); + BLI_strncpy_wchar_as_utf8(cu->str, ef->textbuf, len + 1); } static int insert_into_textbuf(Object *obedit, uintptr_t c) @@ -373,7 +373,7 @@ static int paste_file(bContext *C, ReportList *reports, const char *filename) if(cu->len+filelentextbuf, mem); MEM_freeN(mem); cu->len += tmplen; @@ -1241,10 +1241,10 @@ static int insert_text_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; inserted_utf8= RNA_string_get_alloc(op->ptr, "text", NULL, 0); - len= strlen(inserted_utf8); + len= BLI_strlen_utf8(inserted_utf8); inserted_text= MEM_callocN(sizeof(wchar_t)*(len+1), "FONT_insert_text"); - utf8towchar(inserted_text, inserted_utf8); + BLI_strncpy_wchar_from_utf8(inserted_text, inserted_utf8, len+1); for(a=0; aptr, "text", inserted_utf8); } @@ -1478,7 +1478,7 @@ void make_editText(Object *obedit) } // Convert the original text to wchar_t - utf8towchar(ef->textbuf, cu->str); + BLI_strncpy_wchar_from_utf8(ef->textbuf, cu->str, MAXTEXT+4); /* length is bogus */ wcscpy(ef->oldstr, ef->textbuf); cu->len= wcslen(ef->textbuf); diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 545d60bfcb9..aeb8ad99dd2 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -38,6 +38,7 @@ #include "BLI_listbase.h" #include "BLI_string.h" +#include "BLI_string_utf8.h" #include "BLI_utildefines.h" #include "BKE_context.h" diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index a40900fb39b..aefe773fdad 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -600,13 +600,13 @@ static void ui_draw_but_CHARTAB(uiBut *but) wstr[0] = cs; if(strcmp(G.selfont->name, FO_BUILTIN_NAME)) { - wcs2utf8s((char *)ustr, (wchar_t *)wstr); + BLI_strncpy_wchar_as_utf8((char *)ustr, (wchar_t *)wstr, sizeof(ustr)); } else { if(G.ui_international == TRUE) { - wcs2utf8s((char *)ustr, (wchar_t *)wstr); + BLI_strncpy_wchar_as_utf8((char *)ustr, (wchar_t *)wstr, sizeof(ustr)); } else { diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 77a25307651..0375345afcc 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -38,7 +38,6 @@ #include "DNA_scene_types.h" #include "DNA_userdef_types.h" -#include "BLI_string.h" #include "BLI_utildefines.h" #include "BLI_ghash.h" diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index aa2ea124fe0..bd9a38ab27e 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -44,7 +44,6 @@ #include "BLI_blenlib.h" #include "BLI_linklist.h" #include "BLI_dynstr.h" -#include "BLI_string.h" #ifdef WIN32 #include /* need to include windows.h so _WIN32_IE is defined */ diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c index 635813d856e..e4abd8b329d 100644 --- a/source/blender/imbuf/intern/indexer.c +++ b/source/blender/imbuf/intern/indexer.c @@ -29,10 +29,11 @@ #include "AVI_avi.h" #include "imbuf.h" #include "MEM_guardedalloc.h" + #include "BLI_utildefines.h" #include "BLI_blenlib.h" #include "BLI_math_base.h" -#include "BLI_string.h" + #include "MEM_guardedalloc.h" #include "DNA_userdef_types.h" #include "BKE_global.h" diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index c03a10f2170..8bdbdcefc61 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -483,7 +483,7 @@ void rna_Curve_body_set(PointerRNA *ptr, const char *value) cu->str = MEM_callocN(len + sizeof(wchar_t), "str"); cu->strinfo = MEM_callocN( (len+4) *sizeof(CharInfo), "strinfo"); /* don't know why this is +4, just duplicating load_editText() */ - //wcs2utf8s(cu->str, value); // value is not wchar_t + //BLI_strncpy_wchar_as_utf8(cu->str, value, len+1); // value is not wchar_t BLI_strncpy(cu->str, value, len+1); } diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index ab469c19e15..06571a454be 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -39,7 +39,6 @@ #include "DNA_genfile.h" #include "DNA_sdna_types.h" -#include "BLI_string.h" #include "BLI_utildefines.h" #include "BLI_ghash.h" diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index e658532db24..575495e186e 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -30,7 +30,7 @@ #include "py_capi_utils.h" -#include "BKE_font.h" /* only for utf8towchar, should replace with py funcs but too late in release now */ +#include "BLI_string_utf8.h" /* only for BLI_strncpy_wchar_from_utf8, should replace with py funcs but too late in release now */ #ifdef _WIN32 /* BLI_setenv */ #include "BLI_path_util.h" @@ -478,7 +478,7 @@ void PyC_SetHomePath(const char *py_path_bundle) /* cant use this, on linux gives bug: #23018, TODO: try LANG="en_US.UTF-8" /usr/bin/blender, suggested 22008 */ /* mbstowcs(py_path_bundle_wchar, py_path_bundle, FILE_MAXDIR); */ - utf8towchar(py_path_bundle_wchar, py_path_bundle); + BLI_strncpy_wchar_from_utf8(py_path_bundle_wchar, py_path_bundle, sizeof(py_path_bundle_wchar) / sizeof(wchar_t)); Py_SetPythonHome(py_path_bundle_wchar); // printf("found python (wchar_t) '%ls'\n", py_path_bundle_wchar); diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index aaa813137c6..ddbd557375c 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -52,12 +52,12 @@ #include "BLI_path_util.h" #include "BLI_math_base.h" #include "BLI_string.h" +#include "BLI_string_utf8.h" #include "BLI_utildefines.h" #include "BKE_context.h" #include "BKE_text.h" -#include "BKE_font.h" /* only for utf8towchar */ #include "BKE_main.h" #include "BKE_global.h" /* only for script checking */ @@ -194,7 +194,7 @@ void BPY_python_start(int argc, const char **argv) /* not essential but nice to set our name */ static wchar_t bprogname_wchar[FILE_MAXDIR+FILE_MAXFILE]; /* python holds a reference */ - utf8towchar(bprogname_wchar, bprogname); + BLI_strncpy_wchar_from_utf8(bprogname_wchar, bprogname, sizeof(bprogname_wchar) / sizeof(wchar_t)); Py_SetProgramName(bprogname_wchar); /* must run before python initializes */ diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 4924457da1a..1face062e7e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -56,7 +56,6 @@ #include "BLI_blenlib.h" #include "BLI_dynstr.h" /*for WM_operator_pystring */ #include "BLI_math.h" -#include "BLI_string.h" #include "BLI_utildefines.h" #include "BLI_ghash.h" From fe30dcbfb6281857435759b5c36ff390d7c067cb Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 20 Oct 2011 09:53:02 +0000 Subject: [PATCH 078/119] Minor: fix [#28899] Frequently used modelling modifiers moved further out of reach by new Vertex Weight modifiers. --- source/blender/makesrna/intern/rna_modifier.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index fbf54a76cd9..c33fa0bc7f8 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -55,6 +55,11 @@ #include "WM_types.h" EnumPropertyItem modifier_type_items[] ={ + {0, "", 0, "Modify", ""}, + {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, + {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""}, + {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""}, + {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Proximity", ""}, {0, "", 0, "Generate", ""}, {eModifierType_Array, "ARRAY", ICON_MOD_ARRAY, "Array", ""}, {eModifierType_Bevel, "BEVEL", ICON_MOD_BEVEL, "Bevel", ""}, @@ -68,11 +73,6 @@ EnumPropertyItem modifier_type_items[] ={ {eModifierType_Screw, "SCREW", ICON_MOD_SCREW, "Screw", ""}, {eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""}, {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, - {0, "", 0, "Modify", ""}, - {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, - {eModifierType_WeightVGEdit, "VERTEX_WEIGHT_EDIT", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Edit", ""}, - {eModifierType_WeightVGMix, "VERTEX_WEIGHT_MIX", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Mix", ""}, - {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", ICON_MOD_VERTEX_WEIGHT, "Vertex Weight Proximity", ""}, {0, "", 0, "Deform", ""}, {eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""}, {eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""}, From 36017e2af9a3015876b4f573f00630cdae39c1ac Mon Sep 17 00:00:00 2001 From: Jens Verwiebe Date: Thu, 20 Oct 2011 10:35:54 +0000 Subject: [PATCH 079/119] OSX: dalai's patch for utf8 support, todo: uppercase chars not working yet --- intern/ghost/intern/GHOST_SystemCocoa.mm | 33 +++++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 58a856375bb..1dfb8e36422 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1654,8 +1654,17 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) //printf("\nW failure for event 0x%x",[event type]); return GHOST_kFailure; } + + /* unicode input - not entirely supported yet + * but we are getting the right byte, Blender is not drawing it though + * also some languages may need special treatment: + - Japanese: romanji is used as input, and every 2 letters OSX converts the text + to Hiragana/Katakana. + - Korean: one add one letter at a time, and then the OSX join them in the equivalent + combined letter. + */ + char utf8_buf[6]= {'\0'}; - char utf8_buf[6]= {'\0'}; /* TODO, unicode input */ switch ([event type]) { case NSKeyDown: @@ -1669,7 +1678,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) keyCode = convertKey([event keyCode],0, [event type] == NSKeyDown?kUCKeyActionDown:kUCKeyActionUp); - + /* ascii */ characters = [event characters]; if ([characters length]>0) { //Check for dead keys //Convert characters to iso latin 1 encoding @@ -1681,16 +1690,32 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) } else ascii= 0; + + /* unicode */ + if ([characters length]>0) { + convertedCharacters = [characters dataUsingEncoding:NSUTF8StringEncoding]; + if ([convertedCharacters length]>0) { + utf8_buf[0] = ((char*)[convertedCharacters bytes])[0]; + utf8_buf[1] = ((char*)[convertedCharacters bytes])[1]; + utf8_buf[2] = ((char*)[convertedCharacters bytes])[2]; + utf8_buf[3] = ((char*)[convertedCharacters bytes])[3]; + utf8_buf[4] = ((char*)[convertedCharacters bytes])[4]; + utf8_buf[5] = ((char*)[convertedCharacters bytes])[5]; + } + else { + utf8_buf[0] = '\0'; + } + } if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask)) break; //Cmd-Q is directly handled by Cocoa if ([event type] == NSKeyDown) { pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii, utf8_buf) ); - //printf("\nKey down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii); + //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } else { pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii, utf8_buf) ); - //printf("\nKey up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii); + //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } break; From 70ba7d02dbb44a20ac6d405d75e81806fc7ce4b5 Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Thu, 20 Oct 2011 10:36:02 +0000 Subject: [PATCH 080/119] Fix for #28980, could enter infinite loop during node socket verification if dynamic sockets are present. Note: in this particular bug report the sockets have some faulty flag settings (none of them should be flagged as SOCK_DYNAMIC), needs more info. --- source/blender/nodes/intern/node_socket.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/blender/nodes/intern/node_socket.c b/source/blender/nodes/intern/node_socket.c index 51e48b84383..74f15af88a2 100644 --- a/source/blender/nodes/intern/node_socket.c +++ b/source/blender/nodes/intern/node_socket.c @@ -405,15 +405,15 @@ static bNodeSocket *verify_socket_template(bNodeTree *ntree, bNode *node, int in static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_out, ListBase *socklist, bNodeSocketTemplate *stemp_first) { - bNodeSocket *sock; + bNodeSocket *sock, *nextsock; bNodeSocketTemplate *stemp; /* no inputs anymore? */ if(stemp_first==NULL) { - while(socklist->first) { - sock = (bNodeSocket*)socklist->first; + for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) { + nextsock = sock->next; if (!(sock->flag & SOCK_DYNAMIC)) - nodeRemoveSocket(ntree, node, socklist->first); + nodeRemoveSocket(ntree, node, sock); } } else { @@ -424,10 +424,10 @@ static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_ou stemp++; } /* leftovers are removed */ - while(socklist->first) { - sock = (bNodeSocket*)socklist->first; + for (sock = (bNodeSocket*)socklist->first; sock; sock=nextsock) { + nextsock = sock->next; if (!(sock->flag & SOCK_DYNAMIC)) - nodeRemoveSocket(ntree, node, socklist->first); + nodeRemoveSocket(ntree, node, sock); } /* and we put back the verified sockets */ From 3d501ca70fb3811ced1fdad5e4a170d173531a94 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 10:47:38 +0000 Subject: [PATCH 081/119] unicode text input for 3d text. --- source/blender/blenlib/BLI_string_utf8.h | 2 +- source/blender/editors/curve/editfont.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h index 15884c4d2d9..b7a9c204bfe 100644 --- a/source/blender/blenlib/BLI_string_utf8.h +++ b/source/blender/blenlib/BLI_string_utf8.h @@ -25,7 +25,7 @@ #ifndef BLI_STRING_UTF8_H #define BLI_STRING_UTF8_H -/** \file BLI_string.h +/** \file BLI_string_utf8.h * \ingroup bli */ diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 03e226e3a75..dff5be059c3 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1291,8 +1291,20 @@ static int insert_text_invoke(bContext *C, wmOperator *op, wmEvent *evt) if(val && ascii) { /* handle case like TAB (== 9) */ - if((ascii > 31 && ascii < 254 && ascii != 127) || (ascii==13) || (ascii==10) || (ascii==8)) { - if(accentcode) { + if( (ascii > 31 && ascii < 254 && ascii != 127) || + (ascii==13) || + (ascii==10) || + (ascii==8) || + (evt->utf8_buf[0])) + { + + if (evt->utf8_buf[0]) { + BLI_strncpy_wchar_from_utf8(inserted_text, evt->utf8_buf, 1); + ascii= inserted_text[0]; + insert_into_textbuf(obedit, ascii); + accentcode= 0; + } + else if(accentcode) { if(cu->pos>0) { inserted_text[0]= findaccent(ef->textbuf[cu->pos-1], ascii); ef->textbuf[cu->pos-1]= inserted_text[0]; From 2f92b5bc3fa11609e07ba7bc0859275ee3ccf12b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 11:18:57 +0000 Subject: [PATCH 082/119] fixes for unicode input, should work for operator textinput now. --- source/blender/editors/curve/editfont.c | 2 +- source/blender/editors/interface/interface_handlers.c | 4 ++-- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index dff5be059c3..c80f5c85c25 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -1289,7 +1289,7 @@ static int insert_text_invoke(bContext *C, wmOperator *op, wmEvent *evt) else if(event==BACKSPACEKEY) ascii= 0; - if(val && ascii) { + if(val && (ascii || evt->utf8_buf[0])) { /* handle case like TAB (== 9) */ if( (ascii > 31 && ascii < 254 && ascii != 127) || (ascii==13) || diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 1f30f8a5109..c02bbafce15 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1930,7 +1930,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle break; } - if(event->ascii && (retval == WM_UI_HANDLER_CONTINUE)) { + if((event->ascii || event->utf8_buf[0]) && (retval == WM_UI_HANDLER_CONTINUE)) { char ascii = event->ascii; /* exception that's useful for number buttons, some keyboard @@ -1939,7 +1939,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle if(event->type == PADPERIOD && ascii == ',') ascii = '.'; - if(event->utf8_buf[0] || 1) { + if(event->utf8_buf[0]) { /* keep this printf until utf8 is well tested */ printf("%s: utf8 char '%s'\n", __func__, event->utf8_buf); // strcpy(event->utf8_buf, "12345"); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 7dcb4cf091f..6fd84b4c315 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1146,7 +1146,7 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) /* the matching rules */ if(kmitype==KM_TEXTINPUT) - if(ISTEXTINPUT(winevent->type) && winevent->ascii) return 1; + if(ISTEXTINPUT(winevent->type) && (winevent->ascii || winevent->utf8_buf[0])) return 1; if(kmitype!=KM_ANY) if(winevent->type!=kmitype) return 0; From a828845f27557242d59eb881ca2d5a43c8915636 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Thu, 20 Oct 2011 12:15:39 +0000 Subject: [PATCH 083/119] reverting 41124, maybe better solution is to enforce linear space in generated float images --- .../imbuf/intern/openexr/openexr_api.cpp | 54 +++++-------------- 1 file changed, 13 insertions(+), 41 deletions(-) diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index aa7defb2f39..e064d7f760d 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -342,55 +342,27 @@ static int imb_save_openexr_float(struct ImBuf *ibuf, const char *name, int flag FrameBuffer frameBuffer; OutputFile *file = new OutputFile(name, header); - int xstride = sizeof(float) * 4; - int ystride = xstride*width; - float *init_to = new float [4 * width*height * sizeof(float)]; - float *from, *to = init_to; + int xstride = sizeof(float) * channels; + int ystride = - xstride*width; + float *rect[4] = {NULL, NULL, NULL, NULL}; - frameBuffer.insert ("R", Slice (FLOAT, (char *)init_to, xstride, ystride)); - frameBuffer.insert ("G", Slice (FLOAT, (char *)(init_to + 1), xstride, ystride)); - frameBuffer.insert ("B", Slice (FLOAT, (char *)(init_to + 2), xstride, ystride)); + /* last scanline, stride negative */ + rect[0]= ibuf->rect_float + channels*(height-1)*width; + rect[1]= rect[0]+1; + rect[2]= rect[0]+2; + rect[3]= (channels >= 4)? rect[0]+3:rect[0]; /* red as alpha, is this needed since alpha isnt written? */ + + frameBuffer.insert ("R", Slice (FLOAT, (char *)rect[0], xstride, ystride)); + frameBuffer.insert ("G", Slice (FLOAT, (char *)rect[1], xstride, ystride)); + frameBuffer.insert ("B", Slice (FLOAT, (char *)rect[2], xstride, ystride)); if (ibuf->depth==32 && channels >= 4) - frameBuffer.insert ("A", Slice (FLOAT, (char *)(init_to + 3), xstride, ystride)); + frameBuffer.insert ("A", Slice (FLOAT, (char *)rect[3], xstride, ystride)); if (write_zbuf) frameBuffer.insert ("Z", Slice (FLOAT, (char *) (ibuf->zbuf_float + (height-1)*width), sizeof(float), sizeof(float) * -width)); - - if(ibuf->profile == IB_PROFILE_LINEAR_RGB) { - for (int i = ibuf->y-1; i >= 0; i--) - { - from= ibuf->rect_float + channels*i*width; - - for (int j = ibuf->x; j > 0; j--) - { - to[0] = from[0]; - to[1] = from[1]; - to[2] = from[2]; - to[3] = (channels >= 4)? from[3]: 1.0f; - to+= 4; from += 4; - } - } - } - else { - for (int i = ibuf->y-1; i >= 0; i--) - { - from= ibuf->rect_float + channels*i*width; - - for (int j = ibuf->x; j > 0; j--) - { - to[0] = srgb_to_linearrgb(from[0]); - to[1] = srgb_to_linearrgb(from[1]); - to[2] = srgb_to_linearrgb(from[2]); - to[3] = (channels >= 4)? from[3]: 1.0f; - to+= 4; from += 4; - } - } - } - file->setFrameBuffer (frameBuffer); file->writePixels (height); delete file; - delete [] init_to; } catch (const std::exception &exc) { From 2bd9519e39f7c383005fd531f4c7dd92cce246ad Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 20 Oct 2011 13:50:24 +0000 Subject: [PATCH 084/119] BLI_ghash.h was including BLI_blenlib.h, remove from ghash header and include in each file --- source/blender/blenkernel/intern/BME_conversions.c | 1 + source/blender/blenkernel/intern/BME_eulers.c | 1 + source/blender/blenkernel/intern/BME_mesh.c | 2 +- source/blender/blenkernel/intern/BME_structure.c | 1 + source/blender/blenkernel/intern/depsgraph.c | 1 + source/blender/blenkernel/intern/modifier.c | 3 +++ source/blender/blenkernel/intern/nla.c | 3 +++ source/blender/blenkernel/intern/softbody.c | 1 + source/blender/blenlib/BLI_ghash.h | 7 ------- source/blender/blenlib/intern/BLI_args.c | 4 +++- source/blender/blenlib/intern/BLI_ghash.c | 9 +++++++++ source/blender/blenloader/intern/readblenentry.c | 2 ++ source/blender/editors/interface/interface_templates.c | 1 + source/blender/editors/sculpt_paint/sculpt_undo.c | 2 ++ source/blender/modifiers/intern/MOD_bevel.c | 1 + source/blender/modifiers/intern/MOD_boolean_util.c | 1 + source/blender/modifiers/intern/MOD_mask.c | 2 ++ source/blender/python/intern/bpy_operator.c | 1 + 18 files changed, 34 insertions(+), 9 deletions(-) diff --git a/source/blender/blenkernel/intern/BME_conversions.c b/source/blender/blenkernel/intern/BME_conversions.c index 9a3c9462934..8b5cfe1b882 100644 --- a/source/blender/blenkernel/intern/BME_conversions.c +++ b/source/blender/blenkernel/intern/BME_conversions.c @@ -44,6 +44,7 @@ #include "DNA_scene_types.h" #include "BLI_edgehash.h" +#include "BLI_listbase.h" #include "BLI_utildefines.h" #include "BKE_mesh.h" diff --git a/source/blender/blenkernel/intern/BME_eulers.c b/source/blender/blenkernel/intern/BME_eulers.c index 593f50a65e7..bbd439dcb93 100644 --- a/source/blender/blenkernel/intern/BME_eulers.c +++ b/source/blender/blenkernel/intern/BME_eulers.c @@ -38,6 +38,7 @@ #include "MEM_guardedalloc.h" +#include "BLI_listbase.h" #include "BLI_utildefines.h" #include "bmesh_private.h" diff --git a/source/blender/blenkernel/intern/BME_mesh.c b/source/blender/blenkernel/intern/BME_mesh.c index 62a9601da13..e34f2ee1e50 100644 --- a/source/blender/blenkernel/intern/BME_mesh.c +++ b/source/blender/blenkernel/intern/BME_mesh.c @@ -37,7 +37,7 @@ */ - +#include "BLI_listbase.h" #include "MEM_guardedalloc.h" #include "BKE_bmesh.h" #include "bmesh_private.h" diff --git a/source/blender/blenkernel/intern/BME_structure.c b/source/blender/blenkernel/intern/BME_structure.c index bd5241adb6b..c385ad4fcda 100644 --- a/source/blender/blenkernel/intern/BME_structure.c +++ b/source/blender/blenkernel/intern/BME_structure.c @@ -40,6 +40,7 @@ #include #include "MEM_guardedalloc.h" +#include "BLI_listbase.h" #include "BLI_utildefines.h" #include "BKE_bmesh.h" /** diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 8d0c20ecc52..d3c5942b685 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -38,6 +38,7 @@ #include "BLI_winstuff.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" #include "BLI_ghash.h" #include "DNA_anim_types.h" diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 2cee9676e5e..edddcb4a6b2 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -52,6 +52,9 @@ #include "DNA_meshdata_types.h" #include "BLI_utildefines.h" +#include "BLI_path_util.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BKE_bmesh.h" #include "BKE_cloth.h" diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c index 97347d85deb..15513675c7a 100644 --- a/source/blender/blenkernel/intern/nla.c +++ b/source/blender/blenkernel/intern/nla.c @@ -42,6 +42,9 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_path_util.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_ghash.h" #include "DNA_anim_types.h" diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 65b4a21d0ee..8787ec07d9c 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -68,6 +68,7 @@ variables on the UI for now #include "BLI_math.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" #include "BLI_ghash.h" #include "BLI_threads.h" diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h index e4afc6ad79b..e4ef834822f 100644 --- a/source/blender/blenlib/BLI_ghash.h +++ b/source/blender/blenlib/BLI_ghash.h @@ -39,13 +39,6 @@ extern "C" { #endif -#include -#include -#include - -#include "BLI_mempool.h" -#include "BLI_blenlib.h" - typedef unsigned int (*GHashHashFP) (const void *key); typedef int (*GHashCmpFP) (const void *a, const void *b); typedef void (*GHashKeyFreeFP) (void *key); diff --git a/source/blender/blenlib/intern/BLI_args.c b/source/blender/blenlib/intern/BLI_args.c index 82891b1e121..00903aa42cd 100644 --- a/source/blender/blenlib/intern/BLI_args.c +++ b/source/blender/blenlib/intern/BLI_args.c @@ -35,11 +35,13 @@ #include /* for tolower */ +#include #include "MEM_guardedalloc.h" -#include "BLI_listbase.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_args.h" #include "BLI_ghash.h" diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c index 03e3b7ab560..e34abaf15f9 100644 --- a/source/blender/blenlib/intern/BLI_ghash.c +++ b/source/blender/blenlib/intern/BLI_ghash.c @@ -32,11 +32,20 @@ * \ingroup bli */ +#include +#include + #include "MEM_guardedalloc.h" + + +// #include "BLI_blenlib.h" + +#include "BLI_mempool.h" #include "BLI_utildefines.h" #include "BLI_ghash.h" + #include "BLO_sys_types.h" // for intptr_t support /***/ diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index 220784c9ff7..ded5a95df5a 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -44,6 +44,8 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_ghash.h" #include "BLI_linklist.h" diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 0375345afcc..e264146a6e3 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -39,6 +39,7 @@ #include "DNA_userdef_types.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "BLI_ghash.h" #include "BKE_animsys.h" diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index a32487e7117..7656e51d241 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -39,6 +39,8 @@ #include "BLI_math.h" #include "BLI_utildefines.h" +#include "BLI_string.h" +#include "BLI_listbase.h" #include "BLI_ghash.h" #include "BLI_threads.h" diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c index 197e6a24342..3397dad2460 100644 --- a/source/blender/modifiers/intern/MOD_bevel.c +++ b/source/blender/modifiers/intern/MOD_bevel.c @@ -37,6 +37,7 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "BKE_bmesh.h" #include "BKE_cdderivedmesh.h" diff --git a/source/blender/modifiers/intern/MOD_boolean_util.c b/source/blender/modifiers/intern/MOD_boolean_util.c index 9d83e351b2b..01245ca4e01 100644 --- a/source/blender/modifiers/intern/MOD_boolean_util.c +++ b/source/blender/modifiers/intern/MOD_boolean_util.c @@ -43,6 +43,7 @@ #include "BLI_math.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" #include "BLI_ghash.h" #include "BKE_cdderivedmesh.h" diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c index b7cdac9e246..ad1e0806327 100644 --- a/source/blender/modifiers/intern/MOD_mask.c +++ b/source/blender/modifiers/intern/MOD_mask.c @@ -38,6 +38,8 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_listbase.h" +#include "BLI_string.h" #include "BLI_ghash.h" #include "DNA_armature_types.h" diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index b5fd7851458..7e8b9b7b6df 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -44,6 +44,7 @@ #include "../generic/bpy_internal_import.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "RNA_access.h" #include "RNA_enum_types.h" From 7131b00a431770da69a0dbc32c8616d560360de0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 20 Oct 2011 14:54:22 +0000 Subject: [PATCH 085/119] Fix missing updates when changing smoke flow settings. --- source/blender/makesrna/intern/rna_smoke.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index 44bdeba3e2e..c40548ade6b 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -289,12 +289,14 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna) RNA_def_property_range(prop, 0.001, 1); RNA_def_property_ui_range(prop, 0.001, 1.0, 1.0, 4); RNA_def_property_ui_text(prop, "Density", ""); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "temperature", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "temp"); RNA_def_property_range(prop, -10, 10); RNA_def_property_ui_range(prop, -10, 10, 1, 1); RNA_def_property_ui_text(prop, "Temp. Diff.", "Temperature difference to ambient temperature"); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "psys"); @@ -306,20 +308,24 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "use_outflow", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "type", MOD_SMOKE_FLOW_TYPE_OUTFLOW); RNA_def_property_ui_text(prop, "Outflow", "Delete smoke from simulation"); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "use_absolute", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_ABSOLUTE); RNA_def_property_ui_text(prop, "Absolute Density", "Only allow given density value in emitter area"); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "initial_velocity", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_INITVELOCITY); RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits its velocity from the emitter particle"); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); prop= RNA_def_property(srna, "velocity_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "vel_multi"); RNA_def_property_range(prop, -2.0, 2.0); RNA_def_property_ui_range(prop, -2.0, 2.0, 0.05, 5); RNA_def_property_ui_text(prop, "Multiplier", "Multiplier to adjust velocity passed to smoke"); + RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset"); } static void rna_def_smoke_coll_settings(BlenderRNA *brna) From 4ea8cb25295d0e61a1fcf1cd16028a3586ed5921 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 20 Oct 2011 14:55:02 +0000 Subject: [PATCH 086/119] Fix missing node editor update when assigning/removing materials on objects. --- source/blender/editors/space_node/space_node.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 1047e906a10..1d9723f598b 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -214,6 +214,12 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_refresh(sa); } break; + case NC_OBJECT: + if(type==NTREE_SHADER) { + if(wmn->data==ND_OB_SHADING) + ED_area_tag_refresh(sa); + } + break; case NC_TEXT: /* pynodes */ if(wmn->data==ND_SHADING) From f21043f32e2726ff0ee08b19aa8b634eeef7cf3e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 20 Oct 2011 14:58:53 +0000 Subject: [PATCH 087/119] UI tweak: user texture datablock chooser for fields and warp modifier, more consistent with other places. --- release/scripts/startup/bl_ui/properties_data_modifier.py | 2 +- release/scripts/startup/bl_ui/properties_physics_field.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index 62261af729f..e4b152834fc 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -665,7 +665,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): split = layout.split() col = split.column() col.label(text="Texture:") - col.prop(md, "texture", text="") + col.template_ID(md, "texture", new="texture.new") col = split.column() col.label(text="Texture Coordinates:") diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py index f0755962580..2229b9dc3da 100644 --- a/release/scripts/startup/bl_ui/properties_physics_field.py +++ b/release/scripts/startup/bl_ui/properties_physics_field.py @@ -61,6 +61,10 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel): split = layout.split(percentage=0.2) split.label(text="Shape:") split.prop(field, "shape", text="") + elif field.type == 'TEXTURE': + split = layout.split(percentage=0.2) + split.label(text="Texture:") + split.row().template_ID(field, "texture", new="texture.new") split = layout.split() @@ -103,7 +107,6 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel): elif field.type == 'TEXTURE': col = split.column() col.prop(field, "strength") - col.prop(field, "texture", text="") col.prop(field, "texture_mode", text="") col.prop(field, "texture_nabla") From 458394690f7d9a274dbd6e248195894331bb63e0 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Thu, 20 Oct 2011 15:04:48 +0000 Subject: [PATCH 088/119] Version cycle: * Bcon1, alpha. --- source/blender/blenkernel/BKE_blender.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index e01586cb7d0..0cad398995a 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -53,7 +53,7 @@ extern "C" { /* can be left blank, otherwise a,b,c... etc with no quotes */ #define BLENDER_VERSION_CHAR /* alpha/beta/rc/release, docs use this */ -#define BLENDER_VERSION_CYCLE release +#define BLENDER_VERSION_CYCLE alpha struct ListBase; struct MemFile; From aba149189b7f0ee08765d2ef63a94080d02bdbf4 Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Thu, 20 Oct 2011 17:55:50 +0000 Subject: [PATCH 089/119] SVN maintenance. --- source/blender/blenlib/BLI_string_utf8.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h index b7a9c204bfe..c3bb81dd03f 100644 --- a/source/blender/blenlib/BLI_string_utf8.h +++ b/source/blender/blenlib/BLI_string_utf8.h @@ -1,5 +1,5 @@ /* - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * From 874c96a2b9b39a2518793bebaf747e955b43d435 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 20 Oct 2011 20:38:26 +0000 Subject: [PATCH 090/119] Cleaning i18n code. Previous state: Right now, there are "memories" of the "old" (less than a month!) translation way: * A few remaining calls to BLF_gettext() (only UI_translate_do_iface and UI_translate_do_tooltip should be used). * The _() macro still also calls BLF_gettext()! New state: Here are the changes made by the patch: * Removing the no more needed _() macro. * Removing most N_() and _() calls, only keeping the few needed ones (i.e. strings that are in no other way findable by xgettext and/or update_msg script). * Defining in UI_interface.h IFACE_() and TIP_() macros (resp. for UI_translate_do_iface and UI_translate_do_tooltip). * Replacing all calls to BLF_gettext by relevant IFACE_ or TIP_ one. * Replacing all calls to UI_translate_do_iface by IFACE_. * Replacing all calls to UI_translate_do_tooltip by TIP_. All this somewhat clarifies and simplifies the code. On the bf-translations scripts side, this only implies adding IFACE_ and TIP_ as detection markers for xgettext. It also allows to reduce POTFILES.in quite notably (only 20 files remaining in it). Please also have a look at those pages: * Coder POV: http://wiki.blender.org/index.php/Dev:2.5/Source/Interface/Internationalization * Translator POV: http://wiki.blender.org/index.php/Dev:2.5/Doc/How_to/Translate_Blender --- source/blender/blenfont/BLF_translation.h | 3 +- source/blender/editors/armature/poselib.c | 6 +- source/blender/editors/include/UI_interface.h | 4 + source/blender/editors/interface/interface.c | 5 +- .../editors/interface/interface_layout.c | 14 +- .../editors/interface/interface_panel.c | 6 +- .../editors/interface/interface_regions.c | 20 ++- .../editors/interface/interface_templates.c | 136 +++++++++--------- .../editors/interface/interface_utils.c | 2 +- source/blender/editors/screen/area.c | 4 +- .../editors/space_buttons/buttons_header.c | 2 +- source/blender/editors/space_file/file_draw.c | 22 +-- .../blender/editors/space_file/file_panels.c | 2 +- .../editors/space_graph/graph_buttons.c | 4 +- .../blender/editors/space_info/space_info.c | 4 +- .../blender/editors/space_nla/nla_buttons.c | 4 +- .../blender/editors/space_node/node_header.c | 56 ++++---- .../editors/space_view3d/view3d_header.c | 24 ++-- .../editors/space_view3d/view3d_toolbar.c | 2 +- .../transform/transform_orientations.c | 11 +- source/blender/makesrna/intern/rna_userdef.c | 54 +++---- source/blender/python/intern/bpy_rna.c | 2 +- .../blender/windowmanager/intern/wm_files.c | 10 +- .../windowmanager/intern/wm_operators.c | 110 +++++++------- .../blender/windowmanager/intern/wm_window.c | 6 +- 25 files changed, 244 insertions(+), 269 deletions(-) diff --git a/source/blender/blenfont/BLF_translation.h b/source/blender/blenfont/BLF_translation.h index 1c36f3e1504..707cd17e0b3 100644 --- a/source/blender/blenfont/BLF_translation.h +++ b/source/blender/blenfont/BLF_translation.h @@ -60,7 +60,8 @@ void BLF_lang_encoding_name(const char *str); void BLF_lang_encoding(const char *str); -#define _(msgid) BLF_gettext(msgid) +/*#define _(msgid) BLF_gettext(msgid)*/ +/* The "translation-marker" macro. */ #define N_(msgid) msgid #endif /* BLF_TRANSLATION_H */ diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index e7c7ebf3ece..8e9f5c7543c 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -409,15 +409,15 @@ static int poselib_add_menu_invoke (bContext *C, wmOperator *op, wmEvent *UNUSED uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT); /* add new (adds to the first unoccupied frame) */ - uiItemIntO(layout, UI_translate_do_iface(N_("Add New")), ICON_NONE, "POSELIB_OT_pose_add", "frame", poselib_get_free_index(ob->poselib)); + uiItemIntO(layout, IFACE_("Add New"), ICON_NONE, "POSELIB_OT_pose_add", "frame", poselib_get_free_index(ob->poselib)); /* check if we have any choices to add a new pose in any other way */ if ((ob->poselib) && (ob->poselib->markers.first)) { /* add new (on current frame) */ - uiItemIntO(layout, UI_translate_do_iface(N_("Add New (Current Frame)")), ICON_NONE, "POSELIB_OT_pose_add", "frame", CFRA); + uiItemIntO(layout, IFACE_("Add New (Current Frame)"), ICON_NONE, "POSELIB_OT_pose_add", "frame", CFRA); /* replace existing - submenu */ - uiItemMenuF(layout, UI_translate_do_iface(N_("Replace Existing...")), 0, poselib_add_menu_invoke__replacemenu, NULL); + uiItemMenuF(layout, IFACE_("Replace Existing..."), 0, poselib_add_menu_invoke__replacemenu, NULL); } uiPupMenuEnd(C, pup); diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index a06497889d9..43f6b36f5eb 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -813,5 +813,9 @@ int UI_translate_tooltips(void); const char *UI_translate_do_iface(const char *msgid); const char *UI_translate_do_tooltip(const char *msgid); +/* Those macros should be used everywhere in UI code. */ +#define IFACE_(msgid) UI_translate_do_iface(msgid) +#define TIP_(msgid) UI_translate_do_tooltip(msgid) + #endif /* UI_INTERFACE_H */ diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 16edd0a1a9e..a12d297bbb1 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2773,10 +2773,7 @@ static uiBut *ui_def_but_operator(uiBlock *block, int type, const char *opname, if ((!tip || tip[0]=='\0') && ot && ot->description) { tip= ot->description; -#ifdef WITH_INTERNATIONAL - if(UI_translate_tooltips()) - tip= BLF_gettext(tip); -#endif + tip = TIP_(tip); } but= ui_def_but(block, type, -1, str, x1, y1, x2, y2, NULL, 0, 0, 0, 0, tip); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index ba612fc8727..2f423a361b8 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -637,11 +637,7 @@ PointerRNA uiItemFullO(uiLayout *layout, const char *opname, const char *name, i } if(!name) { - name= ot->name; - -#ifdef WITH_INTERNATIONAL - name= UI_translate_do_iface(name); -#endif + name= IFACE_(ot->name); } if(layout->root->type == UI_LAYOUT_MENU && !icon) @@ -1430,11 +1426,7 @@ void uiItemM(uiLayout *layout, bContext *UNUSED(C), const char *menuname, const } if(!name) { - name= mt->label; - -#ifdef WITH_INTERNATIONAL - name= UI_translate_do_iface(name); -#endif + name= IFACE_(mt->label); } if(layout->root->type == UI_LAYOUT_MENU && !icon) @@ -2808,7 +2800,7 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in empty= uiDefAutoButsRNA(layout, &ptr, check_prop, label_align) == 0; if(empty && (flag & UI_LAYOUT_OP_SHOW_EMPTY)) { - uiItemL(layout, UI_translate_do_iface(N_("No Properties")), ICON_NONE); + uiItemL(layout, IFACE_("No Properties"), ICON_NONE); } } diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index c25e7f23c04..890a2b4ee7f 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -442,11 +442,7 @@ static void ui_draw_aligned_panel_header(uiStyle *style, uiBlock *block, rcti *r Panel *panel= block->panel; rcti hrect; int pnl_icons; - const char *activename= panel->drawname[0]?panel->drawname:panel->panelname; - -#ifdef WITH_INTERNATIONAL - activename= UI_translate_do_iface(activename); -#endif + const char *activename= IFACE_(panel->drawname[0] ? panel->drawname : panel->panelname); /* + 0.001f to avoid flirting with float inaccuracy */ if(panel->control & UI_PNL_CLOSE) pnl_icons=(panel->labelofs+2*PNL_ICON+5)/block->aspect + 0.001f; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 028ab05464b..bc4e3cf9f13 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -349,7 +349,6 @@ static void ui_tooltip_region_free_cb(ARegion *ar) ar->regiondata= NULL; } -#define TIP_(msgid) UI_translate_do_tooltip(msgid) ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) { uiStyle *style= UI_GetStyle(); @@ -410,7 +409,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) prop= (but->opptr)? but->opptr->data: NULL; if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Shortcut: %s")), buf); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Shortcut: %s"), buf); data->color[data->totline]= 0x888888; data->totline++; } @@ -420,7 +419,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) /* full string */ ui_get_but_string(but, buf, sizeof(buf)); if(buf[0]) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Value: %s")), buf); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Value: %s"), buf); data->color[data->totline]= 0x888888; data->totline++; } @@ -432,7 +431,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if (unit_type == PROP_UNIT_ROTATION) { if (RNA_property_type(but->rnaprop) == PROP_FLOAT) { float value= RNA_property_array_check(but->rnaprop) ? RNA_property_float_get_index(&but->rnapoin, but->rnaprop, but->rnaindex) : RNA_property_float_get(&but->rnapoin, but->rnaprop); - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Radians: %f")), value); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Radians: %f"), value); data->color[data->totline]= 0x888888; data->totline++; } @@ -441,7 +440,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if(but->flag & UI_BUT_DRIVEN) { if(ui_but_anim_expression_get(but, buf, sizeof(buf))) { /* expression */ - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Expression: %s")), buf); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Expression: %s"), buf); data->color[data->totline]= 0x888888; data->totline++; } @@ -449,7 +448,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) /* rna info */ if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s.%s")), RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop)); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Python: %s.%s"), RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop)); data->color[data->totline]= 0x888888; data->totline++; } @@ -457,7 +456,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if(but->rnapoin.id.data) { ID *id= but->rnapoin.id.data; if(id->lib && id->lib->name) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Library: %s")), id->lib->name); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Library: %s"), id->lib->name); data->color[data->totline]= 0x888888; data->totline++; } @@ -472,7 +471,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) /* operator info */ if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s")), str); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Python: %s"), str); data->color[data->totline]= 0x888888; data->totline++; } @@ -486,7 +485,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) WM_operator_poll_context(C, but->optype, but->opcontext); poll_msg= CTX_wm_operator_poll_msg_get(C); if(poll_msg) { - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Disabled: %s")), poll_msg); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Disabled: %s"), poll_msg); data->color[data->totline]= 0x6666ff; /* alert */ data->totline++; } @@ -496,7 +495,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) { if(but->menu_create_func && WM_menutype_contains((MenuType *)but->poin)) { MenuType *mt= (MenuType *)but->poin; - BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s")), mt->idname); + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_("Python: %s"), mt->idname); data->color[data->totline]= 0x888888; data->totline++; } @@ -615,7 +614,6 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) return ar; } -#undef TIP_ void ui_tooltip_free(bContext *C, ARegion *ar) { diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index e264146a6e3..c6bc0f58b5b 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -357,7 +357,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str if(flag & UI_ID_PREVIEWS) { but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*6, UI_UNIT_Y*6, - UI_translate_do_tooltip(template_id_browse_tip(type))); + TIP_(template_id_browse_tip(type))); if(type) { but->icon= RNA_struct_ui_icon(type); if (id) but->icon = ui_id_icon_get(C, id, 1); @@ -370,7 +370,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str } else if(flag & UI_ID_BROWSE) { but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, - UI_translate_do_tooltip(template_id_browse_tip(type))); + TIP_(template_id_browse_tip(type))); if(type) { but->icon= RNA_struct_ui_icon(type); /* default dragging of icon for id browse buttons */ @@ -396,12 +396,12 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str if(id->lib) { if(id->flag & LIB_INDIRECT) { but= uiDefIconBut(block, BUT, 0, ICON_LIBRARY_DATA_INDIRECT, 0,0,UI_UNIT_X,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Indirect library datablock, cannot change"))); + TIP_("Indirect library datablock, cannot change")); uiButSetFlag(but, UI_BUT_DISABLED); } else { but= uiDefIconBut(block, BUT, 0, ICON_LIBRARY_DATA_DIRECT, 0,0,UI_UNIT_X,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Direct linked library datablock, click to make local"))); + TIP_("Direct linked library datablock, click to make local")); if(!id_make_local(id, 1 /* test */) || (idfrom && idfrom->lib)) uiButSetFlag(but, UI_BUT_DISABLED); } @@ -415,7 +415,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str BLI_snprintf(str, sizeof(str), "%d", id->us); but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X + ((id->us < 10) ? 0:10), UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(_("Display number of users of this data (click to make a single-user copy)"))); + TIP_("Display number of users of this data (click to make a single-user copy)")); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ALONE)); if(!id_copy(id, NULL, 1 /* test only */) || (idfrom && idfrom->lib) || !editable) @@ -433,11 +433,11 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str int w= id?UI_UNIT_X: (flag & UI_ID_OPEN)? UI_UNIT_X*3: UI_UNIT_X*6; if(newop) { - but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": UI_translate_do_iface(N_("New")), 0, 0, w, UI_UNIT_Y, NULL); + but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": IFACE_("New"), 0, 0, w, UI_UNIT_Y, NULL); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW)); } else { - but= uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, (id)? "": _("New"), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL); + but= uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, (id)? "": IFACE_("New"), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW)); } @@ -449,11 +449,11 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str int w= id?UI_UNIT_X: (flag & UI_ID_ADD_NEW)? UI_UNIT_X*3: UI_UNIT_X*6; if(openop) { - but= uiDefIconTextButO(block, BUT, openop, WM_OP_INVOKE_DEFAULT, ICON_FILESEL, (id)? "": UI_translate_do_iface(N_("Open")), 0, 0, w, UI_UNIT_Y, NULL); + but= uiDefIconTextButO(block, BUT, openop, WM_OP_INVOKE_DEFAULT, ICON_FILESEL, (id)? "": IFACE_("Open"), 0, 0, w, UI_UNIT_Y, NULL); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_OPEN)); } else { - but= uiDefIconTextBut(block, BUT, 0, ICON_FILESEL, (id)? "": UI_translate_do_iface(N_("Open")), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL); + but= uiDefIconTextBut(block, BUT, 0, ICON_FILESEL, (id)? "": IFACE_("Open"), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_OPEN)); } @@ -470,7 +470,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str } else { but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Unlink datablock. Shift + Click to set users to zero, data will then not be saved"))); + TIP_("Unlink datablock. Shift + Click to set users to zero, data will then not be saved")); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_DELETE)); if(RNA_property_flag(template->prop) & PROP_NEVER_NULL) @@ -727,8 +727,8 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif BLI_snprintf(str, sizeof(str), "%s parent deform", md->name); uiDefBut(block, LABEL, 0, str, 0, 0, 185, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Modifier name"); - but = uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Make Real")), 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, - UI_translate_do_tooltip(N_("Convert virtual modifier to a real modifier"))); + but = uiDefBut(block, BUT, 0, IFACE_("Make Real"), 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, + TIP_("Convert virtual modifier to a real modifier")); uiButSetFunc(but, modifiers_convertToReal, ob, md); } else { @@ -765,7 +765,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif { /* -- convert to rna ? */ but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, - UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode"))); + TIP_("Apply modifier to editing cage during Editmode")); if (index < cageIndex) uiButSetFlag(but, UI_BUT_DISABLED); uiButSetFunc(but, modifiers_setOnCage, ob, md); @@ -786,7 +786,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif /* add disabled pre-tesselated button, so users could have message for this modifiers */ but = uiDefIconButBitI(block, TOG, eModifierMode_ApplyOnSpline, 0, ICON_SURFACE_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, - UI_translate_do_tooltip(N_("This modifier could be applied on splines' points only"))); + TIP_("This modifier could be applied on splines' points only")); uiButSetFlag(but, UI_BUT_DISABLED); } else if (mti->type != eModifierTypeType_Constructive) { /* constructive modifiers tesselates curve before applying */ @@ -836,17 +836,17 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif } else { uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT); - uiItemEnumO(row, "OBJECT_OT_modifier_apply", UI_translate_do_iface(N_("Apply")), 0, "apply_as", MODIFIER_APPLY_DATA); + uiItemEnumO(row, "OBJECT_OT_modifier_apply", IFACE_("Apply"), 0, "apply_as", MODIFIER_APPLY_DATA); if (modifier_sameTopology(md)) - uiItemEnumO(row, "OBJECT_OT_modifier_apply", UI_translate_do_iface(N_("Apply as Shape")), 0, "apply_as", MODIFIER_APPLY_SHAPE); + uiItemEnumO(row, "OBJECT_OT_modifier_apply", IFACE_("Apply as Shape"), 0, "apply_as", MODIFIER_APPLY_SHAPE); } uiBlockClearButLock(block); uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE); if (!ELEM5(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth, eModifierType_Smoke)) - uiItemO(row, UI_translate_do_tooltip(N_("Copy")), ICON_NONE, "OBJECT_OT_modifier_copy"); + uiItemO(row, TIP_("Copy"), ICON_NONE, "OBJECT_OT_modifier_copy"); } /* result is the layout block inside the box, that we return so that modifier settings can be drawn */ @@ -1020,8 +1020,8 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) uiBlockSetEmboss(block, UI_EMBOSSN); /* draw a ghost icon (for proxy) and also a lock beside it, to show that constraint is "proxy locked" */ - uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_GHOST, xco+244, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Proxy Protected"))); - uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_LOCKED, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Proxy Protected"))); + uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_GHOST, xco+244, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Proxy Protected")); + uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_LOCKED, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Proxy Protected")); uiBlockSetEmboss(block, UI_EMBOSS); } @@ -1207,14 +1207,14 @@ void uiTemplatePreview(uiLayout *layout, ID *id, int show_buttons, ID *parent, M RNA_pointer_create(id, &RNA_Texture, tex, &texture_ptr); uiLayoutRow(layout, 1); - uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Texture")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_TEXTURE, 0, 0, ""); + uiDefButS(block, ROW, B_MATPRV, IFACE_("Texture"), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_TEXTURE, 0, 0, ""); if(GS(parent->name) == ID_MA) - uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Material")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); + uiDefButS(block, ROW, B_MATPRV, IFACE_("Material"), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); else if(GS(parent->name) == ID_LA) - uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Lamp")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); + uiDefButS(block, ROW, B_MATPRV, IFACE_("Lamp"), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); else if(GS(parent->name) == ID_WO) - uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("World")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); - uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Both")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_BOTH, 0, 0, ""); + uiDefButS(block, ROW, B_MATPRV, IFACE_("World"), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); + uiDefButS(block, ROW, B_MATPRV, IFACE_("Both"), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_BOTH, 0, 0, ""); /* Alpha buton for texture preview */ if(*pr_texture!=TEX_PR_OTHER) { @@ -1305,23 +1305,23 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand if(coba==NULL) return; - bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Add")), 0+xoffs,line1_y,40,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Add a new color stop to the colorband"))); + bt= uiDefBut(block, BUT, 0, IFACE_("Add"), 0+xoffs,line1_y,40,UI_UNIT_Y, NULL, 0, 0, 0, 0, + TIP_("Add a new color stop to the colorband")); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Delete")), 45+xoffs,line1_y,45,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Delete the active position"))); + bt= uiDefBut(block, BUT, 0, IFACE_("Delete"), 45+xoffs,line1_y,45,UI_UNIT_Y, NULL, 0, 0, 0, 0, + TIP_("Delete the active position")); uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba); /* XXX, todo for later - convert to operator - campbell */ - bt= uiDefBut(block, BUT, 0, "F", 95+xoffs,line1_y,20,UI_UNIT_Y, NULL, 0, 0, 0, 0, UI_translate_do_tooltip(N_("Flip colorband"))); + bt= uiDefBut(block, BUT, 0, "F", 95+xoffs,line1_y,20,UI_UNIT_Y, NULL, 0, 0, 0, 0, TIP_("Flip colorband")); uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); - uiDefButS(block, NUM, 0, "", 120+xoffs,line1_y,80, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, UI_translate_do_tooltip(N_("Choose active color stop"))); + uiDefButS(block, NUM, 0, "", 120+xoffs,line1_y,80, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, TIP_("Choose active color stop")); - bt= uiDefButS(block, MENU, 0, UI_translate_do_iface(N_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4")), - 210+xoffs, line1_y, 90, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, UI_translate_do_tooltip(N_("Set interpolation between color stops"))); + bt= uiDefButS(block, MENU, 0, IFACE_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4"), + 210+xoffs, line1_y, 90, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, TIP_("Set interpolation between color stops")); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); uiBlockEndAlign(block); @@ -1350,13 +1350,13 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand float xs= butr->xmin; uiBlockBeginAlign(block); - bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Add")), xs,butr->ymin+UI_UNIT_Y,2.0f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Add a new color stop to the colorband"))); + bt= uiDefBut(block, BUT, 0, IFACE_("Add"), xs,butr->ymin+UI_UNIT_Y,2.0f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, + TIP_("Add a new color stop to the colorband")); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Delete")), xs+2.0f*unit,butr->ymin+UI_UNIT_Y,1.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, - UI_translate_do_tooltip(N_("Delete the active position"))); + bt= uiDefBut(block, BUT, 0, IFACE_("Delete"), xs+2.0f*unit,butr->ymin+UI_UNIT_Y,1.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, + TIP_("Delete the active position")); uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, "F", xs+3.5f*unit,butr->ymin+UI_UNIT_Y,0.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, UI_translate_do_tooltip(N_("Flip the color ramp"))); + bt= uiDefBut(block, BUT, 0, "F", xs+3.5f*unit,butr->ymin+UI_UNIT_Y,0.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, TIP_("Flip the color ramp")); uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); uiBlockEndAlign(block); @@ -1367,9 +1367,9 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand uiItemR(layout, &ptr, "color", 0, "", ICON_NONE); } - bt= uiDefButS(block, MENU, 0, UI_translate_do_tooltip(N_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4")), + bt= uiDefButS(block, MENU, 0, TIP_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4"), xs+10.0f*unit, butr->ymin+UI_UNIT_Y, unit*4, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, - UI_translate_do_tooltip(N_("Set interpolation between color stops"))); + TIP_("Set interpolation between color stops")); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); bt= uiDefBut(block, BUT_COLORBAND, 0, "", xs,butr->ymin,butr->xmax-butr->xmin,UI_UNIT_Y, coba, 0, 0, 0, 0, ""); @@ -1620,10 +1620,10 @@ static uiBlock *curvemap_clipping_func(bContext *C, struct ARegion *ar, void *cu uiButSetFunc(bt, curvemap_buttons_setclip, cumap, NULL); uiBlockBeginAlign(block); - uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Min X ")), 0,4*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmin, -100.0, cumap->clipr.xmax, 10, 0, ""); - uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Min Y ")), 0,3*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymin, -100.0, cumap->clipr.ymax, 10, 0, ""); - uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Max X ")), 0,2*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmax, cumap->clipr.xmin, 100.0, 10, 0, ""); - uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Max Y ")), 0,UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymax, cumap->clipr.ymin, 100.0, 10, 0, ""); + uiDefButF(block, NUM, 0, IFACE_("Min X "), 0,4*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmin, -100.0, cumap->clipr.xmax, 10, 0, ""); + uiDefButF(block, NUM, 0, IFACE_("Min Y "), 0,3*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymin, -100.0, cumap->clipr.ymax, 10, 0, ""); + uiDefButF(block, NUM, 0, IFACE_("Max X "), 0,2*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmax, cumap->clipr.xmin, 100.0, 10, 0, ""); + uiDefButF(block, NUM, 0, IFACE_("Max Y "), 0,UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymax, cumap->clipr.ymin, 100.0, 10, 0, ""); uiBlockSetDirection(block, UI_RIGHT); @@ -1672,12 +1672,12 @@ static uiBlock *curvemap_tools_func(bContext *C, struct ARegion *ar, void *cumap block= uiBeginBlock(C, ar, "curvemap_tools_func", UI_EMBOSS); uiBlockSetButmFunc(block, curvemap_tools_dofunc, cumap_v); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset View")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Vector Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Auto Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Extend Horizontal")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 4, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Extend Extrapolated")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 5, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset Curve")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Reset View"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Vector Handle"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Auto Handle"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Extend Horizontal"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 4, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Extend Extrapolated"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 5, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Reset Curve"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 50); @@ -1694,10 +1694,10 @@ static uiBlock *curvemap_brush_tools_func(bContext *C, struct ARegion *ar, void block= uiBeginBlock(C, ar, "curvemap_tools_func", UI_EMBOSS); uiBlockSetButmFunc(block, curvemap_tools_dofunc, cumap_v); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset View")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Vector Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Auto Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset Curve")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Reset View"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Vector Handle"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Auto Handle"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, IFACE_("Reset Curve"), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 50); @@ -1814,24 +1814,24 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMIN, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Zoom in"))); + bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMIN, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Zoom in")); uiButSetFunc(bt, curvemap_buttons_zoom_in, cumap, NULL); - bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMOUT, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Zoom out"))); + bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMOUT, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Zoom out")); uiButSetFunc(bt, curvemap_buttons_zoom_out, cumap, NULL); if(brush) - bt= uiDefIconBlockBut(block, curvemap_brush_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Tools"))); + bt= uiDefIconBlockBut(block, curvemap_brush_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, TIP_("Tools")); else - bt= uiDefIconBlockBut(block, curvemap_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Tools"))); + bt= uiDefIconBlockBut(block, curvemap_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, TIP_("Tools")); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); if(cumap->flag & CUMA_DO_CLIP) icon= ICON_CLIPUV_HLT; else icon= ICON_CLIPUV_DEHLT; - bt= uiDefIconBlockBut(block, curvemap_clipping_func, cumap, 0, icon, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Clipping Options"))); + bt= uiDefIconBlockBut(block, curvemap_clipping_func, cumap, 0, icon, 0, 0, dx, dx, TIP_("Clipping Options")); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); - bt= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Delete points"))); + bt= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Delete points")); uiButSetNFunc(bt, curvemap_buttons_delete, MEM_dupallocN(cb), cumap); uiBlockSetEmboss(block, UI_EMBOSS); @@ -1850,8 +1850,8 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe uiItemR(uiLayoutColumn(split, 0), ptr, "white_level", UI_ITEM_R_EXPAND, NULL, ICON_NONE); uiLayoutRow(layout, 0); - bt=uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Reset")), 0, 0, UI_UNIT_X*10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, - UI_translate_do_tooltip(N_("Reset Black/White point and curves"))); + bt=uiDefBut(block, BUT, 0, IFACE_("Reset"), 0, 0, UI_UNIT_X*10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, + TIP_("Reset Black/White point and curves")); uiButSetNFunc(bt, curvemap_buttons_reset, MEM_dupallocN(cb), cumap); } @@ -2470,18 +2470,18 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C) (void)ui_abs; // UNUSED uiDefIconBut(block, BUT, handle_event, ICON_PANEL_CLOSE, - 0, UI_UNIT_Y*0.1, UI_UNIT_X*0.8, UI_UNIT_Y*0.8, NULL, 0.0f, 0.0f, 0, 0, UI_translate_do_tooltip(N_("Stop this job"))); + 0, UI_UNIT_Y*0.1, UI_UNIT_X*0.8, UI_UNIT_Y*0.8, NULL, 0.0f, 0.0f, 0, 0, TIP_("Stop this job")); uiDefBut(block, PROGRESSBAR, 0, WM_jobs_name(wm, owner), - UI_UNIT_X, 0, 100, UI_UNIT_Y, NULL, 0.0f, 0.0f, WM_jobs_progress(wm, owner), 0, UI_translate_do_tooltip(N_("Progress"))); + UI_UNIT_X, 0, 100, UI_UNIT_Y, NULL, 0.0f, 0.0f, WM_jobs_progress(wm, owner), 0, TIP_("Progress")); uiLayoutRow(layout, 0); } if(WM_jobs_test(wm, screen)) - uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_CANCEL, UI_translate_do_iface(N_("Capture")), 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, - UI_translate_do_tooltip(N_("Stop screencast"))); + uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_CANCEL, IFACE_("Capture"), 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, + TIP_("Stop screencast")); if(screen->animtimer) - uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_CANCEL, UI_translate_do_tooltip(N_("Anim Player")), 0,0,100,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, - UI_translate_do_tooltip(N_("Stop animation playback"))); + uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_CANCEL, TIP_("Anim Player"), 0,0,100,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, + TIP_("Stop animation playback")); } /************************* Reports for Last Operator Template **************************/ @@ -2543,7 +2543,7 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C) uiBlockSetEmboss(block, UI_EMBOSSN); if (reports->list.first != reports->list.last) - uiDefIconButO(block, BUT, "UI_OT_reports_to_textblock", WM_OP_INVOKE_REGION_WIN, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, UI_translate_do_tooltip(N_("Click to see rest of reports in textblock: 'Recent Reports'"))); + uiDefIconButO(block, BUT, "UI_OT_reports_to_textblock", WM_OP_INVOKE_REGION_WIN, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, TIP_("Click to see rest of reports in textblock: 'Recent Reports'")); else uiDefIconBut(block, LABEL, 0, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index 206ecbad1d0..23d5e77b78d 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -117,7 +117,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind } case PROP_COLLECTION: { char text[256]; - BLI_snprintf(text, sizeof(text), UI_translate_do_iface(N_("%d items")), RNA_property_collection_length(ptr, prop)); + BLI_snprintf(text, sizeof(text), IFACE_("%d items"), RNA_property_collection_length(ptr, prop)); but= uiDefBut(block, LABEL, 0, text, x1, y1, x2, y2, NULL, 0, 0, 0, 0, NULL); uiButSetFlag(but, UI_BUT_DISABLED); break; diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 28f486117b7..2b007f55706 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1388,7 +1388,7 @@ static const char *editortype_pup(void) "|Python Console %x18" ); - return UI_translate_do_iface(types); + return IFACE_(types); } static void spacefunc(struct bContext *C, void *UNUSED(arg1), void *UNUSED(arg2)) @@ -1410,7 +1410,7 @@ int ED_area_header_switchbutton(const bContext *C, uiBlock *block, int yco) but= uiDefIconTextButC(block, ICONTEXTROW, 0, ICON_VIEW3D, editortype_pup(), xco, yco, UI_UNIT_X+10, UI_UNIT_Y, &(sa->butspacetype), 1.0, SPACEICONMAX, 0, 0, - UI_translate_do_tooltip(N_("Displays current editor type. Click for menu of available types"))); + TIP_("Displays current editor type. Click for menu of available types")); uiButSetFunc(but, spacefunc, NULL, NULL); uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */ diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c index b18b5373240..dfbb2a543cb 100644 --- a/source/blender/editors/space_buttons/buttons_header.c +++ b/source/blender/editors/space_buttons/buttons_header.c @@ -125,7 +125,7 @@ void buttons_header_buttons(const bContext *C, ARegion *ar) #define BUTTON_HEADER_CTX(_ctx, _icon, _tip) \ if(sbuts->pathflag & (1<<_ctx)) { \ - but= uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco+=BUT_UNIT_X, yco, BUT_UNIT_X, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, UI_translate_do_tooltip(_tip)); \ + but= uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco+=BUT_UNIT_X, yco, BUT_UNIT_X, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, TIP_(_tip)); \ uiButClearFlag(but, UI_BUT_UNDO); \ } \ diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 85edcce35ca..6fbfa11d0cf 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -182,7 +182,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) but = uiDefButTextO(block, TEX, "FILE_OT_directory", 0, "", min_x, line1_y, line1_w-chan_offs, btn_h, params->dir, 0.0, (float)FILE_MAX, 0, 0, - UI_translate_do_tooltip(N_("File path"))); + TIP_("File path")); uiButSetCompleteFunc(but, autocomplete_directory, NULL); uiButSetFlag(but, UI_BUT_NO_UTF8); @@ -190,7 +190,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) but = uiDefBut(block, TEX, B_FS_FILENAME, "", min_x, line2_y, line2_w-chan_offs, btn_h, params->file, 0.0, (float)FILE_MAXFILE, 0, 0, - UI_translate_do_tooltip(overwrite_alert ?N_("File name, overwrite existing") : N_("File name"))); + TIP_(overwrite_alert ?N_("File name, overwrite existing") : N_("File name"))); uiButSetCompleteFunc(but, autocomplete_file, NULL); uiButSetFlag(but, UI_BUT_NO_UTF8); @@ -208,15 +208,15 @@ void file_draw_buttons(const bContext *C, ARegion *ar) if (fnumbuttons && (params->flag & FILE_DIRSEL_ONLY) == 0) { uiBlockBeginAlign(block); but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMOUT, - min_x + line2_w + separator - chan_offs, line2_y, - btn_fn_w, btn_h, - UI_translate_do_tooltip(N_("Decrement the filename number"))); + min_x + line2_w + separator - chan_offs, line2_y, + btn_fn_w, btn_h, + TIP_("Decrement the filename number")); RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", -1); - but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN, - min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y, - btn_fn_w, btn_h, - UI_translate_do_tooltip(N_("Increment the filename number"))); + but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN, + min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y, + btn_fn_w, btn_h, + TIP_("Increment the filename number")); RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", 1); uiBlockEndAlign(block); } @@ -227,9 +227,9 @@ void file_draw_buttons(const bContext *C, ARegion *ar) uiDefButO(block, BUT, "FILE_OT_execute", WM_OP_EXEC_REGION_WIN, params->title, max_x - loadbutton, line1_y, loadbutton, btn_h, params->title); - uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, UI_translate_do_iface(N_("Cancel")), + uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, IFACE_("Cancel"), max_x - loadbutton, line2_y, loadbutton, btn_h, - UI_translate_do_tooltip(N_("Cancel"))); + TIP_("Cancel")); } uiEndBlock(C, block); diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index 37dce293d77..fae10c0d84e 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -146,7 +146,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa) if(sfile) { row= uiLayoutRow(pa->layout, 0); - uiItemO(row, UI_translate_do_iface(N_("Add")), ICON_ZOOMIN, "file.bookmark_add"); + uiItemO(row, IFACE_("Add"), ICON_ZOOMIN, "file.bookmark_add"); uiItemL(row, NULL, ICON_NONE); file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0); diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index f1593105d5b..51a24044deb 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -754,8 +754,8 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa) block= uiLayoutGetBlock(row); // XXX for now, this will be a operator button which calls a 'add modifier' operator - uiDefButO(block, BUT, "GRAPH_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, UI_translate_do_iface(N_("Add Modifier")), 10, 0, 150, 20, - UI_translate_do_tooltip(N_("Adds a new F-Curve Modifier for the active F-Curve"))); + uiDefButO(block, BUT, "GRAPH_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, IFACE_("Add Modifier"), 10, 0, 150, 20, + TIP_("Adds a new F-Curve Modifier for the active F-Curve")); /* copy/paste (as sub-row)*/ row= uiLayoutRow(row, 1); diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index 9157df6960f..bafcf36e646 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -280,7 +280,7 @@ static void recent_files_menu_draw(const bContext *UNUSED(C), Menu *menu) uiItemStringO(layout, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath); } } else { - uiItemL(layout, UI_translate_do_iface(N_("No Recent Files")), ICON_NONE); + uiItemL(layout, IFACE_("No Recent Files"), ICON_NONE); } } @@ -290,7 +290,7 @@ static void recent_files_menu_register(void) mt= MEM_callocN(sizeof(MenuType), "spacetype info menu recent files"); strcpy(mt->idname, "INFO_MT_file_open_recent"); - strcpy(mt->label, _("Open Recent...")); + strcpy(mt->label, N_("Open Recent...")); mt->draw= recent_files_menu_draw; WM_menutype_add(mt); } diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 5e1f2745559..7ba33e7e57e 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -448,8 +448,8 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa) // XXX for now, this will be a operator button which calls a temporary 'add modifier' operator // FIXME: we need to set the only-active property so that this will only add modifiers for the active strip (not all selected) - uiDefButO(block, BUT, "NLA_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, UI_translate_do_iface(N_("Add Modifier")), 10, 0, 150, 20, - UI_translate_do_tooltip(N_("Adds a new F-Modifier for the active NLA Strip"))); + uiDefButO(block, BUT, "NLA_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, IFACE_("Add Modifier"), 10, 0, 150, 20, + TIP_("Adds a new F-Modifier for the active NLA Strip")); /* copy/paste (as sub-row)*/ row= uiLayoutRow(row, 1); diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c index 205dd6bb639..b64685e3984 100644 --- a/source/blender/editors/space_node/node_header.c +++ b/source/blender/editors/space_node/node_header.c @@ -218,7 +218,6 @@ static void node_add_menu(bContext *C, uiLayout *layout, void *arg_nodeclass) } } -#define IFACE_(msgid) UI_translate_do_iface(msgid) static void node_menu_add(const bContext *C, Menu *menu) { SpaceNode *snode= CTX_wm_space_node(C); @@ -228,40 +227,39 @@ static void node_menu_add(const bContext *C, Menu *menu) uiLayoutSetActive(layout, 0); if(snode->treetype==NTREE_SHADER) { - uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_(N_("Vector")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); - uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - uiItemMenuF(layout, IFACE_(N_("Dynamic")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC)); - uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); + uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); + uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); + uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); + uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); + uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); + uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); + uiItemMenuF(layout, IFACE_("Dynamic"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC)); + uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); } else if(snode->treetype==NTREE_COMPOSIT) { - uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_(N_("Vector")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); - uiItemMenuF(layout, IFACE_(N_("Filter")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER)); - uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_(N_("Matte")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE)); - uiItemMenuF(layout, IFACE_(N_("Distort")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); - uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); + uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); + uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); + uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); + uiItemMenuF(layout, IFACE_("Vector"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR)); + uiItemMenuF(layout, IFACE_("Filter"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER)); + uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); + uiItemMenuF(layout, IFACE_("Matte"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE)); + uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); + uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); + uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); } else if(snode->treetype==NTREE_TEXTURE) { - uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); - uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); - uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); - uiItemMenuF(layout, IFACE_(N_("Patterns")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN)); - uiItemMenuF(layout, IFACE_(N_("Textures")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE)); - uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); - uiItemMenuF(layout, IFACE_(N_("Distort")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); - uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); - uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); + uiItemMenuF(layout, IFACE_("Input"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT)); + uiItemMenuF(layout, IFACE_("Output"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT)); + uiItemMenuF(layout, IFACE_("Color"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR)); + uiItemMenuF(layout, IFACE_("Patterns"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN)); + uiItemMenuF(layout, IFACE_("Textures"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE)); + uiItemMenuF(layout, IFACE_("Convertor"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR)); + uiItemMenuF(layout, IFACE_("Distort"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT)); + uiItemMenuF(layout, IFACE_("Group"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP)); + uiItemMenuF(layout, IFACE_("Layout"), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT)); } } -#undef IFACE_ void node_menus_register(void) { diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index fd27dc65a0e..55f49654f32 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -275,22 +275,16 @@ static int modeselect_addmode(char *str, const char *title, int id, int icon) { static char formatstr[] = "|%s %%x%d %%i%d"; - if(UI_translate_iface()) - return sprintf(str, formatstr, BLF_gettext(title), id, icon); - else - return sprintf(str, formatstr, title, id, icon); + return sprintf(str, formatstr, IFACE_(title), id, icon); } static char *view3d_modeselect_pup(Scene *scene) { Object *ob= OBACT; static char string[256]; - const char *title= N_("Mode: %t"); + const char *title= IFACE_("Mode: %t"); char *str = string; - if(U.transopts&USER_TR_IFACE) - title= BLF_gettext(title); - BLI_strncpy(str, title, sizeof(string)); str += modeselect_addmode(str, N_("Object Mode"), OB_MODE_OBJECT, ICON_OBJECT_DATA); @@ -470,7 +464,6 @@ void uiTemplateEditModeSelection(uiLayout *layout, struct bContext *C) } } -#define TIP_(msgid) UI_translate_do_tooltip(msgid) void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) { bScreen *screen= CTX_wm_screen(C); @@ -504,7 +497,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlockBeginAlign(block); uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) , - 0,0,126 * dpi_fac, UI_UNIT_Y, &(v3d->modeselect), 0, 0, 0, 0, TIP_(N_("Mode"))); + 0,0,126 * dpi_fac, UI_UNIT_Y, &(v3d->modeselect), 0, 0, 0, 0, TIP_("Mode")); uiBlockEndAlign(block); /* Draw type */ @@ -543,11 +536,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) block= uiLayoutGetBlock(row); if(v3d->twflag & V3D_USE_MANIPULATOR) { - but= uiDefIconButBitC(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Translate manipulator mode"))); + but= uiDefIconButBitC(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_("Translate manipulator mode")); uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */ - but= uiDefIconButBitC(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Rotate manipulator mode"))); + but= uiDefIconButBitC(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_("Rotate manipulator mode")); uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */ - but= uiDefIconButBitC(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Scale manipulator mode"))); + but= uiDefIconButBitC(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_("Scale manipulator mode")); uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */ } @@ -555,8 +548,8 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) v3d->twmode = 0; } - str_menu = BIF_menustringTransformOrientation(C, N_("Orientation")); - but= uiDefButC(block, MENU, B_MAN_MODE, str_menu,0,0,70 * dpi_fac, UI_UNIT_Y, &v3d->twmode, 0, 0, 0, 0, TIP_(N_("Transform Orientation"))); + str_menu = BIF_menustringTransformOrientation(C, "Orientation"); + but= uiDefButC(block, MENU, B_MAN_MODE, str_menu,0,0,70 * dpi_fac, UI_UNIT_Y, &v3d->twmode, 0, 0, 0, 0, TIP_("Transform Orientation")); uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */ MEM_freeN((void *)str_menu); } @@ -576,4 +569,3 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiTemplateEditModeSelection(layout, C); } -#undef TIP_ diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index ddea89e1cdb..58058722a82 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -82,7 +82,7 @@ static void view3d_panel_operator_redo_header(const bContext *C, Panel *pa) wmOperator *op= WM_operator_last_redo(C); if(op) BLI_strncpy(pa->drawname, op->type->name, sizeof(pa->drawname)); - else BLI_strncpy(pa->drawname, N_("Operator"), sizeof(pa->drawname)); + else BLI_strncpy(pa->drawname, IFACE_("Operator"), sizeof(pa->drawname)); } static void view3d_panel_operator_redo_operator(const bContext *C, Panel *pa, wmOperator *op) diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index cd4cbc77c49..3a7fad24d6b 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -410,18 +410,15 @@ EnumPropertyItem *BIF_enumTransformOrientation(bContext *C) } const char * BIF_menustringTransformOrientation(const bContext *C, const char *title) { - const char* menu = N_("%t|Global%x0|Local%x1|Gimbal%x4|Normal%x2|View%x3"); + const char* menu = IFACE_("%t|Global%x0|Local%x1|Gimbal%x4|Normal%x2|View%x3"); ListBase *transform_spaces = &CTX_data_scene(C)->transform_spaces; TransformOrientation *ts; int i = V3D_MANIP_CUSTOM; char *str_menu, *p; - if(UI_translate_iface()) { - title= BLF_gettext(title); - menu= BLF_gettext(menu); - } - - str_menu = MEM_callocN(strlen(menu) + strlen(title) + 1 + 40 * BIF_countTransformOrientation(C), UI_translate_do_tooltip(N_("UserTransSpace from matrix"))); + title = IFACE_(title); + + str_menu = MEM_callocN(strlen(menu) + strlen(title) + 1 + 40 * BIF_countTransformOrientation(C), TIP_("UserTransSpace from matrix")); p = str_menu; p += sprintf(str_menu, "%s", title); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 0c3ff108c03..d579d00f6ce 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2512,36 +2512,36 @@ static void rna_def_userdef_system(BlenderRNA *brna) /* if you edit here, please also edit the source/blender/blenfont/intern/blf_lang.c 's locales */ static EnumPropertyItem language_items[] = { {0, "", 0, "Nearly done", ""}, - {0, "DEFAULT", 0, N_("Default (Default)"), ""}, - {1, "ENGLISH", 0, N_("English (English)"), "en_US"}, - {8, "FRENCH", 0, N_("French (Français)"), "fr_FR"}, - {9, "SPANISH", 0, N_("Spanish (Español)"), "es_ES"}, - {13, "SIMPLIFIED_CHINESE", 0, N_("Simplified Chinese (简体中文)"), "zh_CN"}, + {0, "DEFAULT", 0, "Default (Default)", ""}, + {1, "ENGLISH", 0, "English (English)", "en_US"}, + {8, "FRENCH", 0, "French (Français)", "fr_FR"}, + {9, "SPANISH", 0, "Spanish (Español)", "es_ES"}, + {13, "SIMPLIFIED_CHINESE", 0, "Simplified Chinese (简体中文)", "zh_CN"}, {0, "", 0, "In progress", ""}, - {2, "JAPANESE", 0, N_("Japanese (日本語)"), "ja_JP"}, - {3, "DUTCH", 0, N_("Dutch (Nederlandse taal)"), "nl_NL"}, - {4, "ITALIAN", 0, N_("Italian (Italiano)"), "it_IT"}, - {5, "GERMAN", 0, N_("German (Deutsch)"), "de_DE"}, - {6, "FINNISH", 0, N_("Finnish (Suomi)"), "fi_FI"}, - {7, "SWEDISH", 0, N_("Swedish (Svenska)"), "sv_SE"}, - {10, "CATALAN", 0, N_("Catalan (Català)"), "ca_AD"}, - {11, "CZECH", 0, N_("Czech (Český)"), "cs_CZ"}, - {12, "BRAZILIAN_PORTUGUESE", 0, N_("Brazilian Portuguese (Português do Brasil)"), "pt_BR"}, - {14, "TRADITIONAL_CHINESE", 0, N_("Traditional Chinese (繁體中文)"), "zh_TW"}, - {15, "RUSSIAN", 0, N_("Russian (Русский)"), "ru_RU"}, - {16, "CROATIAN", 0, N_("Croatian (Hrvatski)"), "hr_HR"}, - {17, "SERBIAN", 0, N_("Serbian (Српском језику)"), "sr_RS"}, - {18, "UKRAINIAN", 0, N_("Ukrainian (Український)"), "uk_UA"}, - {19, "POLISH", 0, N_("Polish (Polski)"), "pl_PL"}, - {20, "ROMANIAN", 0, N_("Romanian (Român)"), "ro_RO"}, + {2, "JAPANESE", 0, "Japanese (日本語)", "ja_JP"}, + {3, "DUTCH", 0, "Dutch (Nederlandse taal)", "nl_NL"}, + {4, "ITALIAN", 0, "Italian (Italiano)", "it_IT"}, + {5, "GERMAN", 0, "German (Deutsch)", "de_DE"}, + {6, "FINNISH", 0, "Finnish (Suomi)", "fi_FI"}, + {7, "SWEDISH", 0, "Swedish (Svenska)", "sv_SE"}, + {10, "CATALAN", 0, "Catalan (Català)", "ca_AD"}, + {11, "CZECH", 0, "Czech (Český)", "cs_CZ"}, + {12, "BRAZILIAN_PORTUGUESE", 0, "Brazilian Portuguese (Português do Brasil)", "pt_BR"}, + {14, "TRADITIONAL_CHINESE", 0, "Traditional Chinese (繁體中文)", "zh_TW"}, + {15, "RUSSIAN", 0, "Russian (Русский)", "ru_RU"}, + {16, "CROATIAN", 0, "Croatian (Hrvatski)", "hr_HR"}, + {17, "SERBIAN", 0, "Serbian (Српском језику)", "sr_RS"}, + {18, "UKRAINIAN", 0, "Ukrainian (Український)", "uk_UA"}, + {19, "POLISH", 0, "Polish (Polski)", "pl_PL"}, + {20, "ROMANIAN", 0, "Romanian (Român)", "ro_RO"}, /* using the utf8 flipped form of Arabic (العربية) */ - {21, "ARABIC", 0, N_("Arabic (ﺔﻴﺑﺮﻌﻟﺍ)"), "ar_EG"}, - {22, "BULGARIAN", 0, N_("Bulgarian (Български)"), "bg_BG"}, - {23, "GREEK", 0, N_("Greek (Ελληνικά)"), "el_GR"}, - {24, "KOREAN", 0, N_("Korean (한국 언어)"), "ko_KR"}, - /*{25, "NEPALI", 0, N_("Nepali (नेपाली)"), "ne_NP"},*/ + {21, "ARABIC", 0, "Arabic (ﺔﻴﺑﺮﻌﻟﺍ)", "ar_EG"}, + {22, "BULGARIAN", 0, "Bulgarian (Български)", "bg_BG"}, + {23, "GREEK", 0, "Greek (Ελληνικά)", "el_GR"}, + {24, "KOREAN", 0, "Korean (한국 언어)", "ko_KR"}, + /*{25, "NEPALI", 0, "Nepali (नेपाली)", "ne_NP"},*/ /* using the utf8 flipped form of Persian (فارسی) */ - {26, "PERSIAN", 0, N_("Persian (ﯽﺳﺭﺎﻓ)"), "fa_PE"}, + {26, "PERSIAN", 0, "Persian (ﯽﺳﺭﺎﻓ)", "fa_PE"}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesSystem", NULL); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index e52df8f9320..a6306909699 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1534,7 +1534,7 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb param= _PyUnicode_AsString(value); #ifdef WITH_INTERNATIONAL if (subtype == PROP_TRANSLATE) { - param= UI_translate_do_iface(param); + param= IFACE_(param); } #endif // WITH_INTERNATIONAL diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index bf5b60d691f..9b2d7026a46 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -437,17 +437,17 @@ void WM_read_file(bContext *C, const char *filepath, ReportList *reports) else if(retval == BKE_READ_EXOTIC_OK_OTHER) BKE_write_undo(C, "Import file"); else if(retval == BKE_READ_EXOTIC_FAIL_OPEN) { - BKE_reportf(reports, RPT_ERROR, UI_translate_do_iface(N_("Can't read file: \"%s\", %s.")), filepath, - errno ? strerror(errno) : UI_translate_do_iface(N_("Unable to open the file"))); + BKE_reportf(reports, RPT_ERROR, IFACE_("Can't read file: \"%s\", %s."), filepath, + errno ? strerror(errno) : IFACE_("Unable to open the file")); } else if(retval == BKE_READ_EXOTIC_FAIL_FORMAT) { - BKE_reportf(reports, RPT_ERROR, UI_translate_do_iface(N_("File format is not supported in file: \"%s\".")), filepath); + BKE_reportf(reports, RPT_ERROR, IFACE_("File format is not supported in file: \"%s\"."), filepath); } else if(retval == BKE_READ_EXOTIC_FAIL_PATH) { - BKE_reportf(reports, RPT_ERROR, UI_translate_do_iface(N_("File path invalid: \"%s\".")), filepath); + BKE_reportf(reports, RPT_ERROR, IFACE_("File path invalid: \"%s\"."), filepath); } else { - BKE_reportf(reports, RPT_ERROR, UI_translate_do_iface(N_("Unknown error loading: \"%s\".")), filepath); + BKE_reportf(reports, RPT_ERROR, IFACE_("Unknown error loading: \"%s\"."), filepath); BLI_assert(!"invalid 'retval'"); } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 1face062e7e..7a8d69e58a5 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -156,10 +156,10 @@ void WM_operatortype_append(void (*opfunc)(wmOperatorType*)) if(ot->name==NULL) { fprintf(stderr, "ERROR: Operator %s has no name property!\n", ot->idname); - ot->name= UI_translate_do_iface(N_("Dummy Name")); + ot->name= IFACE_("Dummy Name"); } - RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:UI_translate_do_iface(N_("(undocumented operator)"))); // XXX All ops should have a description but for now allow them not to. + RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:IFACE_("(undocumented operator)")); // XXX All ops should have a description but for now allow them not to. RNA_def_struct_identifier(ot->srna, ot->idname); BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); @@ -172,7 +172,7 @@ void WM_operatortype_append_ptr(void (*opfunc)(wmOperatorType*, void*), void *us ot= MEM_callocN(sizeof(wmOperatorType), "operatortype"); ot->srna= RNA_def_struct(&BLENDER_RNA, "", "OperatorProperties"); opfunc(ot, userdata); - RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:UI_translate_do_iface(N_("(undocumented operator)"))); + RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:IFACE_("(undocumented operator)")); RNA_def_struct_identifier(ot->srna, ot->idname); BLI_ghash_insert(global_ops_hash, (void *)ot->idname, ot); @@ -366,7 +366,7 @@ wmOperatorType *WM_operatortype_append_macro(const char *idname, const char *nam ot->poll= NULL; if(!ot->description) - ot->description= UI_translate_do_iface(N_("(undocumented operator)")); + ot->description= IFACE_("(undocumented operator)"); RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); // XXX All ops should have a description but for now allow them not to. RNA_def_struct_identifier(ot->srna, ot->idname); @@ -391,7 +391,7 @@ void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), vo ot->poll= NULL; if(!ot->description) - ot->description= UI_translate_do_iface(N_("(undocumented operator)")); + ot->description= IFACE_("(undocumented operator)"); opfunc(ot, userdata); @@ -788,7 +788,7 @@ int WM_operator_confirm_message(bContext *C, wmOperator *op, const char *message else properties= NULL; - pup= uiPupMenuBegin(C, UI_translate_do_iface(N_("OK?")), ICON_QUESTION); + pup= uiPupMenuBegin(C, IFACE_("OK?"), ICON_QUESTION); layout= uiPupMenuLayout(pup); uiItemFullO(layout, op->type->idname, message, ICON_NONE, properties, WM_OP_EXEC_REGION_WIN, 0); uiPupMenuEnd(C, pup); @@ -870,10 +870,10 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, void WM_operator_properties_select_all(wmOperatorType *ot) { static EnumPropertyItem select_all_actions[] = { - {SEL_TOGGLE, "TOGGLE", 0, N_("Toggle"), "Toggle selection for all elements"}, - {SEL_SELECT, "SELECT", 0, N_("Select"), "Select all elements"}, - {SEL_DESELECT, "DESELECT", 0, N_("Deselect"), "Deselect all elements"}, - {SEL_INVERT, "INVERT", 0, N_("Invert"), "Invert selection of all elements"}, + {SEL_TOGGLE, "TOGGLE", 0, "Toggle", "Toggle selection for all elements"}, + {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, + {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, + {SEL_INVERT, "INVERT", 0, "Invert", "Invert selection of all elements"}, {0, NULL, 0, NULL, NULL} }; @@ -882,25 +882,25 @@ void WM_operator_properties_select_all(wmOperatorType *ot) void WM_operator_properties_gesture_border(wmOperatorType *ot, int extend) { - RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, N_("Gesture Mode"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, N_("X Min"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, N_("X Max"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, N_("Y Min"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, N_("Y Max"), "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); if(extend) - RNA_def_boolean(ot->srna, "extend", 1, _("Extend"), _("Extend selection instead of deselecting everything first")); + RNA_def_boolean(ot->srna, "extend", 1, "Extend", "Extend selection instead of deselecting everything first"); } void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor) { - RNA_def_int(ot->srna, "xstart", 0, INT_MIN, INT_MAX, N_("X Start"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "xend", 0, INT_MIN, INT_MAX, N_("X End"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "ystart", 0, INT_MIN, INT_MAX, N_("Y Start"), "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "yend", 0, INT_MIN, INT_MAX, N_("Y End"), "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "xstart", 0, INT_MIN, INT_MAX, "X Start", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "xend", 0, INT_MIN, INT_MAX, "X End", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "ystart", 0, INT_MIN, INT_MAX, "Y Start", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "yend", 0, INT_MIN, INT_MAX, "Y End", "", INT_MIN, INT_MAX); if(cursor) - RNA_def_int(ot->srna, "cursor", cursor, 0, INT_MAX, N_("Cursor"), N_("Mouse cursor style to use during the modal operator"), 0, INT_MAX); + RNA_def_int(ot->srna, "cursor", cursor, 0, INT_MAX, "Cursor", "Mouse cursor style to use during the modal operator", 0, INT_MAX); } @@ -1031,7 +1031,7 @@ static uiBlock *wm_block_dialog_create(bContext *C, ARegion *ar, void *userData) col= uiLayoutColumn(layout, FALSE); col_block= uiLayoutGetBlock(col); /* Create OK button, the callback of which will execute op */ - btn= uiDefBut(col_block, BUT, 0, UI_translate_do_iface(N_("OK")), 0, -30, 0, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + btn= uiDefBut(col_block, BUT, 0, IFACE_("OK"), 0, -30, 0, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); uiButSetFunc(btn, dialog_exec_cb, data, col_block); } @@ -1282,19 +1282,19 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); uiItemL(col, "Links", ICON_NONE); - uiItemStringO(col, UI_translate_do_iface(N_("Donations")), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment"); - uiItemStringO(col, UI_translate_do_iface(N_("Credits")), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/credits"); - uiItemStringO(col, UI_translate_do_iface(N_("Release Log")), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-260"); - uiItemStringO(col, UI_translate_do_iface(N_("Manual")), ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:2.5/Manual"); - uiItemStringO(col, UI_translate_do_iface(N_("Blender Website")), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org"); - uiItemStringO(col, UI_translate_do_iface(N_("User Community")), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/community/user-community"); + uiItemStringO(col, IFACE_("Donations"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment"); + uiItemStringO(col, IFACE_("Credits"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/credits"); + uiItemStringO(col, IFACE_("Release Log"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-260"); + uiItemStringO(col, IFACE_("Manual"), ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:2.5/Manual"); + uiItemStringO(col, IFACE_("Blender Website"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org"); + uiItemStringO(col, IFACE_("User Community"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/community/user-community"); if(strcmp(STRINGIFY(BLENDER_VERSION_CYCLE), "release")==0) { BLI_snprintf(url, sizeof(url), "http://www.blender.org/documentation/blender_python_api_%d_%d" STRINGIFY(BLENDER_VERSION_CHAR) "_release", BLENDER_VERSION/100, BLENDER_VERSION%100); } else { BLI_snprintf(url, sizeof(url), "http://www.blender.org/documentation/blender_python_api_%d_%d_%d", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION); } - uiItemStringO(col, UI_translate_do_iface(N_("Python API Reference")), ICON_URL, "WM_OT_url_open", "url", url); + uiItemStringO(col, IFACE_("Python API Reference"), ICON_URL, "WM_OT_url_open", "url", url); uiItemL(col, "", ICON_NONE); col = uiLayoutColumn(split, 0); @@ -1304,7 +1304,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar uiItemS(col); } - uiItemL(col, UI_translate_do_iface(N_("Recent")), ICON_NONE); + uiItemL(col, IFACE_("Recent"), ICON_NONE); for(recent = G.recent_files.first, i=0; (i<5) && (recent); recent = recent->next, i++) { uiItemStringO(col, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath); } @@ -3319,13 +3319,13 @@ static void redraw_timer_window_swap(bContext *C) } static EnumPropertyItem redraw_timer_type_items[] = { - {0, "DRAW", 0, N_("Draw Region"), N_("Draw Region")}, - {1, "DRAW_SWAP", 0, N_("Draw Region + Swap"), N_("Draw Region and Swap")}, - {2, "DRAW_WIN", 0, N_("Draw Window"), N_("Draw Window")}, - {3, "DRAW_WIN_SWAP", 0, N_("Draw Window + Swap"), N_("Draw Window and Swap")}, - {4, "ANIM_STEP", 0, N_("Anim Step"), N_("Animation Steps")}, - {5, "ANIM_PLAY", 0, N_("Anim Play"), N_("Animation Playback")}, - {6, "UNDO", 0, N_("Undo/Redo"), N_("Undo/Redo")}, + {0, "DRAW", 0, "Draw Region", "Draw Region"}, + {1, "DRAW_SWAP", 0, "Draw Region + Swap", "Draw Region and Swap"}, + {2, "DRAW_WIN", 0, "Draw Window", "Draw Window"}, + {3, "DRAW_WIN_SWAP", 0, "Draw Window + Swap", "Draw Window and Swap"}, + {4, "ANIM_STEP", 0, "Anim Step", "Animation Steps"}, + {5, "ANIM_PLAY", 0, "Anim Play", "Animation Playback"}, + {6, "UNDO", 0, "Undo/Redo", "Undo/Redo"}, {0, NULL, 0, NULL, NULL}}; static int redraw_timer_exec(bContext *C, wmOperator *op) @@ -3635,14 +3635,14 @@ void wm_operatortype_init(void) static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { - {GESTURE_MODAL_CANCEL, "CANCEL", 0, N_("Cancel"), ""}, - {GESTURE_MODAL_CONFIRM, "CONFIRM", 0, N_("Confirm"), ""}, - {GESTURE_MODAL_CIRCLE_ADD, "ADD", 0, N_("Add"), ""}, - {GESTURE_MODAL_CIRCLE_SUB, "SUBTRACT", 0, N_("Subtract"), ""}, + {GESTURE_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, + {GESTURE_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""}, + {GESTURE_MODAL_CIRCLE_ADD, "ADD", 0, "Add", ""}, + {GESTURE_MODAL_CIRCLE_SUB, "SUBTRACT", 0, "Subtract", ""}, - {GESTURE_MODAL_SELECT, "SELECT", 0, N_("Select"), ""}, - {GESTURE_MODAL_DESELECT,"DESELECT", 0, N_("DeSelect"), ""}, - {GESTURE_MODAL_NOP,"NOP", 0, N_("No Operation"), ""}, + {GESTURE_MODAL_SELECT, "SELECT", 0, "Select", ""}, + {GESTURE_MODAL_DESELECT,"DESELECT", 0, "DeSelect", ""}, + {GESTURE_MODAL_NOP,"NOP", 0, "No Operation", ""}, {0, NULL, 0, NULL, NULL}}; @@ -3688,9 +3688,9 @@ static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) static void gesture_straightline_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { - {GESTURE_MODAL_CANCEL, "CANCEL", 0, N_("Cancel"), ""}, - {GESTURE_MODAL_SELECT, "SELECT", 0, N_("Select"), ""}, - {GESTURE_MODAL_BEGIN, "BEGIN", 0, N_("Begin"), ""}, + {GESTURE_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, + {GESTURE_MODAL_SELECT, "SELECT", 0, "Select", ""}, + {GESTURE_MODAL_BEGIN, "BEGIN", 0, "Begin", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Straight Line"); @@ -3716,10 +3716,10 @@ static void gesture_straightline_modal_keymap(wmKeyConfig *keyconf) static void gesture_border_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { - {GESTURE_MODAL_CANCEL, "CANCEL", 0, N_("Cancel"), ""}, - {GESTURE_MODAL_SELECT, "SELECT", 0, N_("Select"), ""}, - {GESTURE_MODAL_DESELECT,"DESELECT", 0, N_("DeSelect"), ""}, - {GESTURE_MODAL_BEGIN, "BEGIN", 0, N_("Begin"), ""}, + {GESTURE_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, + {GESTURE_MODAL_SELECT, "SELECT", 0, "Select", ""}, + {GESTURE_MODAL_DESELECT,"DESELECT", 0, "DeSelect", ""}, + {GESTURE_MODAL_BEGIN, "BEGIN", 0, "Begin", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Border"); @@ -3771,10 +3771,10 @@ static void gesture_border_modal_keymap(wmKeyConfig *keyconf) static void gesture_zoom_border_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { - {GESTURE_MODAL_CANCEL, "CANCEL", 0, N_("Cancel"), ""}, - {GESTURE_MODAL_IN, "IN", 0, N_("In"), ""}, - {GESTURE_MODAL_OUT, "OUT", 0, N_("Out"), ""}, - {GESTURE_MODAL_BEGIN, "BEGIN", 0, N_("Begin"), ""}, + {GESTURE_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, + {GESTURE_MODAL_IN, "IN", 0, "In", ""}, + {GESTURE_MODAL_OUT, "OUT", 0, "Out", ""}, + {GESTURE_MODAL_BEGIN, "BEGIN", 0, "Begin", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Gesture Zoom Border"); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 405960d0795..38ff02b46c5 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -506,11 +506,11 @@ void WM_window_open_temp(bContext *C, rcti *position, int type) ED_screen_set(C, win->screen); if(sa->spacetype==SPACE_IMAGE) - GHOST_SetTitle(win->ghostwin, UI_translate_do_iface(N_("Blender Render"))); + GHOST_SetTitle(win->ghostwin, IFACE_("Blender Render")); else if(ELEM(sa->spacetype, SPACE_OUTLINER, SPACE_USERPREF)) - GHOST_SetTitle(win->ghostwin, UI_translate_do_iface(N_("Blender User Preferences"))); + GHOST_SetTitle(win->ghostwin, IFACE_("Blender User Preferences")); else if(sa->spacetype==SPACE_FILE) - GHOST_SetTitle(win->ghostwin, UI_translate_do_iface(N_("Blender File View"))); + GHOST_SetTitle(win->ghostwin, IFACE_("Blender File View")); else GHOST_SetTitle(win->ghostwin, "Blender"); } From 2e549e0241164baff7ba2d73aa05f4d865e20153 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 00:01:22 +0000 Subject: [PATCH 091/119] replace own unicode functions with versions from glib which support more unicode characters. added BLI_str_utf8_as_unicode(), BLI_str_utf8_from_unicode() --- source/blender/blenlib/BLI_string_utf8.h | 27 +- source/blender/blenlib/intern/string_utf8.c | 276 +++++++++++++------- 2 files changed, 203 insertions(+), 100 deletions(-) diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h index c3bb81dd03f..b53d9d3203b 100644 --- a/source/blender/blenlib/BLI_string_utf8.h +++ b/source/blender/blenlib/BLI_string_utf8.h @@ -33,20 +33,27 @@ extern "C" { #endif -char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy); -int BLI_utf8_invalid_byte(const char *str, int length); -int BLI_utf8_invalid_strip(char *str, int length); +char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy); +int BLI_utf8_invalid_byte(const char *str, int length); +int BLI_utf8_invalid_strip(char *str, int length); /* copied from glib */ -char *BLI_str_find_prev_char_utf8(const char *str, const char *p); -char *BLI_str_find_next_char_utf8(const char *p, const char *end); -char *BLI_str_prev_char_utf8(const char *p); +unsigned int BLI_str_utf8_as_unicode(const char *p); +unsigned int BLI_str_utf8_as_unicode_and_size(const char *p, size_t *index); +unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index); +size_t BLI_str_utf8_from_unicode(unsigned int c, char *outbuf); + +char *BLI_str_find_prev_char_utf8(const char *str, const char *p); +char *BLI_str_find_next_char_utf8(const char *p, const char *end); +char *BLI_str_prev_char_utf8(const char *p); /* wchar_t functions, copied from blenders own font.c originally */ -size_t BLI_wstrlen_utf8(const wchar_t *src); -size_t BLI_strlen_utf8(const char *strc); -size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy); -size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst, const char *src, const size_t maxcpy); +size_t BLI_wstrlen_utf8(const wchar_t *src); +size_t BLI_strlen_utf8(const char *strc); +size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy); +size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst, const char *src, const size_t maxcpy); + +#define BLI_STRING_MAX_UTF8 6 #ifdef __cplusplus } diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index f331d13e580..7dc2b2bcc52 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -34,7 +34,7 @@ #include #include -#include "BLI_string.h" +#include "BLI_string_utf8.h" /* from libswish3, originally called u8_isvalid(), * modified to return the index of the bad character (byte index not utf). @@ -189,45 +189,11 @@ char *BLI_strncpy_utf8(char *dst, const char *src, size_t maxncpy) /* --------------------------------------------------------------------------*/ /* wchar_t / utf8 functions */ -/* UTF-8 <-> wchar transformations */ -static size_t chtoutf8(const unsigned long c, char o[4]) -{ - // Variables and initialization -/* memset(o, 0, 4); */ - - // Create the utf-8 string - if (c < 0x80) { - o[0] = (char) c; - return 1; - } - else if (c < 0x800) { - o[0] = (0xC0 | (c>>6)); - o[1] = (0x80 | (c & 0x3f)); - return 2; - } - else if (c < 0x10000) { - o[0] = (0xe0 | (c >> 12)); - o[1] = (0x80 | (c >>6 & 0x3f)); - o[2] = (0x80 | (c & 0x3f)); - return 3; - } - else if (c < 0x200000) { - o[0] = (0xf0 | (c>>18)); - o[1] = (0x80 | (c >>12 & 0x3f)); - o[2] = (0x80 | (c >> 6 & 0x3f)); - o[3] = (0x80 | (c & 0x3f)); - return 4; - } - - /* should we assert here? */ - return 0; -} - size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy) { size_t len = 0; while(*src && len < maxcpy) { /* XXX can still run over the buffer because utf8 size isnt known :| */ - len += chtoutf8(*src++, dst+len); + len += BLI_str_utf8_from_unicode(*src++, dst+len); } dst[len]= '\0'; @@ -238,11 +204,10 @@ size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t max /* wchar len in utf8 */ size_t BLI_wstrlen_utf8(const wchar_t *src) { - char ch_dummy[4]; size_t len = 0; while(*src) { - len += chtoutf8(*src++, ch_dummy); + len += BLI_str_utf8_from_unicode(*src++, NULL); } return len; @@ -272,26 +237,6 @@ size_t BLI_strlen_utf8(const char *strc) return len; } - -/* Converts Unicode to wchar - -According to RFC 3629 "UTF-8, a transformation format of ISO 10646" -(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are: - - Char. number range | UTF-8 octet sequence - (hexadecimal) | (binary) - --------------------+--------------------------------------------- - 0000 0000-0000 007F | 0xxxxxxx - 0000 0080-0000 07FF | 110xxxxx 10xxxxxx - 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx - 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - -If the encoding incidated by the first character is incorrect (because the -1 to 3 following characters do not match 10xxxxxx), the output is a '?' and -only a single input character is consumed. - -*/ - size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size_t maxcpy) { int len=0; @@ -299,32 +244,16 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size if(dst_w==NULL || src_c==NULL) return(0); while(*src_c && len < maxcpy) { - if ((*src_c & 0xe0) == 0xc0) { - if((src_c[1] & 0x80) && (src_c[1] & 0x40) == 0x00) { - *dst_w=((src_c[0] &0x1f)<<6) | (src_c[1]&0x3f); - src_c++; - } else { - *dst_w = '?'; - } - } else if ((*src_c & 0xf0) == 0xe0) { - if((src_c[1] & src_c[2] & 0x80) && ((src_c[1] | src_c[2]) & 0x40) == 0x00) { - *dst_w=((src_c[0] & 0x0f)<<12) | ((src_c[1]&0x3f)<<6) | (src_c[2]&0x3f); - src_c += 2; - } else { - *dst_w = '?'; - } - } else if ((*src_c & 0xf8) == 0xf0) { - if((src_c[1] & src_c[2] & src_c[3] & 0x80) && ((src_c[1] | src_c[2] | src_c[3]) & 0x40) == 0x00) { - *dst_w=((src_c[0] & 0x07)<<18) | ((src_c[1]&0x1f)<<12) | ((src_c[2]&0x3f)<<6) | (src_c[3]&0x3f); - src_c += 3; - } else { - *dst_w = '?'; - } - } else { - *dst_w=(src_c[0] & 0x7f); + size_t step= 0; + unsigned int unicode= BLI_str_utf8_as_unicode_and_size(src_c, &step); + if (unicode != (unsigned int)-1) { + *dst_w= (wchar_t)unicode; + src_c += step; + } + else { + *dst_w = '?'; + src_c= BLI_str_find_next_char_utf8(src_c, NULL); } - - src_c++; dst_w++; len++; } @@ -334,13 +263,178 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size /* end wchar_t / utf8 functions */ /* --------------------------------------------------------------------------*/ - - - - /* copied from glib */ + +/* note, glib uses unsigned int for unicode, best we do the same, + * though we dont typedef it - campbell */ + +#define UTF8_COMPUTE(Char, Mask, Len) \ + if (Char < 128) { \ + Len = 1; \ + Mask = 0x7f; \ + } \ + else if ((Char & 0xe0) == 0xc0) { \ + Len = 2; \ + Mask = 0x1f; \ + } \ + else if ((Char & 0xf0) == 0xe0) { \ + Len = 3; \ + Mask = 0x0f; \ + } \ + else if ((Char & 0xf8) == 0xf0) { \ + Len = 4; \ + Mask = 0x07; \ + } \ + else if ((Char & 0xfc) == 0xf8) { \ + Len = 5; \ + Mask = 0x03; \ + } \ + else if ((Char & 0xfe) == 0xfc) { \ + Len = 6; \ + Mask = 0x01; \ + } \ + else { \ + Len = -1; \ + } + + +#define UTF8_GET(Result, Chars, Count, Mask, Len) \ + (Result) = (Chars)[0] & (Mask); \ + for ((Count) = 1; (Count) < (Len); ++(Count)) { \ + if (((Chars)[(Count)] & 0xc0) != 0x80) { \ + (Result) = -1; \ + break; \ + } \ + (Result) <<= 6; \ + (Result) |= ((Chars)[(Count)] & 0x3f); \ + } + + +/* was g_utf8_get_char */ /** - * g_utf8_find_prev_char: + * BLI_str_utf8_as_unicode: + * @p: a pointer to Unicode character encoded as UTF-8 + * + * Converts a sequence of bytes encoded as UTF-8 to a Unicode character. + * If @p does not point to a valid UTF-8 encoded character, results are + * undefined. If you are not sure that the bytes are complete + * valid Unicode characters, you should use g_utf8_get_char_validated() + * instead. + * + * Return value: the resulting character + **/ +unsigned int BLI_str_utf8_as_unicode(const char *p) +{ + int i, mask = 0, len; + unsigned int result; + unsigned char c = (unsigned char) *p; + + UTF8_COMPUTE (c, mask, len); + if (len == -1) + return (unsigned int)-1; + UTF8_GET (result, p, i, mask, len); + + return result; +} + +/* varient that increments the length */ +unsigned int BLI_str_utf8_as_unicode_and_size(const char *p, size_t *index) +{ + int i, mask = 0, len; + unsigned int result; + unsigned char c = (unsigned char) *p; + + UTF8_COMPUTE (c, mask, len); + if (len == -1) + return (unsigned int)-1; + UTF8_GET (result, p, i, mask, len); + *index += len; + return result; +} + +/* another varient that steps over the index */ +unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index) +{ + int i, mask = 0, len; + unsigned int result; + unsigned char c; + + p += *index; + c= (unsigned char) *p; + + UTF8_COMPUTE (c, mask, len); + if (len == -1) { + /* when called with NULL end, result will never be NULL, + * checks for a NULL character */ + char *p_next= BLI_str_find_next_char_utf8(p, NULL); + /* will never return the same pointer unless '\0', + * eternal loop is prevented */ + *index += (size_t)(p_next - p); + return (unsigned int)-1; + } + UTF8_GET (result, p, i, mask, len); + *index += len; + return result; +} + +/* was g_unichar_to_utf8 */ +/** + * BLI_str_utf8_from_unicode: + * @c: a Unicode character code + * @outbuf: output buffer, must have at least 6 bytes of space. + * If %NULL, the length will be computed and returned + * and nothing will be written to @outbuf. + * + * Converts a single character to UTF-8. + * + * Return value: number of bytes written + **/ +size_t BLI_str_utf8_from_unicode(unsigned int c, char *outbuf) +{ + /* If this gets modified, also update the copy in g_string_insert_unichar() */ + unsigned int len = 0; + int first; + int i; + + if (c < 0x80) { + first = 0; + len = 1; + } + else if (c < 0x800) { + first = 0xc0; + len = 2; + } + else if (c < 0x10000) { + first = 0xe0; + len = 3; + } + else if (c < 0x200000) { + first = 0xf0; + len = 4; + } + else if (c < 0x4000000) { + first = 0xf8; + len = 5; + } + else { + first = 0xfc; + len = 6; + } + + if (outbuf) { + for (i = len - 1; i > 0; --i) { + outbuf[i] = (c & 0x3f) | 0x80; + c >>= 6; + } + outbuf[0] = c | first; + } + + return len; +} + +/* was g_utf8_find_prev_char */ +/** + * BLI_str_find_prev_char_utf8: * @str: pointer to the beginning of a UTF-8 encoded string * @p: pointer to some position within @str * @@ -364,8 +458,9 @@ char * BLI_str_find_prev_char_utf8(const char *str, const char *p) return NULL; } +/* was g_utf8_find_next_char */ /** - * g_utf8_find_next_char: + * BLI_str_find_next_char_utf8: * @p: a pointer to a position within a UTF-8 encoded string * @end: a pointer to the byte following the end of the string, * or %NULL to indicate that the string is nul-terminated. @@ -395,8 +490,9 @@ char *BLI_str_find_next_char_utf8(const char *p, const char *end) return (p == end) ? NULL : (char *)p; } +/* was g_utf8_prev_char */ /** - * g_utf8_prev_char: + * BLI_str_prev_char_utf8: * @p: a pointer to a position within a UTF-8 encoded string * * Finds the previous UTF-8 character in the string before @p. From 2d8189cec0dab3d4c9db95c03ebb4eb2de6738c4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 00:48:02 +0000 Subject: [PATCH 092/119] - minor edits to font drawing/utf8, was needlessly casting int/unsigned int. - also ifdef'd out more smoke function when the modifiers disabled. --- source/blender/blenfont/intern/blf_font.c | 35 +++++++++++-------- source/blender/blenfont/intern/blf_internal.h | 2 +- source/blender/blenfont/intern/blf_util.c | 6 ++-- source/blender/blenkernel/intern/smoke.c | 22 ++++++------ source/blender/blenlib/BLI_string_utf8.h | 3 +- source/blender/blenlib/intern/string_utf8.c | 8 ++--- 6 files changed, 43 insertions(+), 33 deletions(-) diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 5161761cf09..9a7fb95dd78 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -129,7 +129,7 @@ static void blf_font_ensure_ascii_table(FontBLF *font) g= (glyph_ascii_table)[c]; \ i++; \ } \ - else if ((c= blf_utf8_next((unsigned char *)(str), &(i)))) { \ + else if ((c= blf_utf8_next((str), &(i))) != BLI_UTF8_ERR) { \ if ((g= blf_glyph_search((font)->glyph_cache, c)) == NULL) { \ g= blf_glyph_add(font, FT_Get_Char_Index((font)->face, c), c); \ } \ @@ -141,15 +141,20 @@ static void blf_font_ensure_ascii_table(FontBLF *font) const FT_UInt kern_mode= (has_kerning == 0) ? 0 : \ (((_font)->flags & BLF_KERNING_DEFAULT) ? \ ft_kerning_default : FT_KERNING_UNFITTED) \ - \ #define BLF_KERNING_STEP(_font, kern_mode, g_prev, g, delta, pen_x) \ { \ if (g_prev) { \ delta.x= delta.y= 0; \ - if (FT_Get_Kerning((_font)->face, g_prev->idx, g->idx, kern_mode, &delta) == 0) \ + if (FT_Get_Kerning((_font)->face, \ + (g_prev)->idx, \ + (g)->idx, \ + kern_mode, \ + &(delta)) == 0) \ + { \ pen_x += delta.x >> 6; \ + } \ } \ } \ @@ -159,7 +164,7 @@ void blf_font_draw(FontBLF *font, const char *str, unsigned int len) GlyphBLF *g, *g_prev= NULL; FT_Vector delta; int pen_x= 0, pen_y= 0; - unsigned int i= 0; + size_t i= 0; GlyphBLF **glyph_ascii_table= font->glyph_cache->glyph_ascii_table; BLF_KERNING_VARS(font, has_kerning, kern_mode); @@ -170,9 +175,9 @@ void blf_font_draw(FontBLF *font, const char *str, unsigned int len) BLF_UTF8_NEXT_FAST(font, g, str, i, c, glyph_ascii_table); - if (c == 0) break; - if (g == NULL) continue; - if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); + if (c == BLI_UTF8_ERR) break; + if (g == NULL) continue; + if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); /* do not return this loop if clipped, we want every character tested */ blf_glyph_render(font, g, (float)pen_x, (float)pen_y); @@ -214,7 +219,7 @@ void blf_font_buffer(FontBLF *font, const char *str) GlyphBLF *g, *g_prev= NULL; FT_Vector delta; int pen_x= (int)font->pos[0], pen_y= 0; - unsigned int i= 0; + size_t i= 0; GlyphBLF **glyph_ascii_table= font->glyph_cache->glyph_ascii_table; /* buffer specific vars*/ @@ -235,9 +240,9 @@ void blf_font_buffer(FontBLF *font, const char *str) BLF_UTF8_NEXT_FAST(font, g, str, i, c, glyph_ascii_table); - if (c == 0) break; - if (g == NULL) continue; - if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); + if (c == BLI_UTF8_ERR) break; + if (g == NULL) continue; + if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); chx= pen_x + ((int)g->pos_x); chy= (int)font->pos[1] + g->height; @@ -340,7 +345,7 @@ void blf_font_boundbox(FontBLF *font, const char *str, rctf *box) GlyphBLF *g, *g_prev= NULL; FT_Vector delta; int pen_x= 0, pen_y= 0; - unsigned int i= 0; + size_t i= 0; GlyphBLF **glyph_ascii_table= font->glyph_cache->glyph_ascii_table; rctf gbox; @@ -358,9 +363,9 @@ void blf_font_boundbox(FontBLF *font, const char *str, rctf *box) BLF_UTF8_NEXT_FAST(font, g, str, i, c, glyph_ascii_table); - if (c == 0) break; - if (g == NULL) continue; - if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); + if (c == BLI_UTF8_ERR) break; + if (g == NULL) continue; + if (has_kerning) BLF_KERNING_STEP(font, kern_mode, g_prev, g, delta, pen_x); gbox.xmin= pen_x; gbox.xmax= pen_x + g->advance; diff --git a/source/blender/blenfont/intern/blf_internal.h b/source/blender/blenfont/intern/blf_internal.h index ba0b9985dd4..4c830910e36 100644 --- a/source/blender/blenfont/intern/blf_internal.h +++ b/source/blender/blenfont/intern/blf_internal.h @@ -40,7 +40,7 @@ struct rctf; unsigned int blf_next_p2(unsigned int x); unsigned int blf_hash(unsigned int val); -int blf_utf8_next(unsigned char *buf, unsigned int *iindex); +unsigned int blf_utf8_next(const char *buf, size_t *iindex); char *blf_dir_search(const char *file); char *blf_dir_metrics_search(const char *filename); diff --git a/source/blender/blenfont/intern/blf_util.c b/source/blender/blenfont/intern/blf_util.c index cfe77887674..aef97b6f1cc 100644 --- a/source/blender/blenfont/intern/blf_util.c +++ b/source/blender/blenfont/intern/blf_util.c @@ -37,6 +37,8 @@ #include "blf_internal.h" +#include "BLI_string_utf8.h" + unsigned int blf_next_p2(unsigned int x) { x -= 1; @@ -72,7 +74,7 @@ unsigned int blf_hash(unsigned int val) * The original name: imlib_font_utf8_get_next * more info here: http://docs.enlightenment.org/api/imlib2/html/ */ -int blf_utf8_next(unsigned char *buf, unsigned int *iindex) +unsigned int blf_utf8_next(const char *buf, size_t *iindex) { /* Reads UTF8 bytes from 'buf', starting at 'index' and * returns the code point of the next valid code point. @@ -85,7 +87,7 @@ int blf_utf8_next(unsigned char *buf, unsigned int *iindex) d= buf[index++]; if (!d) - return 0; + return BLI_UTF8_ERR; while (buf[index] && ((buf[index] & 0xc0) == 0x80)) index++; diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 49c8831f06c..c1833b39b8b 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -131,15 +131,15 @@ struct Scene; struct DerivedMesh; struct SmokeModifierData; -// forward declerations -static void get_cell(float *p0, int res[3], float dx, float *pos, int *cell, int correct); -void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *tris, int numfaces, int numtris, int **tridivs, float cell_len); -static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs); - #define TRI_UVOFFSET (1./4.) +#ifdef WITH_SMOKE +/* forward declerations */ +static void calcTriangleDivs(Object *ob, MVert *verts, int numverts, MFace *tris, int numfaces, int numtris, int **tridivs, float cell_len); +static void get_cell(float *p0, int res[3], float dx, float *pos, int *cell, int correct); +static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs); +#else /* WITH_SMOKE */ /* Stubs to use when smoke is disabled */ -#ifndef WITH_SMOKE struct WTURBULENCE *smoke_turbulence_init(int *UNUSED(res), int UNUSED(amplify), int UNUSED(noisetype)) { return NULL; } struct FLUID_3D *smoke_init(int *UNUSED(res), float *UNUSED(p0)) { return NULL; } void smoke_free(struct FLUID_3D *UNUSED(fluid)) {} @@ -148,9 +148,9 @@ void smoke_initWaveletBlenderRNA(struct WTURBULENCE *UNUSED(wt), float *UNUSED(s void smoke_initBlenderRNA(struct FLUID_3D *UNUSED(fluid), float *UNUSED(alpha), float *UNUSED(beta), float *UNUSED(dt_factor), float *UNUSED(vorticity), int *UNUSED(border_colli)) {} long long smoke_get_mem_req(int UNUSED(xres), int UNUSED(yres), int UNUSED(zres), int UNUSED(amplify)) { return 0; } void smokeModifier_do(SmokeModifierData *UNUSED(smd), Scene *UNUSED(scene), Object *UNUSED(ob), DerivedMesh *UNUSED(dm)) {} -#endif // WITH_SMOKE - +#endif /* WITH_SMOKE */ +#ifdef WITH_SMOKE static int smokeModifier_init (SmokeModifierData *smd, Object *ob, Scene *scene, DerivedMesh *dm) { if((smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain && !smd->domain->fluid) @@ -455,7 +455,7 @@ static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs) } /*! init triangle divisions */ -void calcTriangleDivs(Object *ob, MVert *verts, int UNUSED(numverts), MFace *faces, int numfaces, int numtris, int **tridivs, float cell_len) +static void calcTriangleDivs(Object *ob, MVert *verts, int UNUSED(numverts), MFace *faces, int numfaces, int numtris, int **tridivs, float cell_len) { // mTriangleDivs1.resize( faces.size() ); // mTriangleDivs2.resize( faces.size() ); @@ -554,6 +554,8 @@ void calcTriangleDivs(Object *ob, MVert *verts, int UNUSED(numverts), MFace *fac } } +#endif /* WITH_SMOKE */ + static void smokeModifier_freeDomain(SmokeModifierData *smd) { if(smd->domain) @@ -1659,4 +1661,4 @@ static void smoke_calc_transparency(float *result, float *input, float *p0, floa } } -#endif // WITH_SMOKE +#endif /* WITH_SMOKE */ diff --git a/source/blender/blenlib/BLI_string_utf8.h b/source/blender/blenlib/BLI_string_utf8.h index b53d9d3203b..765ae93828e 100644 --- a/source/blender/blenlib/BLI_string_utf8.h +++ b/source/blender/blenlib/BLI_string_utf8.h @@ -53,7 +53,8 @@ size_t BLI_strlen_utf8(const char *strc); size_t BLI_strncpy_wchar_as_utf8(char *dst, const wchar_t *src, const size_t maxcpy); size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst, const char *src, const size_t maxcpy); -#define BLI_STRING_MAX_UTF8 6 +#define BLI_UTF8_MAX 6 +#define BLI_UTF8_ERR ((unsigned int)-1) #ifdef __cplusplus } diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index 7dc2b2bcc52..25a0e67fd38 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -246,7 +246,7 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size while(*src_c && len < maxcpy) { size_t step= 0; unsigned int unicode= BLI_str_utf8_as_unicode_and_size(src_c, &step); - if (unicode != (unsigned int)-1) { + if (unicode != BLI_UTF8_ERR) { *dst_w= (wchar_t)unicode; src_c += step; } @@ -331,7 +331,7 @@ unsigned int BLI_str_utf8_as_unicode(const char *p) UTF8_COMPUTE (c, mask, len); if (len == -1) - return (unsigned int)-1; + return BLI_UTF8_ERR; UTF8_GET (result, p, i, mask, len); return result; @@ -346,7 +346,7 @@ unsigned int BLI_str_utf8_as_unicode_and_size(const char *p, size_t *index) UTF8_COMPUTE (c, mask, len); if (len == -1) - return (unsigned int)-1; + return BLI_UTF8_ERR; UTF8_GET (result, p, i, mask, len); *index += len; return result; @@ -370,7 +370,7 @@ unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index) /* will never return the same pointer unless '\0', * eternal loop is prevented */ *index += (size_t)(p_next - p); - return (unsigned int)-1; + return BLI_UTF8_ERR; } UTF8_GET (result, p, i, mask, len); *index += len; From 6912e94d06edd4c9d099fc3d248aa56ccc7460be Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 01:33:06 +0000 Subject: [PATCH 093/119] replace BLF's blf_utf8_next() with BLI_str_utf8_as_unicode_step(), also fixed some spelling errors. --- source/blender/blenfont/intern/blf_font.c | 2 +- source/blender/blenfont/intern/blf_internal.h | 1 - source/blender/blenfont/intern/blf_util.c | 64 ------------------- source/blender/blenkernel/intern/softbody.c | 2 +- source/blender/blenlib/PIL_time.h | 8 +-- source/blender/blenlib/intern/string_utf8.c | 34 ++++++++-- source/blender/editors/transform/transform.h | 2 +- .../gameengine/GameLogic/SCA_KeyboardSensor.h | 2 +- 8 files changed, 34 insertions(+), 81 deletions(-) diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 9a7fb95dd78..355182fb85f 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -129,7 +129,7 @@ static void blf_font_ensure_ascii_table(FontBLF *font) g= (glyph_ascii_table)[c]; \ i++; \ } \ - else if ((c= blf_utf8_next((str), &(i))) != BLI_UTF8_ERR) { \ + else if ((c= BLI_str_utf8_as_unicode_step((str), &(i))) != BLI_UTF8_ERR) { \ if ((g= blf_glyph_search((font)->glyph_cache, c)) == NULL) { \ g= blf_glyph_add(font, FT_Get_Char_Index((font)->face, c), c); \ } \ diff --git a/source/blender/blenfont/intern/blf_internal.h b/source/blender/blenfont/intern/blf_internal.h index 4c830910e36..df88d0c8fea 100644 --- a/source/blender/blenfont/intern/blf_internal.h +++ b/source/blender/blenfont/intern/blf_internal.h @@ -40,7 +40,6 @@ struct rctf; unsigned int blf_next_p2(unsigned int x); unsigned int blf_hash(unsigned int val); -unsigned int blf_utf8_next(const char *buf, size_t *iindex); char *blf_dir_search(const char *file); char *blf_dir_metrics_search(const char *filename); diff --git a/source/blender/blenfont/intern/blf_util.c b/source/blender/blenfont/intern/blf_util.c index aef97b6f1cc..d51f9b8af6b 100644 --- a/source/blender/blenfont/intern/blf_util.c +++ b/source/blender/blenfont/intern/blf_util.c @@ -64,67 +64,3 @@ unsigned int blf_hash(unsigned int val) key ^= (key >> 17); return key % 257; } - -/* - * This function is from Imlib2 library (font_main.c), a - * library that does image file loading and saving as well - * as rendering, manipulation, arbitrary polygon support, etc. - * - * Copyright (C) 2000 Carsten Haitzler and various contributors - * The original name: imlib_font_utf8_get_next - * more info here: http://docs.enlightenment.org/api/imlib2/html/ - */ -unsigned int blf_utf8_next(const char *buf, size_t *iindex) -{ - /* Reads UTF8 bytes from 'buf', starting at 'index' and - * returns the code point of the next valid code point. - * 'index' is updated ready for the next call. - * - * Returns 0 to indicate an error (e.g. invalid UTF8) - */ - int index= *iindex, len, r; - unsigned char d, d2, d3, d4; - - d= buf[index++]; - if (!d) - return BLI_UTF8_ERR; - - while (buf[index] && ((buf[index] & 0xc0) == 0x80)) - index++; - - len= index - *iindex; - if (len == 1) - r= d; - else if (len == 2) { - /* 2 byte */ - d2= buf[*iindex + 1]; - r= d & 0x1f; /* copy lower 5 */ - r <<= 6; - r |= (d2 & 0x3f); /* copy lower 6 */ - } - else if (len == 3) { - /* 3 byte */ - d2= buf[*iindex + 1]; - d3= buf[*iindex + 2]; - r= d & 0x0f; /* copy lower 4 */ - r <<= 6; - r |= (d2 & 0x3f); - r <<= 6; - r |= (d3 & 0x3f); - } - else { - /* 4 byte */ - d2= buf[*iindex + 1]; - d3= buf[*iindex + 2]; - d4= buf[*iindex + 3]; - r= d & 0x0f; /* copy lower 4 */ - r <<= 6; - r |= (d2 & 0x3f); - r <<= 6; - r |= (d3 & 0x3f); - r <<= 6; - r |= (d4 & 0x3f); - } - *iindex= index; - return r; -} diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 8787ec07d9c..cd147f4dbed 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -208,7 +208,7 @@ static float sb_time_scale(Object *ob) } return (1.0f); /* - this would be frames/sec independant timing assuming 25 fps is default + this would be frames/sec independent timing assuming 25 fps is default but does not work very well with NLA return (25.0f/scene->r.frs_sec) */ diff --git a/source/blender/blenlib/PIL_time.h b/source/blender/blenlib/PIL_time.h index 82869035d50..36ea43bef2d 100644 --- a/source/blender/blenlib/PIL_time.h +++ b/source/blender/blenlib/PIL_time.h @@ -1,7 +1,5 @@ -/* - * @file PIL_time.h - * - * Platform independant time functions. +/* + * Platform independent time functions. * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -51,7 +49,7 @@ extern double PIL_check_seconds_timer (void); /** - * Platform-independant sleep function. + * Platform-independent sleep function. * @param ms Number of milliseconds to sleep */ void PIL_sleep_ms (int ms); diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index 25a0e67fd38..8dc683f6e22 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -297,12 +297,12 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size Len = -1; \ } - -#define UTF8_GET(Result, Chars, Count, Mask, Len) \ +/* same as glib define but added an 'Err' arg */ +#define UTF8_GET(Result, Chars, Count, Mask, Len, Err) \ (Result) = (Chars)[0] & (Mask); \ for ((Count) = 1; (Count) < (Len); ++(Count)) { \ if (((Chars)[(Count)] & 0xc0) != 0x80) { \ - (Result) = -1; \ + (Result) = Err; \ break; \ } \ (Result) <<= 6; \ @@ -332,7 +332,7 @@ unsigned int BLI_str_utf8_as_unicode(const char *p) UTF8_COMPUTE (c, mask, len); if (len == -1) return BLI_UTF8_ERR; - UTF8_GET (result, p, i, mask, len); + UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR); return result; } @@ -347,12 +347,13 @@ unsigned int BLI_str_utf8_as_unicode_and_size(const char *p, size_t *index) UTF8_COMPUTE (c, mask, len); if (len == -1) return BLI_UTF8_ERR; - UTF8_GET (result, p, i, mask, len); + UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR); *index += len; return result; } -/* another varient that steps over the index */ +/* another varient that steps over the index, + * note, currently this also falls back to latin1 for text drawing. */ unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index) { int i, mask = 0, len; @@ -372,7 +373,26 @@ unsigned int BLI_str_utf8_as_unicode_step(const char *p, size_t *index) *index += (size_t)(p_next - p); return BLI_UTF8_ERR; } - UTF8_GET (result, p, i, mask, len); + + /* this is tricky since there are a few ways we can bail out of bad unicode + * values, 3 possible solutions. */ +#if 0 + UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR); +#elif 1 + /* WARNING: this is NOT part of glib, or supported by similar functions. + * this is added for text drawing because some filepaths can have latin1 + * characters */ + UTF8_GET (result, p, i, mask, len, BLI_UTF8_ERR); + if(result == BLI_UTF8_ERR) { + len= 1; + result= *p; + } + /* end warning! */ +#else + /* without a fallback like '?', text drawing will stop on this value */ + UTF8_GET (result, p, i, mask, len, '?'); +#endif + *index += len; return result; } diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 2f177239f44..7fccbcb0097 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -152,7 +152,7 @@ typedef struct TransData2D { float loc[3]; /* Location of data used to transform (x,y,0) */ float *loc2d; /* Pointer to real 2d location of data */ - float *h1, *h2; /* Pointer to handle locations, if handles aren't being moved independantly*/ + float *h1, *h2; /* Pointer to handle locations, if handles aren't being moved independently */ float ih1[2], ih2[2]; } TransData2D; diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.h b/source/gameengine/GameLogic/SCA_KeyboardSensor.h index ee40567fce2..6df648bf2d3 100644 --- a/source/gameengine/GameLogic/SCA_KeyboardSensor.h +++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.h @@ -69,7 +69,7 @@ class SCA_KeyboardSensor : public SCA_ISensor * The property that indicates whether or not to log text when in * loggin mode. If the property equals 0, no loggin is done. For * all other values, logging is active. Logging can only become - * active if there is a property to log to. Logging is independant + * active if there is a property to log to. Logging is independent * from hotkey settings. */ STR_String m_toggleprop; From 9ec0ea91f02b312ecce8c7b6754db54ce9ba8a1a Mon Sep 17 00:00:00 2001 From: "Guillermo S. Romero" Date: Fri, 21 Oct 2011 01:46:03 +0000 Subject: [PATCH 094/119] Fix copyright assignment. --- source/blender/blenlib/intern/string_utf8.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/string_utf8.c b/source/blender/blenlib/intern/string_utf8.c index 8dc683f6e22..b1ad04eb70d 100644 --- a/source/blender/blenlib/intern/string_utf8.c +++ b/source/blender/blenlib/intern/string_utf8.c @@ -18,6 +18,8 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2011 Blender Foundation. + * Code from gutf8.c Copyright (C) 1999 Tom Tromey + * Copyright (C) 2000 Red Hat, Inc. * All rights reserved. * * Contributor(s): Campbell Barton. @@ -263,7 +265,7 @@ size_t BLI_strncpy_wchar_from_utf8(wchar_t *dst_w, const char *src_c, const size /* end wchar_t / utf8 functions */ /* --------------------------------------------------------------------------*/ -/* copied from glib */ +/* copied from glib's gutf8.c */ /* note, glib uses unsigned int for unicode, best we do the same, * though we dont typedef it - campbell */ From ef218c75edf975b2f3946bd16194cc9679dd2d31 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 02:13:36 +0000 Subject: [PATCH 095/119] - add convenience functions BLI_split_dir_part / BLI_split_file_part, which just call BLI_split_dirfile(). - add a fixed value for bprogdir (the dir of bprogname), since it was being used for resource lookups. --- source/blender/blenkernel/intern/pointcache.c | 2 +- source/blender/blenlib/BLI_path_util.h | 2 ++ source/blender/blenlib/intern/bpath.c | 2 +- source/blender/blenlib/intern/path_util.c | 23 +++++++++++-------- source/blender/blenlib/intern/winstuff.c | 2 +- source/blender/blenloader/intern/writefile.c | 4 ++-- source/blender/collada/DocumentImporter.cpp | 2 +- source/blender/collada/ImageExporter.cpp | 2 +- source/blender/editors/space_file/filesel.c | 2 +- .../editors/space_sequencer/sequencer_add.c | 2 +- .../blender/makesrna/intern/rna_sequencer.c | 2 +- source/creator/creator.c | 4 +++- .../gameengine/GamePlayer/ghost/GPG_ghost.cpp | 2 ++ source/gameengine/Ketsji/KX_PythonInit.cpp | 4 ++-- 14 files changed, 32 insertions(+), 23 deletions(-) diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 8e5452e2704..bd5e5dc6049 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -910,7 +910,7 @@ static int ptcache_path(PTCacheID *pid, char *filename) else if (G.relbase_valid || lib) { char file[MAX_PTCACHE_PATH]; /* we dont want the dir, only the file */ - BLI_split_dirfile(blendfilename, NULL, file, 0, sizeof(file)); + BLI_split_file_part(blendfilename, file, sizeof(file)); i = strlen(file); /* remove .blend */ diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 4f7f7b482b5..9ccdc37c353 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -104,6 +104,8 @@ void BLI_make_file_string(const char *relabase, char *string, const char *dir, void BLI_make_exist(char *dir); void BLI_make_existing_file(const char *name); void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t dirlen, const size_t filelen); +void BLI_split_dir_part(const char *string, char *dir, const size_t dirlen); +void BLI_split_file_part(const char *string, char *file, const size_t filelen); void BLI_join_dirfile(char *string, const size_t maxlen, const char *dir, const char *file); char *BLI_path_basename(char *path); int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const char *base_dir, const char *src_dir, const char *dest_dir); diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 4e4f8b3cade..293f824c5fd 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -903,7 +903,7 @@ void findMissingFiles(Main *bmain, const char *str) //XXX waitcursor( 1 ); - BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0); + BLI_split_dir_part(str, dirname, sizeof(dirname)); BLI_bpathIterator_init(&bpi, bmain, bmain->name, 0); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 21f91ce8f14..b338bfcbc50 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -88,6 +88,7 @@ #define UNIQUE_NAME_MAX 128 extern char bprogname[]; +extern char bprogdir[]; static int add_win32_extension(char *name); static char *blender_version_decimal(const int ver); @@ -875,7 +876,6 @@ static int test_env_path(char *path, const char *envvar) static int get_path_local(char *targetpath, const char *folder_name, const char *subfolder_name, const int ver) { - char bprogdir[FILE_MAX]; char relfolder[FILE_MAX]; #ifdef PATH_DEBUG2 @@ -892,10 +892,7 @@ static int get_path_local(char *targetpath, const char *folder_name, const char else { relfolder[0]= '\0'; } - - /* use argv[0] (bprogname) to get the path to the executable */ - BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0); - + /* try EXECUTABLE_DIR/2.5x/folder_name - new default directory for local blender installed files */ if(test_path(targetpath, bprogdir, blender_version_decimal(ver), relfolder)) return 1; @@ -963,10 +960,6 @@ static int get_path_system(char *targetpath, const char *folder_name, const char * these are only used when running blender from source */ char cwd[FILE_MAX]; char relfolder[FILE_MAX]; - char bprogdir[FILE_MAX]; - - /* use argv[0] (bprogname) to get the path to the executable */ - BLI_split_dirfile(bprogname, bprogdir, NULL, sizeof(bprogdir), 0); if(folder_name) { if (subfolder_name) { @@ -1430,6 +1423,16 @@ void BLI_split_dirfile(const char *string, char *dir, char *file, const size_t d } } +void BLI_split_dir_part(const char *string, char *dir, const size_t dirlen) +{ + BLI_split_dirfile(string, dir, NULL, dirlen, 0); +} + +void BLI_split_file_part(const char *string, char *file, const size_t filelen) +{ + BLI_split_dirfile(string, NULL, file, 0, filelen); +} + /* simple appending of filename to dir, does not check for valid path! */ void BLI_join_dirfile(char *dst, const size_t maxlen, const char *dir, const char *file) { @@ -1516,7 +1519,7 @@ int BKE_rebase_path(char *abs, size_t abs_len, char *rel, size_t rel_len, const if (rel) rel[0]= 0; - BLI_split_dirfile(base_dir, blend_dir, NULL, sizeof(blend_dir), 0); + BLI_split_dir_part(base_dir, blend_dir, sizeof(blend_dir)); if (src_dir[0]=='\0') return 0; diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c index 9594197ef90..21ad0ff7253 100644 --- a/source/blender/blenlib/intern/winstuff.c +++ b/source/blender/blenlib/intern/winstuff.c @@ -56,7 +56,7 @@ int BLI_getInstallationDir( char * str ) { int a; GetModuleFileName(NULL,str,FILE_MAXDIR+FILE_MAXFILE); - BLI_split_dirfile(str, dir, NULL, sizeof(dir), 0); /* shouldn't be relative */ + BLI_split_dir_part(str, dir, sizeof(dir)); /* shouldn't be relative */ a = strlen(dir); if(dir[a-1] == '\\') dir[a-1]=0; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 6e9e3da3b42..c4f6e25f40b 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2678,8 +2678,8 @@ int BLO_write_file(Main *mainvar, const char *filepath, int write_flags, ReportL if(write_flags & G_FILE_RELATIVE_REMAP) { char dir1[FILE_MAXDIR+FILE_MAXFILE]; char dir2[FILE_MAXDIR+FILE_MAXFILE]; - BLI_split_dirfile(filepath, dir1, NULL, sizeof(dir1), 0); - BLI_split_dirfile(mainvar->name, dir2, NULL, sizeof(dir2), 0); + BLI_split_dir_part(filepath, dir1, sizeof(dir1)); + BLI_split_dir_part(mainvar->name, dir2, sizeof(dir2)); /* just incase there is some subtle difference */ BLI_cleanup_dir(mainvar->name, dir1); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 056d74aabfb..c06867ca107 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -884,7 +884,7 @@ bool DocumentImporter::writeImage( const COLLADAFW::Image* image ) char dir[FILE_MAX]; char full_path[FILE_MAX]; - BLI_split_dirfile(filename, dir, NULL, sizeof(dir), 0); + BLI_split_dir_part(filename, dir, sizeof(dir)); BLI_join_dirfile(full_path, sizeof(full_path), dir, filepath.c_str()); Image *ima = BKE_add_image_file(full_path); if (!ima) { diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index 53c43677c18..6c7251016c3 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -97,7 +97,7 @@ void ImagesExporter::operator()(Material *ma, Object *ob) char src[FILE_MAX]; char dir[FILE_MAX]; - BLI_split_dirfile(this->export_settings->filepath, dir, NULL, sizeof(dir), 0); + BLI_split_dir_part(this->export_settings->filepath, dir, sizeof(dir)); BKE_rebase_path(abs, sizeof(abs), rel, sizeof(rel), G.main->name, image->name, dir); diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index f36145aaba0..149d84b86cd 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -613,7 +613,7 @@ void autocomplete_directory(struct bContext *C, char *str, void *UNUSED(arg_v)) DIR *dir; struct dirent *de; - BLI_split_dirfile(str, dirname, NULL, sizeof(dirname), 0); + BLI_split_dir_part(str, dirname, sizeof(dirname)); dir = opendir(dirname); diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 7e4d02036ef..2b78bc3c190 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -321,7 +321,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad char dir_only[FILE_MAX]; char file_only[FILE_MAX]; - BLI_split_dirfile(seq_load.path, dir_only, NULL, sizeof(dir_only), 0); + BLI_split_dir_part(seq_load.path, dir_only, sizeof(dir_only)); RNA_BEGIN(op->ptr, itemptr, "files") { RNA_string_get(&itemptr, "name", file_only); diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 9d72eeacf3e..3c2b771ae86 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -540,7 +540,7 @@ static int rna_Sequence_input_count_get(PointerRNA *ptr) static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) { StripElem *elem= (StripElem*)(ptr->data); - BLI_split_dirfile(value, NULL, elem->name, 0, sizeof(elem->name)); + BLI_split_file_part(value, elem->name, sizeof(elem->name)); }*/ static void rna_Sequence_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr) diff --git a/source/creator/creator.c b/source/creator/creator.c index f6b99a9f73c..24f2d22a029 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -141,7 +141,8 @@ static int print_version(int argc, const char **argv, void *data); extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */ -char bprogname[FILE_MAX]; /* from blenpluginapi:pluginapi.c */ +char bprogname[FILE_MAX]; +char bprogdir[FILE_MAX]; char btempdir[FILE_MAX]; #define BLEND_VERSION_STRING_FMT "Blender %d.%02d (sub %d)\n", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION @@ -1157,6 +1158,7 @@ int main(int argc, const char **argv) // need this. BLI_where_am_i(bprogname, sizeof(bprogname), argv[0]); + BLI_split_dir_part(bprogname, bprogdir, sizeof(bprogdir)); BLI_threadapi_init(); diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index ea17b9adcfd..78ea2aac8ce 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -117,6 +117,7 @@ const int kMinWindowWidth = 100; const int kMinWindowHeight = 100; char bprogname[FILE_MAX]; +char bprogdir[FILE_MAX]; static void mem_error_cb(const char *errorStr) { @@ -380,6 +381,7 @@ int main(int argc, char** argv) #endif /* __alpha__ */ #endif /* __linux__ */ BLI_where_am_i(bprogname, sizeof(bprogname), argv[0]); + BLI_split_dir_part(bprogname, bprogdir, sizeof(bprogdir)); #ifdef __APPLE__ // Can't use Carbon right now because of double defined type ID (In Carbon.h and DNA_ID.h, sigh) /* diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index e86831b9323..c7da650f988 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -502,7 +502,7 @@ static PyObject* gPyGetBlendFileList(PyObject*, PyObject* args) BLI_path_abs(cpath, gp_GamePythonPath); } else { /* Get the dir only */ - BLI_split_dirfile(gp_GamePythonPath, cpath, NULL, sizeof(cpath), 0); + BLI_split_dir_part(gp_GamePythonPath, cpath, sizeof(cpath)); } if((dp = opendir(cpath)) == NULL) { @@ -1732,7 +1732,7 @@ static void initPySysObjects__append(PyObject *sys_path, char *filename) PyObject *item; char expanded[FILE_MAXDIR + FILE_MAXFILE]; - BLI_split_dirfile(filename, expanded, NULL, sizeof(expanded), 0); /* get the dir part of filename only */ + BLI_split_dir_part(filename, expanded, sizeof(expanded)); /* get the dir part of filename only */ BLI_path_abs(expanded, gp_GamePythonPath); /* filename from lib->filename is (always?) absolute, so this may not be needed but it wont hurt */ BLI_cleanup_file(gp_GamePythonPath, expanded); /* Dont use BLI_cleanup_dir because it adds a slash - BREAKS WIN32 ONLY */ item= PyUnicode_DecodeFSDefault(expanded); From d132b08f3394600d4b83d56d67eb2a5c2e84cf38 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 03:00:28 +0000 Subject: [PATCH 096/119] move fonts/ and locale/ dirs into release/datafiles, since blender wasn't finding them in their current location and so to test international characters you had to 'make install'. updated scons/cmake/translation-scripts. --- SConstruct | 50 ++++++++++++++---- build_files/scons/tools/Blender.py | 4 +- po/update_mo.py | 2 +- .../fonts/droidsans.ttf.gz | Bin source/creator/CMakeLists.txt | 12 ++--- 5 files changed, 48 insertions(+), 20 deletions(-) rename release/{bin/.blender => datafiles}/fonts/droidsans.ttf.gz (100%) diff --git a/SConstruct b/SConstruct index 738466d389e..034f7cf71e5 100644 --- a/SConstruct +++ b/SConstruct @@ -521,19 +521,19 @@ if env['OURPLATFORM']!='darwin': if not env['WITH_BF_INTERNATIONAL']: if 'locale' in dp: continue - if not env['WITH_BF_FREETYPE']: - if f.endswith('.ttf'): - continue + #~ if not env['WITH_BF_FREETYPE']: + #~ if f.endswith('.ttf'): + #~ continue - if 'locale' in dp or 'fonts' in dp: - datafileslist.append(os.path.join(dp,f)) - dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['datafiles'] + dp.split(os.sep)[3:])) # skip bin - datafilestargetlist.append(dir + os.sep + f) + #~ if 'locale' in dp or 'fonts' in dp: + #~ datafileslist.append(os.path.join(dp,f)) + #~ dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['datafiles'] + dp.split(os.sep)[3:])) # skip bin + #~ datafilestargetlist.append(dir + os.sep + f) - else: - dotblendlist.append(os.path.join(dp, f)) - dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['config'] + dp.split(os.sep)[3:])) # skip bin - dottargetlist.append(dir + os.sep + f) + #~ else: + #~ dotblendlist.append(os.path.join(dp, f)) + #~ dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['config'] + dp.split(os.sep)[3:])) # skip bin + #~ dottargetlist.append(dir + os.sep + f) dotblenderinstall = [] for targetdir,srcfile in zip(dottargetlist, dotblendlist): @@ -563,6 +563,34 @@ if env['OURPLATFORM']!='darwin': if len(source)==0: env.Execute(Mkdir(dir)) scriptinstall.append(env.Install(dir=dir,source=source)) + + if env['WITH_BF_INTERNATIONAL']: + internationalpaths=['release' + os.sep + 'datafiles'] + + def check_path(path, member): + return (member in path.split(os.sep)) + + for intpath in internationalpaths: + for dp, dn, df in os.walk(intpath): + if '.svn' in dn: + dn.remove('.svn') + if '_svn' in dn: + dn.remove('_svn') + + # we only care about release/datafiles/fonts, release/datafiles/locales + if check_path(dp, "fonts") or check_path(dp, "locale"): + pass + else: + continue + + dir = os.path.join(env['BF_INSTALLDIR'], VERSION) + dir += os.sep + os.path.basename(intpath) + dp[len(intpath):] + + source=[os.path.join(dp, f) for f in df if not f.endswith(".pyc")] + # To ensure empty dirs are created too + if len(source)==0: + env.Execute(Mkdir(dir)) + scriptinstall.append(env.Install(dir=dir,source=source)) #-- icons if env['OURPLATFORM']=='linux': diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index c802eee4fb6..875d8f7388b 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -561,9 +561,9 @@ def AppIt(target=None, source=None, env=None): if binary == 'blender': cmd = 'mkdir %s/%s.app/Contents/MacOS/%s/datafiles'%(installdir, binary, VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/bin/.blender/locale %s/%s.app/Contents/MacOS/%s/datafiles/'%(bldroot,installdir,binary,VERSION) + cmd = 'cp -R %s/release/datafiles/locale %s/%s.app/Contents/MacOS/%s/datafiles/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) - cmd = 'cp -R %s/release/bin/.blender/fonts %s/%s.app/Contents/MacOS/%s/datafiles/'%(bldroot,installdir,binary,VERSION) + cmd = 'cp -R %s/release/datafiles/fonts %s/%s.app/Contents/MacOS/%s/datafiles/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/%s/'%(bldroot,installdir,binary,VERSION) commands.getoutput(cmd) diff --git a/po/update_mo.py b/po/update_mo.py index 33b7baaed69..a0173b2d059 100755 --- a/po/update_mo.py +++ b/po/update_mo.py @@ -30,7 +30,7 @@ import sys GETTEXT_MSGFMT_EXECUTABLE = "msgfmt" CURRENT_DIR = os.path.abspath(os.path.dirname(__file__)) SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.join(CURRENT_DIR, ".."))) -LOCALE_DIR = os.path.join(SOURCE_DIR, "release", "bin", ".blender", "locale") +LOCALE_DIR = os.path.join(SOURCE_DIR, "release", "datafiles", "locale") DOMAIN = "blender" diff --git a/release/bin/.blender/fonts/droidsans.ttf.gz b/release/datafiles/fonts/droidsans.ttf.gz similarity index 100% rename from release/bin/.blender/fonts/droidsans.ttf.gz rename to release/datafiles/fonts/droidsans.ttf.gz diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index b4e9d4d262e..85facb55a9c 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -352,8 +352,8 @@ if(UNIX AND NOT APPLE) if(WITH_INTERNATIONAL) install( DIRECTORY - ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale - ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts + ${CMAKE_SOURCE_DIR}/release/datafiles/locale + ${CMAKE_SOURCE_DIR}/release/datafiles/fonts DESTINATION ${TARGETDIR_VER}/datafiles PATTERN ".svn" EXCLUDE ) @@ -424,8 +424,8 @@ elseif(WIN32) if(WITH_INTERNATIONAL) # same as linux!, deduplicate install( DIRECTORY - ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale - ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts + ${CMAKE_SOURCE_DIR}/release/datafiles/locale + ${CMAKE_SOURCE_DIR}/release/datafiles/fonts DESTINATION ${TARGETDIR_VER}/datafiles PATTERN ".svn" EXCLUDE ) @@ -648,8 +648,8 @@ elseif(APPLE) if(WITH_INTERNATIONAL) install( DIRECTORY - ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale - ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts + ${CMAKE_SOURCE_DIR}/release/datafiles/locale + ${CMAKE_SOURCE_DIR}/release/datafiles/fonts DESTINATION ${TARGETDIR_VER}/datafiles PATTERN ".svn" EXCLUDE ) From 78a8f8a4b12b9088eccf444fff49cd27f8bb3e4d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 03:16:01 +0000 Subject: [PATCH 097/119] - remove release/bin/.blender/.bfont.ttf, we have ./release/datafiles/bfont.ttf already, and its not used anymore. - removed scons WITH_BF_FREETYPE --- SConstruct | 134 +++++++++-------------- build_files/scons/config/linux-config.py | 1 - build_files/scons/tools/btools.py | 3 +- po/README.txt | 2 +- release/bin/.blender/.bfont.ttf | Bin 65932 -> 0 bytes source/creator/CMakeLists.txt | 15 --- 6 files changed, 54 insertions(+), 101 deletions(-) delete mode 100644 release/bin/.blender/.bfont.ttf diff --git a/SConstruct b/SConstruct index 034f7cf71e5..606cc33fb20 100644 --- a/SConstruct +++ b/SConstruct @@ -505,92 +505,62 @@ dottargetlist = [] scriptinstall = [] if env['OURPLATFORM']!='darwin': - for dp, dn, df in os.walk('release/bin/.blender'): - dp = os.path.normpath(dp) + dotblenderinstall = [] + for targetdir,srcfile in zip(dottargetlist, dotblendlist): + td, tf = os.path.split(targetdir) + dotblenderinstall.append(env.Install(dir=td, source=srcfile)) + for targetdir,srcfile in zip(datafilestargetlist, datafileslist): + td, tf = os.path.split(targetdir) + dotblenderinstall.append(env.Install(dir=td, source=srcfile)) + + if env['WITH_BF_PYTHON']: + #-- local/VERSION/scripts + scriptpaths=['release/scripts'] + for scriptpath in scriptpaths: + for dp, dn, df in os.walk(scriptpath): + if '.svn' in dn: + dn.remove('.svn') + if '_svn' in dn: + dn.remove('_svn') + if '__pycache__' in dn: # py3.2 cache dir + dn.remove('__pycache__') - if '.svn' in dn: - dn.remove('.svn') - if '_svn' in dn: - dn.remove('_svn') - - for f in df: - # This files aren't used anymore - if f in (".bfont.ttf", ): + dir = os.path.join(env['BF_INSTALLDIR'], VERSION) + dir += os.sep + os.path.basename(scriptpath) + dp[len(scriptpath):] + + source=[os.path.join(dp, f) for f in df if not f.endswith(".pyc")] + # To ensure empty dirs are created too + if len(source)==0: + env.Execute(Mkdir(dir)) + scriptinstall.append(env.Install(dir=dir,source=source)) + + if env['WITH_BF_INTERNATIONAL']: + internationalpaths=['release' + os.sep + 'datafiles'] + + def check_path(path, member): + return (member in path.split(os.sep)) + + for intpath in internationalpaths: + for dp, dn, df in os.walk(intpath): + if '.svn' in dn: + dn.remove('.svn') + if '_svn' in dn: + dn.remove('_svn') + + # we only care about release/datafiles/fonts, release/datafiles/locales + if check_path(dp, "fonts") or check_path(dp, "locale"): + pass + else: continue - - if not env['WITH_BF_INTERNATIONAL']: - if 'locale' in dp: - continue - #~ if not env['WITH_BF_FREETYPE']: - #~ if f.endswith('.ttf'): - #~ continue - #~ if 'locale' in dp or 'fonts' in dp: - #~ datafileslist.append(os.path.join(dp,f)) - #~ dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['datafiles'] + dp.split(os.sep)[3:])) # skip bin - #~ datafilestargetlist.append(dir + os.sep + f) + dir = os.path.join(env['BF_INSTALLDIR'], VERSION) + dir += os.sep + os.path.basename(intpath) + dp[len(intpath):] - #~ else: - #~ dotblendlist.append(os.path.join(dp, f)) - #~ dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['config'] + dp.split(os.sep)[3:])) # skip bin - #~ dottargetlist.append(dir + os.sep + f) - - dotblenderinstall = [] - for targetdir,srcfile in zip(dottargetlist, dotblendlist): - td, tf = os.path.split(targetdir) - dotblenderinstall.append(env.Install(dir=td, source=srcfile)) - for targetdir,srcfile in zip(datafilestargetlist, datafileslist): - td, tf = os.path.split(targetdir) - dotblenderinstall.append(env.Install(dir=td, source=srcfile)) - - if env['WITH_BF_PYTHON']: - #-- local/VERSION/scripts - scriptpaths=['release/scripts'] - for scriptpath in scriptpaths: - for dp, dn, df in os.walk(scriptpath): - if '.svn' in dn: - dn.remove('.svn') - if '_svn' in dn: - dn.remove('_svn') - if '__pycache__' in dn: # py3.2 cache dir - dn.remove('__pycache__') - - dir = os.path.join(env['BF_INSTALLDIR'], VERSION) - dir += os.sep + os.path.basename(scriptpath) + dp[len(scriptpath):] - - source=[os.path.join(dp, f) for f in df if not f.endswith(".pyc")] - # To ensure empty dirs are created too - if len(source)==0: - env.Execute(Mkdir(dir)) - scriptinstall.append(env.Install(dir=dir,source=source)) - - if env['WITH_BF_INTERNATIONAL']: - internationalpaths=['release' + os.sep + 'datafiles'] - - def check_path(path, member): - return (member in path.split(os.sep)) - - for intpath in internationalpaths: - for dp, dn, df in os.walk(intpath): - if '.svn' in dn: - dn.remove('.svn') - if '_svn' in dn: - dn.remove('_svn') - - # we only care about release/datafiles/fonts, release/datafiles/locales - if check_path(dp, "fonts") or check_path(dp, "locale"): - pass - else: - continue - - dir = os.path.join(env['BF_INSTALLDIR'], VERSION) - dir += os.sep + os.path.basename(intpath) + dp[len(intpath):] - - source=[os.path.join(dp, f) for f in df if not f.endswith(".pyc")] - # To ensure empty dirs are created too - if len(source)==0: - env.Execute(Mkdir(dir)) - scriptinstall.append(env.Install(dir=dir,source=source)) + source=[os.path.join(dp, f) for f in df if not f.endswith(".pyc")] + # To ensure empty dirs are created too + if len(source)==0: + env.Execute(Mkdir(dir)) + scriptinstall.append(env.Install(dir=dir,source=source)) #-- icons if env['OURPLATFORM']=='linux': diff --git a/build_files/scons/config/linux-config.py b/build_files/scons/config/linux-config.py index a26748cd8dc..4bc64cb5f13 100644 --- a/build_files/scons/config/linux-config.py +++ b/build_files/scons/config/linux-config.py @@ -97,7 +97,6 @@ BF_BULLET_LIB = 'extern_bullet' BF_FREETYPE = '/usr' BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' BF_FREETYPE_LIB = 'freetype' -#WITH_BF_FREETYPE_STATIC = True #BF_FREETYPE_LIB_STATIC = '${BF_FREETYPE}/lib/libfreetype.a' WITH_BF_QUICKTIME = False # -DWITH_QUICKTIME diff --git a/build_files/scons/tools/btools.py b/build_files/scons/tools/btools.py index fe56d40ea56..49efa598ed8 100644 --- a/build_files/scons/tools/btools.py +++ b/build_files/scons/tools/btools.py @@ -118,7 +118,7 @@ def validate_arguments(args, bc): 'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH', 'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'WITH_BF_ELTOPO', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB', 'BF_WINTAB', 'BF_WINTAB_INC', - 'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', 'BF_FREETYPE_LIB_STATIC', 'WITH_BF_FREETYPE_STATIC', + 'BF_FREETYPE', 'BF_FREETYPE_INC', 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', 'BF_FREETYPE_LIB_STATIC', 'WITH_BF_FREETYPE_STATIC', 'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH', 'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', 'WITH_BF_STATICFFTW3', 'BF_FFTW3_LIB_STATIC', 'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC', @@ -385,7 +385,6 @@ def read_opts(env, cfg, args): (BoolVariable('WITH_BF_STATICCXX', 'static link to stdc++', False)), ('BF_CXX_LIB_STATIC', 'static library path for stdc++', ''), - (BoolVariable('WITH_BF_FREETYPE', 'Use FreeType2 if true', True)), ('BF_FREETYPE', 'Freetype base path', ''), ('BF_FREETYPE_INC', 'Freetype include path', ''), ('BF_FREETYPE_LIB', 'Freetype library', ''), diff --git a/po/README.txt b/po/README.txt index cadcb7194e8..6e634ae5ee3 100644 --- a/po/README.txt +++ b/po/README.txt @@ -16,7 +16,7 @@ This means when string "some message id" is used as operator name, tooltip, menu and so it'll be displayed on the screen as "translation for this message". Pretty simple. -This source files are pre-compiled into ../release/bin/.blender/locale//LC_MESSAGES/blender.mo, +This source files are pre-compiled into ../release/datafiles/locale//LC_MESSAGES/blender.mo, so they aren't getting compiled every time Blender is compiling to save some time and prevent failure on systems which don't have needed tools for compiling .po files. diff --git a/release/bin/.blender/.bfont.ttf b/release/bin/.blender/.bfont.ttf deleted file mode 100644 index 58cd6b5e61eff273e920942e28041f8ddcf1e1b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65932 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

B-* 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 Date: Fri, 21 Oct 2011 04:23:26 +0000 Subject: [PATCH 098/119] cleanup scons build flags, many duplicates because because of confusion between CFLAGS/CPPFLAGS/CCFLAGS/CXXFLAGS, devs would set multiple to be on the safe side. - defines go in CPPFLAGS - C & C++ flags go in CCFLAGS - CFLAGS / CXXFLAGS are C OR C++ only. also commented intended ghost unicode/ascii usage. --- SConstruct | 15 ++--------- .../buildbot/config/user-config-i686.py | 5 ++-- .../config/user-config-player-i686.py | 5 ++-- .../config/user-config-player-x86_64.py | 5 ++-- .../buildbot/config/user-config-x86_64.py | 5 ++-- build_files/scons/config/aix4-config.py | 14 +++++----- build_files/scons/config/darwin-config.py | 26 +++++++++---------- build_files/scons/config/freebsd7-config.py | 5 ++-- build_files/scons/config/freebsd8-config.py | 5 ++-- build_files/scons/config/freebsd9-config.py | 5 ++-- build_files/scons/config/linux-config.py | 5 ++-- build_files/scons/config/linuxcross-config.py | 5 ++-- build_files/scons/config/openbsd3-config.py | 5 ++-- build_files/scons/config/sunos5-config.py | 5 ++-- .../scons/config/win32-mingw-config.py | 5 ++-- build_files/scons/config/win32-vc-config.py | 4 +-- build_files/scons/config/win64-vc-config.py | 4 +-- intern/ghost/GHOST_Types.h | 11 ++++++++ 18 files changed, 73 insertions(+), 61 deletions(-) diff --git a/SConstruct b/SConstruct index 606cc33fb20..aeaef581145 100644 --- a/SConstruct +++ b/SConstruct @@ -30,7 +30,6 @@ # Then read all SConscripts and build # # TODO: fix /FORCE:MULTIPLE on windows to get proper debug builds. -# TODO: cleanup CCFLAGS / CPPFLAGS use, often both are set when we only need one. import platform as pltfrm @@ -210,7 +209,7 @@ opts.Update(env) if sys.platform=='win32': if bitness==64: - env.Append(CFLAGS=['-DWIN64']) # -DWIN32 needed too, as it's used all over to target Windows generally + env.Append(CPPFLAGS=['-DWIN64']) # -DWIN32 needed too, as it's used all over to target Windows generally if not env['BF_FANCY']: B.bc.disable() @@ -283,22 +282,17 @@ if env['OURPLATFORM']=='darwin': if env['WITH_BF_OPENMP'] == 1: if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): env['CCFLAGS'].append('/openmp') - env['CPPFLAGS'].append('/openmp') else: if env['CC'].endswith('icc'): # to be able to handle CC=/opt/bla/icc case env.Append(LINKFLAGS=['-openmp', '-static-intel']) env['CCFLAGS'].append('-openmp') - env['CPPFLAGS'].append('-openmp') else: env.Append(CCFLAGS=['-fopenmp']) - env.Append(CPPFLAGS=['-fopenmp']) if env['WITH_GHOST_COCOA'] == True: - env.Append(CFLAGS=['-DGHOST_COCOA']) - env.Append(CPPFLAGS=['-DGHOST_COCOA']) + env.Append(CPPFLAGS=['-DGHOST_COCOA']) if env['USE_QTKIT'] == True: - env.Append(CFLAGS=['-DUSE_QTKIT']) env.Append(CPPFLAGS=['-DUSE_QTKIT']) #check for additional debug libnames @@ -330,20 +324,15 @@ if 'blendernogame' in B.targets: # disable elbeem (fluidsim) compilation? if env['BF_NO_ELBEEM'] == 1: env['CPPFLAGS'].append('-DDISABLE_ELBEEM') - env['CCFLAGS'].append('-DDISABLE_ELBEEM') if btools.ENDIAN == "big": env['CPPFLAGS'].append('-D__BIG_ENDIAN__') - env['CCFLAGS'].append('-D__BIG_ENDIAN__') else: env['CPPFLAGS'].append('-D__LITTLE_ENDIAN__') - env['CCFLAGS'].append('-D__LITTLE_ENDIAN__') - # TODO, make optional env['CPPFLAGS'].append('-DWITH_AUDASPACE') -env['CCFLAGS'].append('-DWITH_AUDASPACE') # lastly we check for root_build_dir ( we should not do before, otherwise we might do wrong builddir B.root_build_dir = env['BF_BUILDDIR'] diff --git a/build_files/buildbot/config/user-config-i686.py b/build_files/buildbot/config/user-config-i686.py index f2197a05501..080fd8d6123 100644 --- a/build_files/buildbot/config/user-config-i686.py +++ b/build_files/buildbot/config/user-config-i686.py @@ -94,6 +94,7 @@ WITH_BF_JACK = True # Compilation and optimization BF_DEBUG = False -REL_CFLAGS = ['-O2'] -REL_CCFLAGS = ['-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] +REL_CCFLAGS = ['-O2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib32'] diff --git a/build_files/buildbot/config/user-config-player-i686.py b/build_files/buildbot/config/user-config-player-i686.py index 99671ecc072..204732376fa 100644 --- a/build_files/buildbot/config/user-config-player-i686.py +++ b/build_files/buildbot/config/user-config-player-i686.py @@ -85,6 +85,7 @@ WITH_BF_JACK = True # Compilation and optimization BF_DEBUG = False -REL_CFLAGS = ['-O2'] -REL_CCFLAGS = ['-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] +REL_CCFLAGS = ['-O2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib32'] diff --git a/build_files/buildbot/config/user-config-player-x86_64.py b/build_files/buildbot/config/user-config-player-x86_64.py index a1ca38880eb..cc0ba209a44 100644 --- a/build_files/buildbot/config/user-config-player-x86_64.py +++ b/build_files/buildbot/config/user-config-player-x86_64.py @@ -85,6 +85,7 @@ WITH_BF_JACK = True # Compilation and optimization BF_DEBUG = False -REL_CFLAGS = ['-O2'] -REL_CCFLAGS = ['-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] +REL_CCFLAGS = ['-O2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib64'] diff --git a/build_files/buildbot/config/user-config-x86_64.py b/build_files/buildbot/config/user-config-x86_64.py index 93fe3ca2e5b..4698ffdce15 100644 --- a/build_files/buildbot/config/user-config-x86_64.py +++ b/build_files/buildbot/config/user-config-x86_64.py @@ -94,6 +94,7 @@ WITH_BF_JACK = True # Compilation and optimization BF_DEBUG = False -REL_CFLAGS = ['-O2'] -REL_CCFLAGS = ['-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] +REL_CCFLAGS = ['-O2'] # C & C++ PLATFORM_LINKFLAGS = ['-L/home/sources/staticlibs/lib64'] diff --git a/build_files/scons/config/aix4-config.py b/build_files/scons/config/aix4-config.py index f8b3e750e74..618190884ac 100644 --- a/build_files/scons/config/aix4-config.py +++ b/build_files/scons/config/aix4-config.py @@ -156,15 +156,17 @@ BF_OPENGL_LIB_STATIC = '${BF_OPENGL}/libGL.a ${BF_OPENGL}/libGLU.a ${BF_OPENGL}/ CC = 'gcc' CXX = 'g++' -CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] +CCFLAGS = ['-pipe', '-funsigned-char', '-fno-strict-aliasing'] -CPPFLAGS = [ '-DXP_UNIX', '-DWIN32', '-DFREE_WINDOWS' ] -CXXFLAGS = ['-pipe', '-funsigned-char', '-fno-strict-aliasing' ] -REL_CFLAGS = ['-DNDEBUG', '-O2' ] +CPPFLAGS = ['-DXP_UNIX', '-DWIN32', '-DFREE_WINDOWS'] +CXXFLAGS = [] + +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2' ] -C_WARN = [ '-Wall' , '-Wno-char-subscripts', '-Wdeclaration-after-statement' ] -CC_WARN = [ '-Wall' ] +C_WARN = ['-Wall' , '-Wno-char-subscripts', '-Wdeclaration-after-statement'] +CC_WARN = ['-Wall'] diff --git a/build_files/scons/config/darwin-config.py b/build_files/scons/config/darwin-config.py index 0c132041d82..deb3d01febd 100644 --- a/build_files/scons/config/darwin-config.py +++ b/build_files/scons/config/darwin-config.py @@ -306,11 +306,11 @@ if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'ppc64': else: ARCH_FLAGS = ['-m32'] -CFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS +CFLAGS = [] +CXXFLAGS = [] +CCFLAGS = ['-pipe','-funsigned-char'] -CPPFLAGS = []+ARCH_FLAGS -CCFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS -CXXFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS +CPPFLAGS = list(ARCH_FLAGS) if WITH_GHOST_COCOA: PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Cocoa','-framework','Carbon','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']+ARCH_FLAGS @@ -336,9 +336,8 @@ else: # some flags shuffling for different OS versions if MAC_MIN_VERS == '10.3': - CFLAGS = ['-fuse-cxa-atexit']+CFLAGS - CXXFLAGS = ['-fuse-cxa-atexit']+CXXFLAGS - PLATFORM_LINKFLAGS = ['-fuse-cxa-atexit']+PLATFORM_LINKFLAGS + CCFLAGS = ['-fuse-cxa-atexit'] + CFLAGS + PLATFORM_LINKFLAGS = ['-fuse-cxa-atexit'] + PLATFORM_LINKFLAGS LLIBS.append('crt3.o') if USE_SDK: @@ -349,19 +348,18 @@ if USE_SDK: #Intel Macs are CoreDuo and Up if MACOSX_ARCHITECTURE == 'i386' or MACOSX_ARCHITECTURE == 'x86_64': - REL_CFLAGS = ['-DNDEBUG', '-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mfpmath=sse'] + REL_CFLAGS = [] + REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mfpmath=sse'] else: - CFLAGS = CFLAGS+['-fno-strict-aliasing'] - CCFLAGS = CCFLAGS+['-fno-strict-aliasing'] - CXXFLAGS = CXXFLAGS+['-fno-strict-aliasing'] - REL_CFLAGS = ['-DNDEBUG', '-O2'] + CCFLAGS += ['-fno-strict-aliasing'] + REL_CFLAGS = [] + REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] # Intel 64bit Macs are Core2Duo and up if MACOSX_ARCHITECTURE == 'x86_64': - REL_CFLAGS = REL_CFLAGS+['-march=core2','-mssse3','-with-tune=core2','-enable-threads'] - REL_CCFLAGS = REL_CCFLAGS+['-march=core2','-mssse3','-with-tune=core2','-enable-threads'] + REL_CCFLAGS += ['-march=core2','-mssse3','-with-tune=core2','-enable-threads'] CC_WARN = ['-Wall'] C_WARN = ['-Wno-char-subscripts', '-Wpointer-arith', '-Wcast-align', '-Wdeclaration-after-statement', '-Wno-unknown-pragmas', '-Wstrict-prototypes'] diff --git a/build_files/scons/config/freebsd7-config.py b/build_files/scons/config/freebsd7-config.py index fec7531b3c7..eb7d7c9de57 100644 --- a/build_files/scons/config/freebsd7-config.py +++ b/build_files/scons/config/freebsd7-config.py @@ -172,11 +172,12 @@ BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] CPPFLAGS = [] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] +CXXFLAGS = [] if WITH_BF_FFMPEG: # libavutil needs UINT64_C() CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/freebsd8-config.py b/build_files/scons/config/freebsd8-config.py index eea89bf24ff..451d22455e0 100644 --- a/build_files/scons/config/freebsd8-config.py +++ b/build_files/scons/config/freebsd8-config.py @@ -172,11 +172,12 @@ BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] CPPFLAGS = [] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] +CXXFLAGS = [] if WITH_BF_FFMPEG: # libavutil needs UINT64_C() CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/freebsd9-config.py b/build_files/scons/config/freebsd9-config.py index a63da6e35f9..2ce6ec7ce33 100644 --- a/build_files/scons/config/freebsd9-config.py +++ b/build_files/scons/config/freebsd9-config.py @@ -170,13 +170,14 @@ WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread'] CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] +CXXFLAGS = [] CPPFLAGS = [] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE','-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] if WITH_BF_FFMPEG: # libavutil needs UINT64_C() CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/linux-config.py b/build_files/scons/config/linux-config.py index 4bc64cb5f13..91f86ae7e80 100644 --- a/build_files/scons/config/linux-config.py +++ b/build_files/scons/config/linux-config.py @@ -199,15 +199,16 @@ CXX = 'g++' ## CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] +CXXFLAGS = [] CPPFLAGS = [] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64','-D_LARGEFILE64_SOURCE'] # g++ 4.6, only needed for bullet CXXFLAGS += ['-fpermissive'] if WITH_BF_FFMPEG: # libavutil needs UINT64_C() CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/linuxcross-config.py b/build_files/scons/config/linuxcross-config.py index 070e18a5af0..f6f72cd32d5 100644 --- a/build_files/scons/config/linuxcross-config.py +++ b/build_files/scons/config/linuxcross-config.py @@ -170,10 +170,11 @@ WITH_BF_RAYOPTIMIZATION = True BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse'] CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] +CXXFLAGS = [] CPPFLAGS = ['-DWIN32', '-DFREE_WINDOWS', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE'] -CXXFLAGS = ['-pipe', '-funsigned-char', '-fno-strict-aliasing' ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] C_WARN = ['-Wall', '-Wstrict-prototypes', '-Wno-char-subscripts', '-Wdeclaration-after-statement'] diff --git a/build_files/scons/config/openbsd3-config.py b/build_files/scons/config/openbsd3-config.py index 83c515d52f3..34e727555a3 100644 --- a/build_files/scons/config/openbsd3-config.py +++ b/build_files/scons/config/openbsd3-config.py @@ -116,8 +116,9 @@ CFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] CPPFLAGS = [] CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +CXXFLAGS = [] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/sunos5-config.py b/build_files/scons/config/sunos5-config.py index 0cf78c9220f..74647fccca1 100644 --- a/build_files/scons/config/sunos5-config.py +++ b/build_files/scons/config/sunos5-config.py @@ -132,8 +132,9 @@ CXX = 'g++' CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] CPPFLAGS = ['-DSUN_OGL_NO_VERTEX_MACROS'] -CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +CXXFLAGS = [] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] ##BF_DEPEND = True ## diff --git a/build_files/scons/config/win32-mingw-config.py b/build_files/scons/config/win32-mingw-config.py index 167ed502bf6..f210ab436b5 100644 --- a/build_files/scons/config/win32-mingw-config.py +++ b/build_files/scons/config/win32-mingw-config.py @@ -159,10 +159,11 @@ CC = 'gcc' CXX = 'g++' CCFLAGS = [ '-pipe', '-funsigned-char', '-fno-strict-aliasing' ] +CXXFLAGS = [] CPPFLAGS = ['-DWIN32', '-DFREE_WINDOWS', '-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE64_SOURCE'] -CXXFLAGS = ['-pipe', '-funsigned-char', '-fno-strict-aliasing' ] -REL_CFLAGS = ['-DNDEBUG', '-O2'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-DNDEBUG', '-O2'] C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement', '-Wstrict-prototypes'] diff --git a/build_files/scons/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py index 9604eb5d320..ec37b3046c8 100644 --- a/build_files/scons/config/win32-vc-config.py +++ b/build_files/scons/config/win32-vc-config.py @@ -171,9 +171,9 @@ BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast', '/arch:SSE'] BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr'] CPPFLAGS = ['-DWIN32','-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE'] -REL_CFLAGS = ['-O2', '-DNDEBUG'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-O2', '-DNDEBUG'] -REL_CXXFLAGS = ['-O2', '-DNDEBUG'] C_WARN = [] CC_WARN = [] diff --git a/build_files/scons/config/win64-vc-config.py b/build_files/scons/config/win64-vc-config.py index 049b7eb5d40..afa64e03e80 100644 --- a/build_files/scons/config/win64-vc-config.py +++ b/build_files/scons/config/win64-vc-config.py @@ -175,9 +175,9 @@ BGE_CXXFLAGS = ['/O2', '/EHsc', '/GR', '/fp:fast'] BF_DEBUG_CCFLAGS = ['/Zi', '/FR${TARGET}.sbr', '/Od'] CPPFLAGS = ['-DWIN32', '-D_CONSOLE', '-D_LIB', '-D_CRT_SECURE_NO_DEPRECATE'] -REL_CFLAGS = ['-O2', '-DNDEBUG'] +REL_CFLAGS = [] +REL_CXXFLAGS = [] REL_CCFLAGS = ['-O2', '-DNDEBUG'] -REL_CXXFLAGS = ['-O2', '-DNDEBUG'] C_WARN = [] CC_WARN = [] diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h index 78fc3f69c7a..2b5e96a1bf7 100644 --- a/intern/ghost/GHOST_Types.h +++ b/intern/ghost/GHOST_Types.h @@ -466,8 +466,19 @@ typedef struct { typedef struct { /** The key code. */ GHOST_TKey key; + + /* ascii / utf8: both should always be set when possible, + * - ascii may be '\0' however if the user presses a non ascii key + * - unicode may not be set if the system has no unicode support + * + * These values are intended to be used as follows. + * For text input use unicode when available, fallback to ascii. + * For areas where unicode is not needed, number input for example, always + * use ascii, unicode is ignored - campbell. + */ /** The ascii code for the key event ('\0' if none). */ char ascii; + /** The unicode character. if the length is 6, not NULL terminated if all 6 are set */ char utf8_buf[6]; } GHOST_TEventKeyData; From 5efcf9bd1f187740744834b5334b3daf20697cf1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 04:26:48 +0000 Subject: [PATCH 099/119] remove scons files for unsupported/obscure unix variants, these configs are not maintained (aix defined FREE_WINDOWS for example and nobody noticed), and CMake builds on OpenBSD/NetBSD with no manual configuration. --- build_files/scons/config/aix4-config.py | 211 -------------------- build_files/scons/config/irix6-config.py | 0 build_files/scons/config/openbsd3-config.py | 149 -------------- build_files/scons/config/sunos5-config.py | 166 --------------- 4 files changed, 526 deletions(-) delete mode 100644 build_files/scons/config/aix4-config.py delete mode 100644 build_files/scons/config/irix6-config.py delete mode 100644 build_files/scons/config/openbsd3-config.py delete mode 100644 build_files/scons/config/sunos5-config.py diff --git a/build_files/scons/config/aix4-config.py b/build_files/scons/config/aix4-config.py deleted file mode 100644 index 618190884ac..00000000000 --- a/build_files/scons/config/aix4-config.py +++ /dev/null @@ -1,211 +0,0 @@ -import os - -LCGDIR = os.getcwd()+"/../lib/aix-4.3-ppc" -LIBDIR = LCGDIR -print LCGDIR - -WITH_BF_VERSE = 'false' -BF_VERSE_INCLUDE = "#extern/verse/dist" - -BF_PYTHON = LCGDIR+'/python' -BF_PYTHON_VERSION = '3.2' -WITH_BF_STATICPYTHON = 'true' -BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}' -BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}' -BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}' #BF_PYTHON+'/lib/python'+BF_PYTHON_VERSION+'/config/libpython'+BF_PYTHON_VERSION+'.a' -BF_PYTHON_LINKFLAGS = ['-Xlinker', '-export-dynamic'] -BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/python${BF_PYTHON_VERSION}/config/libpython${BF_PYTHON_VERSION}.a' - -WITH_BF_OPENAL = 'false' -WITH_BF_STATICOPENAL = 'false' -BF_OPENAL = LCGDIR+'/openal' -BF_OPENAL_INC = '${BF_OPENAL}/include' -BF_OPENAL_LIB = 'openal' -BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a' -BF_OPENAL_LIBPATH = LIBDIR + '/lib' - -BF_CXX = '/usr' -WITH_BF_STATICCXX = 'false' -BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a' - -WITH_BF_SDL = 'false' -BF_SDL = LCGDIR+'/sdl' #$(shell sdl-config --prefix) -BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags) -BF_SDL_LIB = 'SDL audio iconv charset' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer -BF_SDL_LIBPATH = '${BF_SDL}/lib' - -WITH_BF_OPENEXR = 'false' -WITH_BF_STATICOPENEXR = 'false' -BF_OPENEXR = '/usr' -# when compiling with your own openexr lib you might need to set... -# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include' - -BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR' -BF_OPENEXR_LIB = 'Half IlmImf Iex Imath ' -BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a' -# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' - - -WITH_BF_DDS = 'false' - -WITH_BF_JPEG = 'false' -BF_JPEG = LCGDIR+'/jpeg' -BF_JPEG_INC = '${BF_JPEG}/include' -BF_JPEG_LIB = 'jpeg' -BF_JPEG_LIBPATH = '${BF_JPEG}/lib' - -WITH_BF_PNG = 'false' -BF_PNG = LCGDIR+"/png" -BF_PNG_INC = '${BF_PNG}/include' -BF_PNG_LIB = 'png' -BF_PNG_LIBPATH = '${BF_PNG}/lib' - -BF_TIFF = '/usr/nekoware' -BF_TIFF_INC = '${BF_TIFF}/include' - -WITH_BF_ZLIB = 'true' -BF_ZLIB = LCGDIR+"/zlib" -BF_ZLIB_INC = '${BF_ZLIB}/include' -BF_ZLIB_LIB = 'z' -BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' - -WITH_BF_INTERNATIONAL = 'false' - -BF_GETTEXT = LCGDIR+'/gettext' -BF_GETTEXT_INC = '${BF_GETTEXT}/include' -BF_GETTEXT_LIB = 'gettextpo intl' -BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' - -WITH_BF_GAMEENGINE='false' - -WITH_BF_BULLET = 'true' -BF_BULLET = '#extern/bullet2/src' -BF_BULLET_INC = '${BF_BULLET}' -BF_BULLET_LIB = 'extern_bullet' - -#WITH_BF_NSPR = 'true' -#BF_NSPR = $(LIBDIR)/nspr -#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr -#BF_NSPR_LIB = - -# Uncomment the following line to use Mozilla inplace of netscape -#CPPFLAGS += -DMOZ_NOT_NET -# Location of MOZILLA/Netscape header files... -#BF_MOZILLA = $(LIBDIR)/mozilla -#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl -#BF_MOZILLA_LIB = -# Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB -# if this is not set. -# -# Be paranoid regarding library creation (do not update archives) -#BF_PARANOID = 'true' - -# enable freetype2 support for text objects -BF_FREETYPE = LCGDIR+'/freetype' -BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' -BF_FREETYPE_LIB = 'freetype' -BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' - -WITH_BF_QUICKTIME = 'false' # -DWITH_QUICKTIME -BF_QUICKTIME = '/usr/local' -BF_QUICKTIME_INC = '${BF_QUICKTIME}/include' - -WITH_BF_ICONV = 'false' -BF_ICONV = LIBDIR + "/iconv" -BF_ICONV_INC = '${BF_ICONV}/include' -BF_ICONV_LIB = 'iconv charset' -BF_ICONV_LIBPATH = '${BF_ICONV}/lib' - -WITH_BF_BINRELOC = 'false' - -# enable ffmpeg support -WITH_BF_FFMPEG = 'false' # -DWITH_FFMPEG -# Uncomment the following two lines to use system's ffmpeg -BF_FFMPEG = LCGDIR+'/ffmpeg' -BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice faad faac vorbis x264 ogg mp3lame z' -BF_FFMPEG_INC = '${BF_FFMPEG}/include' -BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib' - -# enable ogg, vorbis and theora in ffmpeg -WITH_BF_OGG = 'false' # -DWITH_OGG -BF_OGG = '/usr' -BF_OGG_INC = '${BF_OGG}/include' -BF_OGG_LIB = 'ogg vorbis theoraenc theoradec' - -WITH_BF_OPENJPEG = 'false' -BF_OPENJPEG = '#extern/libopenjpeg' -BF_OPENJPEG_LIB = '' -BF_OPENJPEG_INC = '${BF_OPENJPEG}' -BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib' - -WITH_BF_REDCODE = 'false' -BF_REDCODE = '#extern/libredcode' -BF_REDCODE_LIB = '' -BF_REDCODE_INC = '${BF_REDCODE}/include' -BF_REDCODE_LIBPATH='${BF_REDCODE}/lib' - -# Mesa Libs should go here if your using them as well.... -WITH_BF_STATICOPENGL = 'false' -BF_OPENGL = '/usr' -BF_OPENGL_INC = '${BF_OPENGL}/include' -BF_OPENGL_LIB = 'GL GLU X11 Xi Xext' -BF_OPENGL_LIBPATH = '/usr/X11R6/lib' -BF_OPENGL_LIB_STATIC = '${BF_OPENGL}/libGL.a ${BF_OPENGL}/libGLU.a ${BF_OPENGL}/libXxf86vm.a ${BF_OPENGL}/libX11.a ${BF_OPENGL}/libXi.a ${BF_OPENGL}/libXext.a ${BF_OPENGL}/libXxf86vm.a' - - -CC = 'gcc' -CXX = 'g++' - -CCFLAGS = ['-pipe', '-funsigned-char', '-fno-strict-aliasing'] - -CPPFLAGS = ['-DXP_UNIX', '-DWIN32', '-DFREE_WINDOWS'] -CXXFLAGS = [] - -REL_CFLAGS = [] -REL_CXXFLAGS = [] -REL_CCFLAGS = ['-DNDEBUG', '-O2' ] - -C_WARN = ['-Wall' , '-Wno-char-subscripts', '-Wdeclaration-after-statement'] -CC_WARN = ['-Wall'] - - - -##BF_DEPEND = 'true' -## -##AR = ar -##ARFLAGS = ruv -##ARFLAGSQUIET = ru -## - -##FIX_STUBS_WARNINGS = -Wno-unused - -LLIBS = 'c m dl pthread dmedia movie' -##LOPTS = --dynamic -##DYNLDFLAGS = -shared $(LDFLAGS) - -BF_PROFILE_FLAGS = ['-pg','-g'] -BF_PROFILE = 'false' - -BF_DEBUG = 'false' -BF_DEBUG_CCFLAGS = ['-g'] - -BF_BUILDDIR = '../build/aix4' -BF_INSTALLDIR='../install/aix4' -BF_DOCDIR='../install/doc' - -#Link against pthread -LDIRS = [] -LDIRS.append(BF_FREETYPE_LIBPATH) -LDIRS.append(BF_PNG_LIBPATH) -LDIRS.append(BF_ZLIB_LIBPATH) -LDIRS.append(BF_SDL_LIBPATH) -LDIRS.append(BF_OPENAL_LIBPATH) -LDIRS.append(BF_ICONV_LIBPATH) - -PLATFORM_LINKFLAGS = [] -for x in LDIRS: - PLATFORM_LINKFLAGS.append("-L"+x) - -PLATFORM_LINKFLAGS += ['-L${LCGDIR}/jpeg/lib' , '-L/usr/lib32', '-n32', '-v', '-no_prelink'] -print PLATFORM_LINKFLAGS -LINKFLAGS= PLATFORM_LINKFLAGS diff --git a/build_files/scons/config/irix6-config.py b/build_files/scons/config/irix6-config.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/build_files/scons/config/openbsd3-config.py b/build_files/scons/config/openbsd3-config.py deleted file mode 100644 index 34e727555a3..00000000000 --- a/build_files/scons/config/openbsd3-config.py +++ /dev/null @@ -1,149 +0,0 @@ -LCGDIR = '../lib/openbsd3' -LIBDIR = '${LCGDIR}' - -BF_PYTHON = '/usr/local' -BF_PYTHON_VERSION = '3.2' -BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}' -BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}' -BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}' -BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib/python${BF_PYTHON_VERSION}/config' - -WITH_BF_OPENAL = False -# WITH_BF_STATICOPENAL = False -#BF_OPENAL = LIBDIR + '/openal' -#BF_OPENAL_INC = '${BF_OPENAL}/include' -#BF_OPENAL_LIB = 'openal' -#BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' -#BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a' - -WITH_BF_SDL = True -BF_SDL = '/usr/local' #$(shell sdl-config --prefix) -BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags) -BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer -BF_SDL_LIBPATH = '${BF_SDL}/lib' - -WITH_BF_OPENEXR = False -WITH_BF_STATICOPENEXR = False -BF_OPENEXR = '/usr/local' -BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR' -BF_OPENEXR_LIB = 'Half IlmImf Iex Imath ' -# Warning, this static lib configuration is untested! users of this OS please confirm. -BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a' - -WITH_BF_DDS = True - -WITH_BF_JPEG = True -BF_JPEG = '/usr/local' -BF_JPEG_INC = '${BF_JPEG}/include' -BF_JPEG_LIB = 'jpeg' -BF_JPEG_LIBPATH = '${BF_JPEG}/lib' - -WITH_BF_PNG = True -BF_PNG = '/usr/local' -BF_PNG_INC = '${BF_PNG}/include/libpng' -BF_PNG_LIB = 'png' -BF_PNG_LIBPATH = '${BF_PNG}/lib' - -BF_TIFF = '/usr/local' -BF_TIFF_INC = '${BF_TIFF}/include' - -WITH_BF_ZLIB = True -BF_ZLIB = '/usr/local' -BF_ZLIB_INC = '${BF_ZLIB}/include' -BF_ZLIB_LIB = 'z' - -WITH_BF_INTERNATIONAL = True - -BF_GETTEXT = '/usr/local' -BF_GETTEXT_INC = '${BF_GETTEXT}/include' -BF_GETTEXT_LIB = 'intl iconv' -BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' - -WITH_BF_GAMEENGINE=False -WITH_BF_PLAYER = False - -WITH_BF_BULLET = True -BF_BULLET = '#extern/bullet2/src' -BF_BULLET_INC = '${BF_BULLET}' -BF_BULLET_LIB = 'extern_bullet' - -#WITH_BF_NSPR = True -#BF_NSPR = $(LIBDIR)/nspr -#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr -#BF_NSPR_LIB = - -# Uncomment the following line to use Mozilla inplace of netscape -#CPPFLAGS += -DMOZ_NOT_NET -# Location of MOZILLA/Netscape header files... -#BF_MOZILLA = $(LIBDIR)/mozilla -#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl -#BF_MOZILLA_LIB = -# Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB -# if this is not set. -# -# Be paranoid regarding library creation (do not update archives) -#BF_PARANOID = True - -# enable freetype2 support for text objects -BF_FREETYPE = '/usr/X11R6' -BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' -BF_FREETYPE_LIB = 'freetype' -BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' - -WITH_BF_QUICKTIME = False # -DWITH_QUICKTIME - -WITH_BF_ICONV = False -BF_ICONV = LIBDIR + "/iconv" -BF_ICONV_INC = '${BF_ICONV}/include' -BF_ICONV_LIB = 'iconv' -BF_ICONV_LIBPATH = '${BF_ICONV}/lib' - -# Mesa Libs should go here if your using them as well.... -WITH_BF_STATICOPENGL = True -BF_OPENGL = '/usr/X11R6' -BF_OPENGL_INC = '${BF_OPENGL}/include' -BF_OPENGL_LIB = 'GL GLU X11 Xi' -BF_OPENGL_LIBPATH = '${BF_OPENGL}/lib' -BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a' - -## -##CC = gcc -##CCC = g++ -##ifeq ($CPU),alpha) -## CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee - -CFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] - -CPPFLAGS = [] -CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] -CXXFLAGS = [] -REL_CFLAGS = [] -REL_CXXFLAGS = [] -REL_CCFLAGS = ['-DNDEBUG', '-O2'] -##BF_DEPEND = True -## -##AR = ar -##ARFLAGS = ruv -##ARFLAGSQUIET = ru -## -CC = 'gcc' -CXX = 'g++' -C_WARN = ['-Wdeclaration-after-statement', '-Wstrict-prototypes'] - -CC_WARN = ['-Wall'] - -##FIX_STUBS_WARNINGS = -Wno-unused - -LLIBS = ['m', 'stdc++', 'pthread', 'util'] -##LOPTS = --dynamic -##DYNLDFLAGS = -shared $(LDFLAGS) - -BF_PROFILE = False -BF_PROFILE_CCFLAGS = ['-pg','-g'] -BF_PROFILE_LINKFLAGS = ['-pg'] - -BF_DEBUG = False -BF_DEBUG_CCFLAGS = ['-g', '-D_DEBUG'] - -BF_BUILDDIR='../build/openbsd3' -BF_INSTALLDIR='../install/openbsd3' diff --git a/build_files/scons/config/sunos5-config.py b/build_files/scons/config/sunos5-config.py deleted file mode 100644 index 74647fccca1..00000000000 --- a/build_files/scons/config/sunos5-config.py +++ /dev/null @@ -1,166 +0,0 @@ -LCGDIR = '../lib/sunos5' -LIBDIR = '${LCGDIR}' - -BF_PYTHON = '/usr/local' -BF_PYTHON_VERSION = '3.2' -BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}' -BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}' -BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}' #BF_PYTHON+'/lib/python'+BF_PYTHON_VERSION+'/config/libpython'+BF_PYTHON_VERSION+'.a' -BF_PYTHON_LINKFLAGS = ['-Xlinker', '-export-dynamic'] - -WITH_BF_OPENAL = True -WITH_BF_STATICOPENAL = False -BF_OPENAL = '/usr/local' -BF_OPENAL_INC = '${BF_OPENAL}/include' -BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' -BF_OPENAL_LIB = 'openal' -# Warning, this static lib configuration is untested! users of this OS please confirm. -BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a' - -# Warning, this static lib configuration is untested! users of this OS please confirm. -BF_CXX = '/usr' -WITH_BF_STATICCXX = False -BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a' - -WITH_BF_SDL = True -BF_SDL = '/usr/local' #$(shell sdl-config --prefix) -BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags) -BF_SDL_LIBPATH = '${BF_SDL}/lib' -BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer - -WITH_BF_OPENEXR = True -WITH_BF_STATICOPENEXR = False -BF_OPENEXR = '/usr/local' -BF_OPENEXR_INC = ['${BF_OPENEXR}/include', '${BF_OPENEXR}/include/OpenEXR' ] -BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib' -BF_OPENEXR_LIB = 'Half IlmImf Iex Imath ' -# Warning, this static lib configuration is untested! users of this OS please confirm. -BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a' - -WITH_BF_DDS = True - -WITH_BF_JPEG = True -BF_JPEG = '/usr/local' -BF_JPEG_INC = '${BF_JPEG}/include' -BF_JPEG_LIBPATH = '${BF_JPEG}/lib' -BF_JPEG_LIB = 'jpeg' - -WITH_BF_PNG = True -BF_PNG = '/usr/local' -BF_PNG_INC = '${BF_PNG}/include' -BF_PNG_LIBPATH = '${BF_PNG}/lib' -BF_PNG_LIB = 'png' - -BF_TIFF = '/usr/local' -BF_TIFF_INC = '${BF_TIFF}/include' - -WITH_BF_ZLIB = True -BF_ZLIB = '/usr' -BF_ZLIB_INC = '${BF_ZLIB}/include' -BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib' -BF_ZLIB_LIB = 'z' - -WITH_BF_INTERNATIONAL = True - -BF_GETTEXT = '/usr/local' -BF_GETTEXT_INC = '${BF_GETTEXT}/include' -BF_GETTEXT_LIB = 'gettextlib' -BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib' - -WITH_BF_GAMEENGINE=False -WITH_BF_PLAYER = False - -WITH_BF_BULLET = True -BF_BULLET = '#extern/bullet2/src' -BF_BULLET_INC = '${BF_BULLET}' -BF_BULLET_LIB = 'extern_bullet' - -#WITH_BF_NSPR = True -#BF_NSPR = $(LIBDIR)/nspr -#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr -#BF_NSPR_LIB = - -# Uncomment the following line to use Mozilla inplace of netscape -#CPPFLAGS += -DMOZ_NOT_NET -# Location of MOZILLA/Netscape header files... -#BF_MOZILLA = $(LIBDIR)/mozilla -#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl -#BF_MOZILLA_LIB = -# Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB -# if this is not set. -# -# Be paranoid regarding library creation (do not update archives) -#BF_PARANOID = True - -# enable freetype2 support for text objects -BF_FREETYPE = '/usr/local' -BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' -BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' -BF_FREETYPE_LIB = 'freetype' - -WITH_BF_QUICKTIME = False # -DWITH_QUICKTIME -BF_QUICKTIME = '/usr/local' -BF_QUICKTIME_INC = '${BF_QUICKTIME}/include' - -WITH_BF_ICONV = True -BF_ICONV = "/usr" -BF_ICONV_INC = '${BF_ICONV}/include' -BF_ICONV_LIB = 'iconv' -BF_ICONV_LIBPATH = '${BF_ICONV}/lib' - -# enable ffmpeg support -WITH_BF_FFMPEG = True # -DWITH_FFMPEG -BF_FFMPEG = '/usr/local' -BF_FFMPEG_INC = '${BF_FFMPEG}/include' -BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib' -BF_FFMPEG_LIB = 'avformat avcodec avutil avdevice' - -# Mesa Libs should go here if your using them as well.... -WITH_BF_STATICOPENGL = False -BF_OPENGL = '/usr/openwin' -BF_OPENGL_INC = '${BF_OPENGL}/include' -BF_OPENGL_LIB = 'GL GLU X11 Xi' -BF_OPENGL_LIBPATH = '${BF_OPENGL}/lib' -BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a' - -## -CC = 'gcc' -CXX = 'g++' -##ifeq ($CPU),alpha) -## CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee - -CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing'] - -CPPFLAGS = ['-DSUN_OGL_NO_VERTEX_MACROS'] -CXXFLAGS = [] -REL_CFLAGS = [] -REL_CXXFLAGS = [] -REL_CCFLAGS = ['-DNDEBUG', '-O2'] -##BF_DEPEND = True -## -##AR = ar -##ARFLAGS = ruv -##ARFLAGSQUIET = ru -## -C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement'] - -CC_WARN = ['-Wall'] - -##FIX_STUBS_WARNINGS = -Wno-unused - -LLIBS = ['c', 'm', 'dl', 'pthread', 'stdc++'] -##LOPTS = --dynamic -##DYNLDFLAGS = -shared $(LDFLAGS) - -BF_PROFILE_CCFLAGS = ['-pg', '-g '] -BF_PROFILE_LINKFLAGS = ['-pg'] -BF_PROFILE = False - -BF_DEBUG = False -BF_DEBUG_CCFLAGS = ['-D_DEBUG'] - -BF_BUILDDIR = '../build/sunos5' -BF_INSTALLDIR='../install/sunos5' - - -PLATFORM_LINKFLAGS = [] From c22a1721e5064fba84a50239e62d53aaefa23d37 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 21 Oct 2011 06:36:01 +0000 Subject: [PATCH 100/119] Bugfix [#28967] Attempting to add a new pose to the Pose Library causes Blender 2.60 RC2 to crash This commit just rolls back part of r.40868, which was causing crashes when trying to treat id-property-groups as bpy.type.Property to access a special "rna_type" attribute added as part of said commit. The underlying Py-API voodoo here is far too evil (along with the myriad of ways of creating custom props) to work out an API fix for, but at least we don't get anymore crashes now. In tests here, this check even seems redundant! --- release/scripts/startup/keyingsets_builtins.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/release/scripts/startup/keyingsets_builtins.py b/release/scripts/startup/keyingsets_builtins.py index c7922a0dfa1..0e31601a4d7 100644 --- a/release/scripts/startup/keyingsets_builtins.py +++ b/release/scripts/startup/keyingsets_builtins.py @@ -364,12 +364,16 @@ class BUILTIN_KSI_WholeCharacter(KeyingSetInfo): if prop == "_RNA_UI": continue - # for now, just add all of 'em + # only do props which are marked as animatable, or those which are "numeric" types... prop_rna = type(bone).bl_rna.properties.get(prop, None) if prop_rna is None: prop_path = '["%s"]' % prop - if bone.path_resolve(prop_path, False).rna_type in prop_type_compat: - ksi.addProp(ks, bone, prop_path) + + # XXX: the check below from r.40868 causes crashes [#28967] on ID-prop groups, + # so let's just include everything (doing nothing breaks keying of Sintel face rig) + #if bone.path_resolve(prop_path, False).rna_type in prop_type_compat: + # ksi.addProp(ks, bone, prop_path) + ksi.addProp(ks, bone, prop_path) elif prop_rna.is_animatable: ksi.addProp(ks, bone, prop) From f9f5daed9bb0b1f239b3b3d3de7e6ff95b56e3d2 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 21 Oct 2011 06:45:08 +0000 Subject: [PATCH 101/119] disabling utf8 for OSX. It's not working 100% and it's breaking other things --- intern/ghost/intern/GHOST_SystemCocoa.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 1dfb8e36422..c3c0c591444 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1706,6 +1706,10 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) utf8_buf[0] = '\0'; } } + + /* XXX the above code gives us the right utf8, however if we pass it along Font Object doesn't work. + let's leave utf8 disabled for OSX before we fix that */ + utf8_buf[0] = '\0';//to be removed once things are working if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask)) break; //Cmd-Q is directly handled by Cocoa From 04db8ad282ec305ab61245b7556e15121d9cdcc5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 08:16:15 +0000 Subject: [PATCH 102/119] misc cleanup - remove redundant casts - replace strcmp's with "" to just check first char. - added WM_event_print(), debug mode only to print events since the structs values are not that meaningful. - added warnings if locale/font dirs cant be found. --- source/blender/blenfont/intern/blf_lang.c | 7 +- .../blender/blenfont/intern/blf_translation.c | 12 ++- source/blender/blenkernel/intern/key.c | 8 +- .../blender/blenkernel/intern/writeffmpeg.c | 11 +-- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/blenloader/intern/writefile.c | 5 +- .../editors/interface/interface_icons.c | 3 + .../editors/interface/interface_regions.c | 2 +- source/blender/makesrna/intern/makesrna.c | 96 +++++++++---------- source/blender/makesrna/intern/rna_access.c | 20 ++-- source/blender/makesrna/intern/rna_particle.c | 2 +- source/blender/windowmanager/WM_api.h | 3 + .../windowmanager/intern/wm_event_system.c | 33 +++++++ .../windowmanager/intern/wm_operators.c | 2 +- 14 files changed, 126 insertions(+), 80 deletions(-) diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index ec9501c06a6..d5245073e59 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -103,10 +103,13 @@ void BLF_lang_init(void) BLI_strncpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT, sizeof(global_encoding_name)); - if (messagepath) + if (messagepath) { BLI_strncpy(global_messagepath, messagepath, sizeof(global_messagepath)); - else + } + else { + printf("%s: 'locale' data path for translations not found, continuing\n", __func__); global_messagepath[0]= '\0'; + } } diff --git a/source/blender/blenfont/intern/blf_translation.c b/source/blender/blenfont/intern/blf_translation.c index 8c0a26df4c2..90d9c4a5981 100644 --- a/source/blender/blenfont/intern/blf_translation.c +++ b/source/blender/blenfont/intern/blf_translation.c @@ -38,6 +38,7 @@ #include "MEM_guardedalloc.h" +#include "BLI_utildefines.h" #include "BLI_path_util.h" #include "BLI_string.h" #include "BLI_path_util.h" @@ -54,11 +55,16 @@ unsigned char *BLF_get_unifont(int *unifont_size_r) { if(unifont_ttf==NULL) { char *fontpath = BLI_get_folder(BLENDER_DATAFILES, "fonts"); - char unifont_path[1024]; + if (fontpath) { + char unifont_path[1024]; - BLI_snprintf(unifont_path, sizeof(unifont_path), "%s/%s", fontpath, unifont_filename); + BLI_snprintf(unifont_path, sizeof(unifont_path), "%s/%s", fontpath, unifont_filename); - unifont_ttf= (unsigned char*)BLI_ungzip_to_mem(unifont_path, &unifont_size); + unifont_ttf= (unsigned char*)BLI_ungzip_to_mem(unifont_path, &unifont_size); + } + else { + printf("%s: 'fonts' data path not found for international font, continuing\n", __func__); + } } *unifont_size_r= unifont_size; diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 9e48e691b87..3baf8e04b90 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1280,9 +1280,9 @@ static void do_latt_key(Scene *scene, Object *ob, Key *key, char *out, const int flag= setkeys(ctime, &key->block, k, t, 0); if(flag==0) - do_key(a, a+1, tot, (char *)out, key, actkb, k, t, KEY_MODE_DUMMY); + do_key(a, a+1, tot, out, key, actkb, k, t, KEY_MODE_DUMMY); else - cp_key(a, a+1, tot, (char *)out, key, actkb, k[2], NULL, KEY_MODE_DUMMY); + cp_key(a, a+1, tot, out, key, actkb, k[2], NULL, KEY_MODE_DUMMY); } } else { @@ -1292,7 +1292,7 @@ static void do_latt_key(Scene *scene, Object *ob, Key *key, char *out, const int for(kb= key->block.first; kb; kb= kb->next) kb->weights= get_weights_array(ob, kb->vgroup); - do_rel_key(0, tot, tot, (char *)out, key, actkb, KEY_MODE_DUMMY); + do_rel_key(0, tot, tot, out, key, actkb, KEY_MODE_DUMMY); for(kb= key->block.first; kb; kb= kb->next) { if(kb->weights) MEM_freeN(kb->weights); @@ -1386,7 +1386,7 @@ float *do_ob_key(Scene *scene, Object *ob) if(ELEM(ob->type, OB_MESH, OB_LATTICE)) { float *weights= get_weights_array(ob, kb->vgroup); - cp_key(0, tot, tot, (char*)out, key, actkb, kb, weights, 0); + cp_key(0, tot, tot, out, key, actkb, kb, weights, 0); if(weights) MEM_freeN(weights); } diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 58a2f45e876..7b414f7746a 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -407,8 +407,7 @@ static void set_ffmpeg_properties(RenderData *rd, AVCodecContext *c, const char return; } - prop = IDP_GetPropertyFromGroup( - rd->ffcodecdata.properties, (char*) prop_name); + prop = IDP_GetPropertyFromGroup(rd->ffcodecdata.properties, prop_name); if (!prop) { return; } @@ -1025,8 +1024,7 @@ void ffmpeg_property_del(RenderData *rd, void *type, void *prop_) return; } - group = IDP_GetPropertyFromGroup( - rd->ffcodecdata.properties, (char*) type); + group = IDP_GetPropertyFromGroup(rd->ffcodecdata.properties, type); if (group && prop) { IDP_RemFromGroup(group, prop); IDP_FreeProperty(prop); @@ -1057,11 +1055,10 @@ IDProperty *ffmpeg_property_add(RenderData *rd, char * type, int opt_index, int = IDP_New(IDP_GROUP, val, "ffmpeg"); } - group = IDP_GetPropertyFromGroup( - rd->ffcodecdata.properties, (char*) type); + group = IDP_GetPropertyFromGroup(rd->ffcodecdata.properties, type); if (!group) { - group = IDP_New(IDP_GROUP, val, (char*) type); + group = IDP_New(IDP_GROUP, val, type); IDP_AddToGroup(rd->ffcodecdata.properties, group); } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 667550bcaa0..3cf19df41a8 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3112,7 +3112,7 @@ static void direct_link_pointcache(FileData *fd, PointCache *cache) pm->data[i] = newdataadr(fd, pm->data[i]); /* the cache saves non-struct data without DNA */ - if(pm->data[i] && strcmp(ptcache_data_struct[i], "")==0 && (fd->flags & FD_FLAGS_SWITCH_ENDIAN)) { + if(pm->data[i] && ptcache_data_struct[i][0]=='\0' && (fd->flags & FD_FLAGS_SWITCH_ENDIAN)) { int j, tot= (BKE_ptcache_data_size (i) * pm->totpoint)/4; /* data_size returns bytes */ int *poin= pm->data[i]; diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index c4f6e25f40b..8959a1ed017 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -872,7 +872,7 @@ static void write_pointcaches(WriteData *wd, ListBase *ptcaches) for(i=0; idata[i] && pm->data_types & (1<data[i]), pm->data[i]); else writestruct(wd, DATA, ptcache_data_struct[i], pm->totpoint, pm->data[i]); @@ -880,7 +880,7 @@ static void write_pointcaches(WriteData *wd, ListBase *ptcaches) } for(; extra; extra=extra->next) { - if(strcmp(ptcache_extra_struct[extra->type], "")==0) + if(ptcache_extra_struct[extra->type][0]=='\0') continue; writestruct(wd, DATA, "PTCacheExtra", 1, extra); writestruct(wd, DATA, ptcache_extra_struct[extra->type], extra->totdata, extra->data); @@ -2699,6 +2699,7 @@ int BLO_write_file(Main *mainvar, const char *filepath, int write_flags, ReportL } } + userfilename[0]= '\0'; /* ensure its initialized */ BLI_make_file_string(G.main->name, userfilename, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_STARTUP_FILE); write_user_block= (BLI_path_cmp(filepath, userfilename) == 0); diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 24434465f5f..c1418c5b6e8 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -525,6 +525,9 @@ static void init_internal_icons(void) bbuf= NULL; } } + else { + printf("%s: 'icons' data path not found, continuing\n", __func__); + } } if(bbuf==NULL) bbuf = IMB_ibImageFromMemory((unsigned char*)datatoc_blenderbuttons, datatoc_blenderbuttons_size, IB_rect); diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index bc4e3cf9f13..4791d2652dc 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -2370,7 +2370,7 @@ uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon) pup->block= uiBeginBlock(C, NULL, "uiPupMenuBegin", UI_EMBOSSP); pup->block->flag |= UI_BLOCK_POPUP_MEMORY; - pup->block->puphash= ui_popup_menu_hash((char*)title); + pup->block->puphash= ui_popup_menu_hash(title); pup->layout= uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 0, 0, 200, 0, style); uiLayoutSetOperatorContext(pup->layout, WM_OP_EXEC_REGION_WIN); diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index bb4d6d3a330..871cbad6152 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -544,9 +544,9 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop; rna_print_data_get(f, dp); if(dp->dnapointerlevel == 0) - fprintf(f, " return rna_pointer_inherit_refine(ptr, &RNA_%s, &data->%s);\n", (char*)pprop->type, dp->dnaname); + fprintf(f, " return rna_pointer_inherit_refine(ptr, &RNA_%s, &data->%s);\n", (const char*)pprop->type, dp->dnaname); else - fprintf(f, " return rna_pointer_inherit_refine(ptr, &RNA_%s, data->%s);\n", (char*)pprop->type, dp->dnaname); + fprintf(f, " return rna_pointer_inherit_refine(ptr, &RNA_%s, data->%s);\n", (const char*)pprop->type, dp->dnaname); } fprintf(f, "}\n\n"); break; @@ -560,7 +560,7 @@ static char *rna_def_property_get_func(FILE *f, StructRNA *srna, PropertyRNA *pr if(strcmp(manualfunc, "rna_iterator_listbase_get") == 0 || strcmp(manualfunc, "rna_iterator_array_get") == 0 || strcmp(manualfunc, "rna_iterator_array_dereference_get") == 0) - fprintf(f, " return rna_pointer_inherit_refine(&iter->parent, &RNA_%s, %s(iter));\n", (cprop->item_type)? (char*)cprop->item_type: "UnknownType", manualfunc); + fprintf(f, " return rna_pointer_inherit_refine(&iter->parent, &RNA_%s, %s(iter));\n", (cprop->item_type)? (const char*)cprop->item_type: "UnknownType", manualfunc); else fprintf(f, " return %s(iter);\n", manualfunc); } @@ -707,7 +707,7 @@ static void rna_clamp_value(FILE *f, PropertyRNA *prop, int array) fprintf(f, "value;\n"); } -static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc) +static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc) { char *func; @@ -771,7 +771,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr } else { PointerPropertyRNA *pprop= (PointerPropertyRNA*)dp->prop; - StructRNA *type= rna_find_struct((char*)pprop->type); + StructRNA *type= rna_find_struct((const char*)pprop->type); if(type && (type->flag & STRUCT_ID)) { fprintf(f, " if(value.data)\n"); fprintf(f, " id_lib_extern((ID*)value.data);\n\n"); @@ -883,7 +883,7 @@ static char *rna_def_property_set_func(FILE *f, StructRNA *srna, PropertyRNA *pr return func; } -static char *rna_def_property_length_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc) +static char *rna_def_property_length_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc) { char *func= NULL; @@ -941,7 +941,7 @@ static char *rna_def_property_length_func(FILE *f, StructRNA *srna, PropertyRNA return func; } -static char *rna_def_property_begin_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc) +static char *rna_def_property_begin_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc) { char *func, *getfunc; @@ -999,7 +999,7 @@ static char *rna_def_property_begin_func(FILE *f, StructRNA *srna, PropertyRNA * return func; } -static char *rna_def_property_lookup_int_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc, char *nextfunc) +static char *rna_def_property_lookup_int_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc, const char *nextfunc) { /* note on indices, this is for external functions and ignores skipped values. * so the the index can only be checked against the length when there is no 'skip' funcion. */ @@ -1078,7 +1078,7 @@ static char *rna_def_property_lookup_int_func(FILE *f, StructRNA *srna, Property #if 0 rna_print_data_get(f, dp); - item_type= (cprop->item_type)? (char*)cprop->item_type: "UnknownType"; + item_type= (cprop->item_type)? (const char*)cprop->item_type: "UnknownType"; if(dp->dnalengthname || dp->dnalengthfixed) { if(dp->dnalengthname) @@ -1099,7 +1099,7 @@ static char *rna_def_property_lookup_int_func(FILE *f, StructRNA *srna, Property return func; } -static char *rna_def_property_next_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc) +static char *rna_def_property_next_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc) { char *func, *getfunc; @@ -1125,7 +1125,7 @@ static char *rna_def_property_next_func(FILE *f, StructRNA *srna, PropertyRNA *p return func; } -static char *rna_def_property_end_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, char *manualfunc) +static char *rna_def_property_end_func(FILE *f, StructRNA *srna, PropertyRNA *prop, PropertyDefRNA *dp, const char *manualfunc) { char *func; @@ -1193,12 +1193,12 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp) if(!bprop->get && !bprop->set && !dp->booleanbit) rna_set_raw_property(dp, prop); - bprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)bprop->get); - bprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)bprop->set); + bprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)bprop->get); + bprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)bprop->set); } else { - bprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)bprop->getarray); - bprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)bprop->setarray); + bprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)bprop->getarray); + bprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)bprop->setarray); } break; } @@ -1209,15 +1209,15 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp) if(!iprop->get && !iprop->set) rna_set_raw_property(dp, prop); - iprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)iprop->get); - iprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)iprop->set); + iprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)iprop->get); + iprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)iprop->set); } else { if(!iprop->getarray && !iprop->setarray) rna_set_raw_property(dp, prop); - iprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)iprop->getarray); - iprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)iprop->setarray); + iprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)iprop->getarray); + iprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)iprop->setarray); } break; } @@ -1228,38 +1228,38 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp) if(!fprop->get && !fprop->set) rna_set_raw_property(dp, prop); - fprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)fprop->get); - fprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)fprop->set); + fprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)fprop->get); + fprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)fprop->set); } else { if(!fprop->getarray && !fprop->setarray) rna_set_raw_property(dp, prop); - fprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)fprop->getarray); - fprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)fprop->setarray); + fprop->getarray= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)fprop->getarray); + fprop->setarray= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)fprop->setarray); } break; } case PROP_ENUM: { EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop; - eprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)eprop->get); - eprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)eprop->set); + eprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)eprop->get); + eprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)eprop->set); break; } case PROP_STRING: { StringPropertyRNA *sprop= (StringPropertyRNA*)prop; - sprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)sprop->get); - sprop->length= (void*)rna_def_property_length_func(f, srna, prop, dp, (char*)sprop->length); - sprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)sprop->set); + sprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)sprop->get); + sprop->length= (void*)rna_def_property_length_func(f, srna, prop, dp, (const char*)sprop->length); + sprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)sprop->set); break; } case PROP_POINTER: { PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop; - pprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)pprop->get); - pprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (char*)pprop->set); + pprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)pprop->get); + pprop->set= (void*)rna_def_property_set_func(f, srna, prop, dp, (const char*)pprop->set); if(!pprop->type) { fprintf(stderr, "rna_def_property_funcs: %s.%s, pointer must have a struct type.\n", srna->identifier, prop->identifier); DefRNA.error= 1; @@ -1268,24 +1268,24 @@ static void rna_def_property_funcs(FILE *f, StructRNA *srna, PropertyDefRNA *dp) } case PROP_COLLECTION: { CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop; - char *nextfunc= (char*)cprop->next; + const char *nextfunc= (const char*)cprop->next; if(dp->dnatype && strcmp(dp->dnatype, "ListBase")==0); else if(dp->dnalengthname || dp->dnalengthfixed) - cprop->length= (void*)rna_def_property_length_func(f, srna, prop, dp, (char*)cprop->length); + cprop->length= (void*)rna_def_property_length_func(f, srna, prop, dp, (const char*)cprop->length); /* test if we can allow raw array access, if it is using our standard * array get/next function, we can be sure it is an actual array */ if(cprop->next && cprop->get) - if(strcmp((char*)cprop->next, "rna_iterator_array_next") == 0 && - strcmp((char*)cprop->get, "rna_iterator_array_get") == 0) + if(strcmp((const char*)cprop->next, "rna_iterator_array_next") == 0 && + strcmp((const char*)cprop->get, "rna_iterator_array_get") == 0) prop->flag |= PROP_RAW_ARRAY; - cprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (char*)cprop->get); - cprop->begin= (void*)rna_def_property_begin_func(f, srna, prop, dp, (char*)cprop->begin); - cprop->next= (void*)rna_def_property_next_func(f, srna, prop, dp, (char*)cprop->next); - cprop->end= (void*)rna_def_property_end_func(f, srna, prop, dp, (char*)cprop->end); - cprop->lookupint= (void*)rna_def_property_lookup_int_func(f, srna, prop, dp, (char*)cprop->lookupint, nextfunc); + cprop->get= (void*)rna_def_property_get_func(f, srna, prop, dp, (const char*)cprop->get); + cprop->begin= (void*)rna_def_property_begin_func(f, srna, prop, dp, (const char*)cprop->begin); + cprop->next= (void*)rna_def_property_next_func(f, srna, prop, dp, (const char*)cprop->next); + cprop->end= (void*)rna_def_property_end_func(f, srna, prop, dp, (const char*)cprop->end); + cprop->lookupint= (void*)rna_def_property_lookup_int_func(f, srna, prop, dp, (const char*)cprop->lookupint, nextfunc); if(!(prop->flag & PROP_IDPROPERTY)) { if(!cprop->begin) { @@ -1414,7 +1414,7 @@ static void rna_def_property_funcs_header_cpp(FILE *f, StructRNA *srna, Property if(prop->flag & (PROP_IDPROPERTY|PROP_BUILTIN)) return; - if(prop->name && prop->description && strcmp(prop->description, "") != 0) + if(prop->name && prop->description && prop->description[0] != '\0') fprintf(f, "\t/* %s: %s */\n", prop->name, prop->description); else if(prop->name) fprintf(f, "\t/* %s */\n", prop->name); @@ -1468,7 +1468,7 @@ static void rna_def_property_funcs_header_cpp(FILE *f, StructRNA *srna, Property PointerPropertyRNA *pprop= (PointerPropertyRNA*)dp->prop; if(pprop->type) - fprintf(f, "\tinline %s %s(void);", (char*)pprop->type, rna_safe_id(prop->identifier)); + fprintf(f, "\tinline %s %s(void);", (const char*)pprop->type, rna_safe_id(prop->identifier)); else fprintf(f, "\tinline %s %s(void);", "UnknownType", rna_safe_id(prop->identifier)); break; @@ -1477,7 +1477,7 @@ static void rna_def_property_funcs_header_cpp(FILE *f, StructRNA *srna, Property CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)dp->prop; if(cprop->item_type) - fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (char*)cprop->item_type, srna->identifier, rna_safe_id(prop->identifier)); + fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (const char*)cprop->item_type, srna->identifier, rna_safe_id(prop->identifier)); else fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", "UnknownType", srna->identifier, rna_safe_id(prop->identifier)); break; @@ -1531,7 +1531,7 @@ static void rna_def_property_funcs_impl_cpp(FILE *f, StructRNA *srna, PropertyDe PointerPropertyRNA *pprop= (PointerPropertyRNA*)dp->prop; if(pprop->type) - fprintf(f, "\tPOINTER_PROPERTY(%s, %s, %s)", (char*)pprop->type, srna->identifier, rna_safe_id(prop->identifier)); + fprintf(f, "\tPOINTER_PROPERTY(%s, %s, %s)", (const char*)pprop->type, srna->identifier, rna_safe_id(prop->identifier)); else fprintf(f, "\tPOINTER_PROPERTY(%s, %s, %s)", "UnknownType", srna->identifier, rna_safe_id(prop->identifier)); break; @@ -1540,7 +1540,7 @@ static void rna_def_property_funcs_impl_cpp(FILE *f, StructRNA *srna, PropertyDe /*CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)dp->prop; if(cprop->type) - fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (char*)cprop->type, srna->identifier, prop->identifier); + fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", (const char*)cprop->type, srna->identifier, prop->identifier); else fprintf(f, "\tCOLLECTION_PROPERTY(%s, %s, %s)", "UnknownType", srna->identifier, prop->identifier);*/ break; @@ -1763,7 +1763,7 @@ static void rna_auto_types(void) pprop->type= (StructRNA*)rna_find_type(dp->dnatype); if(pprop->type) { - type= rna_find_struct((char*)pprop->type); + type= rna_find_struct((const char*)pprop->type); if(type && (type->flag & STRUCT_ID_REFCOUNT)) pprop->property.flag |= PROP_ID_REFCOUNT; } @@ -2214,7 +2214,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr else fprintf(f, "\t0, -1"); /* our own type - collections/arrays only */ - if(prop->srna) fprintf(f, ", &RNA_%s", (char*)prop->srna); + if(prop->srna) fprintf(f, ", &RNA_%s", (const char*)prop->srna); else fprintf(f, ", NULL"); fprintf(f, "},\n"); @@ -2273,14 +2273,14 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr case PROP_POINTER: { PointerPropertyRNA *pprop= (PointerPropertyRNA*)prop; fprintf(f, "\t%s, %s, %s, %s,", rna_function_string(pprop->get), rna_function_string(pprop->set), rna_function_string(pprop->typef), rna_function_string(pprop->poll)); - if(pprop->type) fprintf(f, "&RNA_%s\n", (char*)pprop->type); + if(pprop->type) fprintf(f, "&RNA_%s\n", (const char*)pprop->type); else fprintf(f, "NULL\n"); break; } case PROP_COLLECTION: { CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop; fprintf(f, "\t%s, %s, %s, %s, %s, %s, %s, %s, ", rna_function_string(cprop->begin), rna_function_string(cprop->next), rna_function_string(cprop->end), rna_function_string(cprop->get), rna_function_string(cprop->length), rna_function_string(cprop->lookupint), rna_function_string(cprop->lookupstring), rna_function_string(cprop->assignint)); - if(cprop->item_type) fprintf(f, "&RNA_%s\n", (char*)cprop->item_type); + if(cprop->item_type) fprintf(f, "&RNA_%s\n", (const char*)cprop->item_type); else fprintf(f, "NULL\n"); break; } diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 8047b2df226..422ee6f31dc 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -1614,7 +1614,7 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value) group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_New(IDP_INT, val, prop->identifier)); } } @@ -1693,7 +1693,7 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const in group= RNA_struct_idprops(ptr, 1); if(group) { - idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier); + idprop= IDP_New(IDP_ARRAY, val, prop->identifier); IDP_AddToGroup(group, idprop); memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len); } @@ -1811,7 +1811,7 @@ void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value) group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_New(IDP_INT, val, prop->identifier)); } } @@ -1927,7 +1927,7 @@ void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *v group= RNA_struct_idprops(ptr, 1); if(group) { - idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier); + idprop= IDP_New(IDP_ARRAY, val, prop->identifier); IDP_AddToGroup(group, idprop); memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len); } @@ -2047,7 +2047,7 @@ void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value) group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_FLOAT, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_New(IDP_FLOAT, val, prop->identifier)); } } @@ -2181,7 +2181,7 @@ void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const floa group= RNA_struct_idprops(ptr, 1); if(group) { - idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier); + idprop= IDP_New(IDP_ARRAY, val, prop->identifier); IDP_AddToGroup(group, idprop); memcpy(IDP_Array(idprop), values, sizeof(float)*idprop->len); } @@ -2328,7 +2328,7 @@ void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *val BLI_assert(RNA_property_type(prop) == PROP_STRING); if((idprop=rna_idproperty_check(&prop, ptr))) - IDP_AssignString(idprop, (char*)value, RNA_property_string_maxlength(prop) - 1); + IDP_AssignString(idprop, value, RNA_property_string_maxlength(prop) - 1); else if(sprop->set) sprop->set(ptr, value); /* set function needs to clamp its self */ else if(prop->flag & PROP_EDITABLE) { @@ -2336,7 +2336,7 @@ void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *val group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_NewString((char*)value, (char*)prop->identifier, RNA_property_string_maxlength(prop) - 1)); + IDP_AddToGroup(group, IDP_NewString(value, prop->identifier, RNA_property_string_maxlength(prop) - 1)); } } @@ -2413,7 +2413,7 @@ void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value) group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_New(IDP_INT, val, prop->identifier)); } } @@ -2509,7 +2509,7 @@ void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop) group= RNA_struct_idprops(ptr, 1); if(group) - IDP_AddToGroup(group, IDP_New(IDP_GROUP, val, (char*)prop->identifier)); + IDP_AddToGroup(group, IDP_New(IDP_GROUP, val, prop->identifier)); } else printf("%s %s.%s: only supported for id properties.\n", __func__, ptr->type->identifier, prop->identifier); diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 43d5f87f0d5..a1d156a2b2a 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -820,7 +820,7 @@ static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int i psys->vgroup[index]= 0; } else { - int vgroup_num = defgroup_name_index(ob, (char*)value); + int vgroup_num = defgroup_name_index(ob, value); if(vgroup_num == -1) return; diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 9e19a057175..34f59ce047d 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -267,6 +267,9 @@ void WM_gestures_remove(struct bContext *C); /* fileselecting support */ void WM_event_add_fileselect(struct bContext *C, struct wmOperator *op); void WM_event_fileselect_event(struct bContext *C, void *ophandle, int eventval); +#ifndef NDEBUG +void WM_event_print(struct wmEvent *event); +#endif /* drag and drop */ struct wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, double value); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 6fd84b4c315..e73440e5eb0 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -79,6 +79,10 @@ #include "wm_event_types.h" #include "wm_draw.h" +#ifndef NDEBUG +# include "RNA_enum_types.h" +#endif + static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, PointerRNA *properties, ReportList *reports, short context, short poll_only); /* ************ event management ************** */ @@ -435,6 +439,35 @@ static void wm_operator_print(bContext *C, wmOperator *op) MEM_freeN(buf); } +/* for debugging only, getting inspecting events manually is tedious */ +#ifndef NDEBUG + +void WM_event_print(wmEvent *event) +{ + if(event) { + const char *unknown= "UNKNOWN"; + const char *type_id= unknown; + const char *val_id= unknown; + + RNA_enum_identifier(event_type_items, event->type, &type_id); + RNA_enum_identifier(event_value_items, event->val, &val_id); + + printf("wmEvent - type:%d/%s, val:%d/%s, " + "shift:%d, ctrl:%d, alt:%d, oskey:%d, keymodifier:%d, " + "mouse:(%d,%d), ascii:'%c', utf8:'%.6s', " + "keymap_idname:%s, pointer:%p\n", + event->type, type_id, event->val, val_id, + event->shift, event->ctrl, event->alt, event->oskey, event->keymodifier, + event->x, event->y, event->ascii, event->utf8_buf, + event->keymap_idname, (void *)event); + } + else { + printf("wmEvent - NULL\n"); + } +} + +#endif /* NDEBUG */ + static void wm_operator_reports(bContext *C, wmOperator *op, int retval, int popup) { if(popup) { diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7a8d69e58a5..a06da3941af 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -678,7 +678,7 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) else { pup= uiPupMenuBegin(C, op->type->name, ICON_NONE); layout= uiPupMenuLayout(pup); - uiItemsFullEnumO(layout, op->type->idname, (char*)RNA_property_identifier(prop), op->ptr->data, WM_OP_EXEC_REGION_WIN, 0); + uiItemsFullEnumO(layout, op->type->idname, RNA_property_identifier(prop), op->ptr->data, WM_OP_EXEC_REGION_WIN, 0); uiPupMenuEnd(C, pup); } From 1a622354171ce930b3b0a8bfffe814279a4c125d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 08:31:28 +0000 Subject: [PATCH 103/119] svn merge -r41171:41170 . --- fix coming next --- release/scripts/startup/keyingsets_builtins.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/release/scripts/startup/keyingsets_builtins.py b/release/scripts/startup/keyingsets_builtins.py index 0e31601a4d7..c7922a0dfa1 100644 --- a/release/scripts/startup/keyingsets_builtins.py +++ b/release/scripts/startup/keyingsets_builtins.py @@ -364,16 +364,12 @@ class BUILTIN_KSI_WholeCharacter(KeyingSetInfo): if prop == "_RNA_UI": continue - # only do props which are marked as animatable, or those which are "numeric" types... + # for now, just add all of 'em prop_rna = type(bone).bl_rna.properties.get(prop, None) if prop_rna is None: prop_path = '["%s"]' % prop - - # XXX: the check below from r.40868 causes crashes [#28967] on ID-prop groups, - # so let's just include everything (doing nothing breaks keying of Sintel face rig) - #if bone.path_resolve(prop_path, False).rna_type in prop_type_compat: - # ksi.addProp(ks, bone, prop_path) - ksi.addProp(ks, bone, prop_path) + if bone.path_resolve(prop_path, False).rna_type in prop_type_compat: + ksi.addProp(ks, bone, prop_path) elif prop_rna.is_animatable: ksi.addProp(ks, bone, prop) From a35261cfee1e04bca3366e6967e046cdb00d3d44 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 21 Oct 2011 09:04:40 +0000 Subject: [PATCH 104/119] fix [#28967] Attempting to add a new pose to the Pose Library causes Blender 2.60 RC2 to crash. --- source/blender/makesrna/intern/rna_access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 422ee6f31dc..149497c85fb 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -2885,7 +2885,7 @@ int RNA_property_collection_type_get(PointerRNA *ptr, PropertyRNA *prop, Pointer BLI_assert(RNA_property_type(prop) == PROP_COLLECTION); *r_ptr= *ptr; - return ((r_ptr->type = prop->srna) ? 1:0); + return ((r_ptr->type = rna_ensure_property(prop)->srna) ? 1:0); } int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array) From 13fd777bc0a9acd50f75251ee4d40a50daec0476 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 21 Oct 2011 11:33:18 +0000 Subject: [PATCH 105/119] Fix compilation error with MSVC caused by recent commit. --- source/blender/blenfont/intern/blf_lang.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index d5245073e59..87fbbc7b3e5 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -55,6 +55,7 @@ #include "BLI_linklist.h" /* linknode */ #include "BLI_string.h" +#include "BLI_utildefines.h" #include "BLI_path_util.h" #define DOMAIN_NAME "blender" From 4d48dbe5fd553ab149abd1f062eec08ae813060a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 21 Oct 2011 17:10:59 +0000 Subject: [PATCH 106/119] Code cleanup: remove some unused code in header. --- source/blender/makesrna/RNA_access.h | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 374b1d93444..1f45fe2646f 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -823,20 +823,6 @@ int RNA_path_resolve_full(PointerRNA *ptr, const char *path, char *RNA_path_from_ID_to_struct(PointerRNA *ptr); char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop); -#if 0 -/* Dependency - * - * Experimental code that will generate callbacks for each dependency - * between ID types. This may end up being useful for UI - * and evaluation code that needs to know such dependencies for correct - * redraws and re-evaluations. */ - -typedef void (*PropDependencyCallback)(void *udata, PointerRNA *from, PointerRNA *to); -void RNA_test_dependencies_cb(void *udata, PointerRNA *from, PointerRNA *to); - -void RNA_generate_dependencies(PointerRNA *mainptr, void *udata, PropDependencyCallback cb); -#endif - /* Quick name based property access * * These are just an easier way to access property values without having to From 00735ed9e49d2103e06b0e25513b5b880f0db226 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 21 Oct 2011 17:37:38 +0000 Subject: [PATCH 107/119] Code cleanup: don't use btempdir/bprogdir/bprogname globals anymore, but wrap in BLI_ functions. --- source/blender/blenkernel/intern/blender.c | 4 +- source/blender/blenkernel/intern/pointcache.c | 4 +- source/blender/blenlib/BLI_blenlib.h | 2 - source/blender/blenlib/BLI_path_util.h | 35 ++++----- source/blender/blenlib/intern/path_util.c | 72 ++++++++++++++++--- source/blender/editors/interface/resources.c | 2 +- source/blender/makesrna/intern/rna_userdef.c | 3 +- .../modifiers/intern/MOD_fluidsim_util.c | 2 +- source/blender/python/BPY_extern.h | 2 - source/blender/python/intern/bpy_app.c | 7 +- source/blender/python/intern/bpy_interface.c | 6 +- .../blender/render/intern/source/pipeline.c | 2 +- .../blender/windowmanager/intern/wm_files.c | 9 +-- .../windowmanager/intern/wm_operators.c | 2 +- .../bad_level_call_stubs/stubs.c | 1 - source/creator/creator.c | 18 ++--- .../gameengine/GamePlayer/ghost/GPG_ghost.cpp | 12 +--- 17 files changed, 104 insertions(+), 79 deletions(-) diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 5358a26e660..7a675dc64c3 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -549,7 +549,7 @@ void BKE_write_undo(bContext *C, const char *name) counter= counter % U.undosteps; BLI_snprintf(numstr, sizeof(numstr), "%d.blend", counter); - BLI_make_file_string("/", filepath, btempdir, numstr); + BLI_make_file_string("/", filepath, BLI_temporary_dir(), numstr); /* success= */ /* UNUSED */ BLO_write_file(CTX_data_main(C), filepath, fileflags, NULL, NULL); @@ -719,7 +719,7 @@ void BKE_undo_save_quit(void) /* no undo state to save */ if(undobase.first==undobase.last) return; - BLI_make_file_string("/", str, btempdir, "quit.blend"); + BLI_make_file_string("/", str, BLI_temporary_dir(), "quit.blend"); file = open(str,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666); if(file == -1) { diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index bd5e5dc6049..f12e9698810 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -923,8 +923,8 @@ static int ptcache_path(PTCacheID *pid, char *filename) } /* use the temp path. this is weak but better then not using point cache at all */ - /* btempdir is assumed to exist and ALWAYS has a trailing slash */ - BLI_snprintf(filename, MAX_PTCACHE_PATH, "%s"PTCACHE_PATH"%d", btempdir, abs(getpid())); + /* temporary directory is assumed to exist and ALWAYS has a trailing slash */ + BLI_snprintf(filename, MAX_PTCACHE_PATH, "%s"PTCACHE_PATH"%d", BLI_temporary_dir(), abs(getpid())); return BLI_add_slash(filename); /* new strlen() */ } diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index cda7a51c47f..4eb4b71da12 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -64,8 +64,6 @@ struct ListBase; #include -extern char btempdir[]; /* creator.c temp dir used instead of U.tempdir, set with BLI_where_is_temp( btempdir, 1 ); */ - #ifdef __cplusplus extern "C" { #endif diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 9ccdc37c353..56ecec042f2 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -181,29 +181,20 @@ void BLI_path_rel(char *file, const char *relfile); */ void BLI_char_switch(char *string, char from, char to); -/** - * Checks if name is a fully qualified filename to an executable. - * If not it searches $PATH for the file. On Windows it also - * adds the correct extension (.com .exe etc) from - * $PATHEXT if necessary. Also on Windows it translates - * the name to its 8.3 version to prevent problems with - * spaces and stuff. Final result is returned in fullname. - * - * @param fullname The full path and full name of the executable - * @param name The name of the executable (usually argv[0]) to be checked - */ -void BLI_where_am_i(char *fullname, const size_t maxlen, const char *name); - - /** - * Gets the temp directory when blender first runs. - * If the default path is not found, use try $TEMP - * - * Also make sure the temp dir has a trailing slash - * - * @param fullname The full path to the temp directory - */ -void BLI_where_is_temp(char *fullname, const size_t maxlen, int usertemp); + /* Initialize path to program executable */ +void BLI_init_program_path(const char *argv0); + /* Initialize path to temporary directory. + * NOTE: On Window userdir will be set to the temporary directory! */ +void BLI_init_temporary_dir(char *userdir); + /* Path to executable */ +const char *BLI_program_path(void); + /* Path to directory of executable */ +const char *BLI_program_dir(void); + /* Path to temporary directory (with trailing slash) */ +const char *BLI_temporary_dir(void); + /* Path to the system temporary directory (with trailing slash) */ +void BLI_system_temporary_dir(char *dir); #ifdef WITH_ICONV void BLI_string_to_utf8(char *original, char *utf_8, const char *code); diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index b338bfcbc50..f57ac09c9b9 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -41,7 +41,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_userdef_types.h" +#include "DNA_listBase.h" #include "BLI_fileops.h" #include "BLI_path_util.h" @@ -87,8 +87,9 @@ /* local */ #define UNIQUE_NAME_MAX 128 -extern char bprogname[]; -extern char bprogdir[]; +static char bprogname[FILE_MAX]; /* path to program executable */ +static char bprogdir[FILE_MAX]; /* path in which executable is located */ +static char btempdir[FILE_MAX]; /* temporary directory */ static int add_win32_extension(char *name); static char *blender_version_decimal(const int ver); @@ -1670,8 +1671,19 @@ static int add_win32_extension(char *name) return (retval); } -/* filename must be FILE_MAX length minimum */ -void BLI_where_am_i(char *fullname, const size_t maxlen, const char *name) +/* +* Checks if name is a fully qualified filename to an executable. +* If not it searches $PATH for the file. On Windows it also +* adds the correct extension (.com .exe etc) from +* $PATHEXT if necessary. Also on Windows it translates +* the name to its 8.3 version to prevent problems with +* spaces and stuff. Final result is returned in fullname. +* +* @param fullname The full path and full name of the executable +* (must be FILE_MAX minimum) +* @param name The name of the executable (usually argv[0]) to be checked +*/ +static void bli_where_am_i(char *fullname, const size_t maxlen, const char *name) { char filename[FILE_MAXDIR+FILE_MAXFILE]; const char *path = NULL, *temp; @@ -1751,12 +1763,37 @@ void BLI_where_am_i(char *fullname, const size_t maxlen, const char *name) } } -void BLI_where_is_temp(char *fullname, const size_t maxlen, int usertemp) +void BLI_init_program_path(const char *argv0) +{ + bli_where_am_i(bprogname, sizeof(bprogname), argv0); + BLI_split_dir_part(bprogname, bprogdir, sizeof(bprogdir)); +} + +const char *BLI_program_path(void) +{ + return bprogname; +} + +const char *BLI_program_dir(void) +{ + return bprogdir; +} + +/** +* Gets the temp directory when blender first runs. +* If the default path is not found, use try $TEMP +* +* Also make sure the temp dir has a trailing slash +* +* @param fullname The full path to the temp directory +* @param userdir Directory specified in user preferences +*/ +void BLI_where_is_temp(char *fullname, const size_t maxlen, char *userdir) { fullname[0] = '\0'; - if (usertemp && BLI_is_dir(U.tempdir)) { - BLI_strncpy(fullname, U.tempdir, maxlen); + if (userdir && BLI_is_dir(userdir)) { + BLI_strncpy(fullname, userdir, maxlen); } @@ -1790,13 +1827,28 @@ void BLI_where_is_temp(char *fullname, const size_t maxlen, int usertemp) /* add a trailing slash if needed */ BLI_add_slash(fullname); #ifdef WIN32 - if(U.tempdir != fullname) { - BLI_strncpy(U.tempdir, fullname, maxlen); /* also set user pref to show %TEMP%. /tmp/ is just plain confusing for Windows users. */ + if(userdir != fullname) { + BLI_strncpy(userdir, fullname, maxlen); /* also set user pref to show %TEMP%. /tmp/ is just plain confusing for Windows users. */ } #endif } } +void BLI_init_temporary_dir(char *userdir) +{ + BLI_where_is_temp(btempdir, FILE_MAX, userdir); +} + +const char *BLI_temporary_dir(void) +{ + return btempdir; +} + +void BLI_system_temporary_dir(char *dir) +{ + BLI_where_is_temp(dir, FILE_MAX, NULL); +} + #ifdef WITH_ICONV void BLI_string_to_utf8(char *original, char *utf_8, const char *code) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index fd511948bac..61936fba931 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1127,7 +1127,7 @@ void init_userdef_do_versions(void) } if(U.mixbufsize==0) U.mixbufsize= 2048; if (strcmp(U.tempdir, "/") == 0) { - BLI_where_is_temp(U.tempdir, sizeof(U.tempdir), FALSE); + BLI_system_temporary_dir(U.tempdir); } if (U.autokey_mode == 0) { /* 'add/replace' but not on */ diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index d579d00f6ce..c6a76cf42b9 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -295,8 +295,7 @@ static void rna_userdef_addon_remove(bAddon *bext) static void rna_userdef_temp_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr)) { - extern char btempdir[]; - BLI_where_is_temp(btempdir, FILE_MAX, 1); + BLI_init_temporary_dir(U.tempdir); } static void rna_userdef_text_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr)) diff --git a/source/blender/modifiers/intern/MOD_fluidsim_util.c b/source/blender/modifiers/intern/MOD_fluidsim_util.c index 277f0852f90..a2f62d55d69 100644 --- a/source/blender/modifiers/intern/MOD_fluidsim_util.c +++ b/source/blender/modifiers/intern/MOD_fluidsim_util.c @@ -105,7 +105,7 @@ void fluidsim_init(FluidsimModifierData *fluidmd) /* elubie: changed this to default to the same dir as the render output to prevent saving to C:\ on Windows */ - BLI_strncpy(fss->surfdataPath, btempdir, FILE_MAX); + BLI_strncpy(fss->surfdataPath, BLI_temporary_dir(), FILE_MAX); // first init of bounding box // no bounding box needed diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h index cd5c8e53ef7..ae82dac7f14 100644 --- a/source/blender/python/BPY_extern.h +++ b/source/blender/python/BPY_extern.h @@ -36,8 +36,6 @@ #ifndef BPY_EXTERN_H #define BPY_EXTERN_H -extern char bprogname[]; /* holds a copy of argv[0], from creator.c */ - struct Text; /* defined in DNA_text_types.h */ struct ID; /* DNA_ID.h */ struct Object; /* DNA_object_types.h */ diff --git a/source/blender/python/intern/bpy_app.c b/source/blender/python/intern/bpy_app.c index bd7be8dd9c5..c3d60bc353d 100644 --- a/source/blender/python/intern/bpy_app.c +++ b/source/blender/python/intern/bpy_app.c @@ -93,8 +93,6 @@ static PyStructSequence_Desc app_info_desc= { static PyObject *make_app_info(void) { - extern char bprogname[]; /* argv[0] from creator.c */ - PyObject *app_info; int pos= 0; @@ -118,7 +116,7 @@ static PyObject *make_app_info(void) SetStrItem(""); #endif SetStrItem(STRINGIFY(BLENDER_VERSION_CYCLE)); - SetStrItem(bprogname); + SetStrItem(BLI_program_path()); SetObjItem(PyBool_FromLong(G.background)); /* build info */ @@ -200,8 +198,7 @@ static int bpy_app_debug_value_set(PyObject *UNUSED(self), PyObject *value, void static PyObject *bpy_app_tempdir_get(PyObject *UNUSED(self), void *UNUSED(closure)) { - extern char btempdir[]; - return PyC_UnicodeFromByte(btempdir); + return PyC_UnicodeFromByte(BLI_temporary_dir()); } static PyObject *bpy_app_driver_dict_get(PyObject *UNUSED(self), void *UNUSED(closure)) diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index ddbd557375c..90156a9cb3e 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -193,9 +193,9 @@ void BPY_python_start(int argc, const char **argv) PyThreadState *py_tstate= NULL; /* not essential but nice to set our name */ - static wchar_t bprogname_wchar[FILE_MAXDIR+FILE_MAXFILE]; /* python holds a reference */ - BLI_strncpy_wchar_from_utf8(bprogname_wchar, bprogname, sizeof(bprogname_wchar) / sizeof(wchar_t)); - Py_SetProgramName(bprogname_wchar); + static wchar_t program_path_wchar[FILE_MAXDIR+FILE_MAXFILE]; /* python holds a reference */ + BLI_strncpy_wchar_from_utf8(program_path_wchar, BLI_program_path(), sizeof(program_path_wchar) / sizeof(wchar_t)); + Py_SetProgramName(program_path_wchar); /* must run before python initializes */ PyImport_ExtendInittab(bpy_internal_modules); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 3db73816025..405779c360f 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -478,7 +478,7 @@ static void scene_unique_exr_name(Scene *scene, char *str, int sample) else BLI_snprintf(name, sizeof(name), "%s_%s%d.exr", fi, scene->id.name+2, sample); - BLI_make_file_string("/", str, btempdir, name); + BLI_make_file_string("/", str, BLI_temporary_dir(), name); } static void render_unique_exr_name(Render *re, char *str, int sample) diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 9b2d7026a46..4cd31b8d894 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -289,8 +289,9 @@ static void wm_init_userdef(bContext *C) if ((U.flag & USER_SCRIPT_AUTOEXEC_DISABLE) == 0) G.f |= G_SCRIPT_AUTOEXEC; else G.f &= ~G_SCRIPT_AUTOEXEC; } + /* update tempdir from user preferences */ - BLI_where_is_temp(btempdir, FILE_MAX, 1); + BLI_init_temporary_dir(U.tempdir); } @@ -856,14 +857,14 @@ void wm_autosave_location(char *filepath) * BLI_make_file_string will create string that has it most likely on C:\ * through get_default_root(). * If there is no C:\tmp autosave fails. */ - if (!BLI_exists(btempdir)) { + if (!BLI_exists(BLI_temporary_dir())) { savedir = BLI_get_folder_create(BLENDER_USER_AUTOSAVE, NULL); BLI_make_file_string("/", filepath, savedir, pidstr); return; } #endif - BLI_make_file_string("/", filepath, btempdir, pidstr); + BLI_make_file_string("/", filepath, BLI_temporary_dir(), pidstr); } void WM_autosave_init(wmWindowManager *wm) @@ -921,7 +922,7 @@ void wm_autosave_delete(void) if(BLI_exists(filename)) { char str[FILE_MAXDIR+FILE_MAXFILE]; - BLI_make_file_string("/", str, btempdir, "quit.blend"); + BLI_make_file_string("/", str, BLI_temporary_dir(), "quit.blend"); /* if global undo; remove tempsave, otherwise rename */ if(U.uiflag & USER_GLOBALUNDO) BLI_delete(filename, 0, 0); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index a06da3941af..5fee5fb2a57 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1807,7 +1807,7 @@ static int wm_recover_last_session_exec(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_WINDOW, NULL); /* load file */ - BLI_make_file_string("/", filename, btempdir, "quit.blend"); + BLI_make_file_string("/", filename, BLI_temporary_dir(), "quit.blend"); WM_read_file(C, filename, op->reports); G.fileflags &= ~G_FILE_RECOVER; diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index fe53937ec5a..788b4e40eb2 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -129,7 +129,6 @@ struct RenderResult *RE_GetResult(struct Render *re){return (struct RenderResult struct Render *RE_GetRender(const char *name){return (struct Render *) NULL;} /* blenkernel */ -char btempdir[] = ""; void RE_FreeRenderResult(struct RenderResult *res){} struct RenderResult *RE_MultilayerConvert(void *exrhandle, int rectx, int recty){return (struct RenderResult *) NULL;} void RE_GetResultImage(struct Render *re, struct RenderResult *rr){} diff --git a/source/creator/creator.c b/source/creator/creator.c index 24f2d22a029..cdbc21337e6 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -62,6 +62,7 @@ #include "DNA_ID.h" #include "DNA_scene_types.h" +#include "DNA_userdef_types.h" #include "BLI_blenlib.h" @@ -141,10 +142,6 @@ static int print_version(int argc, const char **argv, void *data); extern int pluginapi_force_ref(void); /* from blenpluginapi:pluginapi.c */ -char bprogname[FILE_MAX]; -char bprogdir[FILE_MAX]; -char btempdir[FILE_MAX]; - #define BLEND_VERSION_STRING_FMT "Blender %d.%02d (sub %d)\n", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION /* Initialize callbacks for the modules that need them */ @@ -1154,11 +1151,8 @@ int main(int argc, const char **argv) fpsetmask(0); #endif - // copy path to executable in bprogname. playanim and creting runtimes - // need this. - - BLI_where_am_i(bprogname, sizeof(bprogname), argv[0]); - BLI_split_dir_part(bprogname, bprogdir, sizeof(bprogdir)); + // initialize path to executable + BLI_init_program_path(argv[0]); BLI_threadapi_init(); @@ -1213,7 +1207,8 @@ int main(int argc, const char **argv) WM_init(C, argc, argv); /* this is properly initialized with user defs, but this is default */ - BLI_where_is_temp(btempdir, FILE_MAX, 1); /* call after loading the startup.blend so we can read U.tempdir */ + /* call after loading the startup.blend so we can read U.tempdir */ + BLI_init_temporary_dir(U.tempdir); #ifdef WITH_SDL BLI_setenv("SDL_VIDEODRIVER", "dummy"); @@ -1224,7 +1219,8 @@ int main(int argc, const char **argv) WM_init(C, argc, argv); - BLI_where_is_temp(btempdir, FILE_MAX, 0); /* call after loading the startup.blend so we can read U.tempdir */ + /* don't use user preferences temp dir */ + BLI_init_temporary_dir(NULL); } #ifdef WITH_PYTHON /** diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp index 78ea2aac8ce..f5439ba4f64 100644 --- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp +++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp @@ -76,9 +76,6 @@ extern "C" int GHOST_HACK_getFirstFile(char buf[]); -extern char bprogname[]; /* holds a copy of argv[0], from creator.c */ -extern char btempdir[]; /* use this to store a valid temp directory */ - // For BLF #include "BLF_api.h" #include "BLF_translation.h" @@ -116,9 +113,6 @@ extern char datatoc_bfont_ttf[]; const int kMinWindowWidth = 100; const int kMinWindowHeight = 100; -char bprogname[FILE_MAX]; -char bprogdir[FILE_MAX]; - static void mem_error_cb(const char *errorStr) { fprintf(stderr, "%s", errorStr); @@ -380,8 +374,8 @@ int main(int argc, char** argv) signal (SIGFPE, SIG_IGN); #endif /* __alpha__ */ #endif /* __linux__ */ - BLI_where_am_i(bprogname, sizeof(bprogname), argv[0]); - BLI_split_dir_part(bprogname, bprogdir, sizeof(bprogdir)); + BLI_init_program_path(argv[0]); + BLI_init_temporary_dir(NULL); #ifdef __APPLE__ // Can't use Carbon right now because of double defined type ID (In Carbon.h and DNA_ID.h, sigh) /* @@ -786,7 +780,7 @@ int main(int argc, char** argv) } else { - bfd = load_game_data(bprogname, filename[0]? filename: NULL); + bfd = load_game_data(BLI_program_path(), filename[0]? filename: NULL); } //::printf("game data loaded from %s\n", filename); From c9035e20d0033e897aaea9ed761002ec02331ce4 Mon Sep 17 00:00:00 2001 From: Alexander Kuznetsov Date: Fri, 21 Oct 2011 17:40:35 +0000 Subject: [PATCH 108/119] UTF8 input support for Windows. ToDo: * add support for dead keys * other input methods (for hieroglyphs) --- intern/ghost/intern/GHOST_SystemWin32.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 24b6474732e..99ce81165ad 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -712,21 +712,21 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP GHOST_SystemWin32 * system = (GHOST_SystemWin32 *)getSystem(); GHOST_TKey key = system->hardKey(window, raw, &keyDown, &vk); GHOST_EventKey* event; + if (key != GHOST_kKeyUnknown) { - char ascii = '\0'; + char utf8_char[6] = {0} ; - unsigned short utf16[2]={0}; + wchar_t utf16[2]={0}; BYTE state[256]; - GetKeyboardState((PBYTE)state); + GetKeyboardState((PBYTE)state); - if(ToAsciiEx(vk, 0, state, utf16, 0, system->m_keylayout)) - WideCharToMultiByte(CP_ACP, 0x00000400, + if(ToUnicodeEx(vk, 0, state, utf16, 2, 0, system->m_keylayout)) + WideCharToMultiByte(CP_UTF8, 0, (wchar_t*)utf16, 1, - (LPSTR) &ascii, 1, - NULL,NULL); - - /* TODO, last arg is utf8, need to pass utf8 arg */ - event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii, NULL); + (LPSTR) utf8_char, 5, + NULL,NULL); else *utf8_char = 0; + + event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, (*utf8_char & 0x80)?'?':*utf8_char, utf8_char); #ifdef GHOST_DEBUG std::cout << ascii << std::endl; From 932aa116df985d21114dcad8c2518f69f8a6a39e Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 21 Oct 2011 19:09:14 +0000 Subject: [PATCH 109/119] utf8 OSX - disabling utf8 at KeyUp, otherwise TextObject doesn't work. This bug is also present in Windows, so I believe the real bug is in Linux (and in the text object input). Also Cmd+C and Cmd+v doesn't work for utf8 yet. --- intern/ghost/intern/GHOST_SystemCocoa.mm | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index c3c0c591444..1a6aaadb506 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1707,10 +1707,6 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) } } - /* XXX the above code gives us the right utf8, however if we pass it along Font Object doesn't work. - let's leave utf8 disabled for OSX before we fix that */ - utf8_buf[0] = '\0';//to be removed once things are working - if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask)) break; //Cmd-Q is directly handled by Cocoa @@ -1718,8 +1714,10 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii, utf8_buf) ); //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } else { + // XXX Font Object bug - backspace or adding new chars are being computed twice (keydown and keyup) + utf8_buf[0] = '\0'; pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii, utf8_buf) ); - //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); + //printf("Key up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } break; From 88473fd49a4f5330f8f6a932b0c9eccf28aaa459 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 21 Oct 2011 22:33:41 +0000 Subject: [PATCH 110/119] Code cleanup: remove BLI_exist, now there is only BLI_exists. One function just called the other, they did the same thing. --- source/blender/blenfont/intern/blf_dir.c | 8 ++-- source/blender/blenkernel/intern/pointcache.c | 2 +- source/blender/blenlib/BLI_fileops.h | 9 ---- source/blender/blenlib/BLI_path_util.h | 15 ------- source/blender/blenlib/BLI_storage.h | 41 +++++++------------ source/blender/blenlib/intern/fileops.c | 4 -- source/blender/blenlib/intern/path_util.c | 16 +++++++- source/blender/blenlib/intern/storage.c | 4 +- source/blender/collada/collada.cpp | 2 +- .../blender/editors/physics/physics_fluid.c | 2 +- source/blender/editors/space_file/file_ops.c | 2 +- source/blender/editors/space_file/fsmenu.c | 2 +- source/blender/makesrna/intern/rna_fluidsim.c | 2 +- .../blender/render/intern/source/pipeline.c | 6 +-- 14 files changed, 44 insertions(+), 71 deletions(-) diff --git a/source/blender/blenfont/intern/blf_dir.c b/source/blender/blenfont/intern/blf_dir.c index 46be49b37e9..3fe66118cda 100644 --- a/source/blender/blenfont/intern/blf_dir.c +++ b/source/blender/blenfont/intern/blf_dir.c @@ -136,7 +136,7 @@ char *blf_dir_search(const char *file) for(dir=global_font_dir.first; dir; dir= dir->next) { BLI_join_dirfile(full_path, sizeof(full_path), dir->path, file); - if (BLI_exist(full_path)) { + if (BLI_exists(full_path)) { s= BLI_strdup(full_path); break; } @@ -144,7 +144,7 @@ char *blf_dir_search(const char *file) if (!s) { /* check the current directory, why not ? */ - if (BLI_exist(file)) + if (BLI_exists(file)) s= BLI_strdup(file); } @@ -198,13 +198,13 @@ char *blf_dir_metrics_search(const char *filename) s[2]= 'm'; /* first check .afm */ - if (BLI_exist(s)) + if (BLI_exists(s)) return s; /* and now check .pfm */ s[0]= 'p'; - if (BLI_exist(s)) + if (BLI_exists(s)) return s; } MEM_freeN(mfile); diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index f12e9698810..d4753f30ef2 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -2363,7 +2363,7 @@ void BKE_ptcache_remove(void) ptcache_path(NULL, path); - if (BLI_exist(path)) { + if (BLI_exists(path)) { /* The pointcache dir exists? - remove all pointcache */ DIR *dir; diff --git a/source/blender/blenlib/BLI_fileops.h b/source/blender/blenlib/BLI_fileops.h index 21d28ca3185..354931e306a 100644 --- a/source/blender/blenlib/BLI_fileops.h +++ b/source/blender/blenlib/BLI_fileops.h @@ -46,10 +46,6 @@ void BLI_recurdir_fileops(const char *dirname); int BLI_link(const char *file, const char *to); int BLI_is_writable(const char *filename); -/** - * @attention Do not confuse with BLI_exist - */ -int BLI_exists(const char *file); int BLI_copy_fileops(const char *file, const char *to); int BLI_rename(const char *from, const char *to); int BLI_gzip(const char *from, const char *to); @@ -58,11 +54,6 @@ int BLI_delete(const char *file, int dir, int recursive); int BLI_move(const char *file, const char *to); int BLI_touch(const char *file); -/* only for the sane unix world: direct calls to system functions :( */ -#ifndef WIN32 -void BLI_setCmdCallBack(int (*f)(char*)); -#endif - #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index 56ecec042f2..82794e08fa0 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -65,10 +65,6 @@ char *BLI_get_folder_version(const int id, const int ver, const int do_check); #define BLENDER_SYSTEM_PLUGINS 54 #define BLENDER_SYSTEM_PYTHON 54 -#define BLENDER_TEMP 80 - -#define BLENDER_USERFOLDER(id) (id >= BLENDER_USER_CONFIG && id <= BLENDER_USER_PLUGINS) - /* for BLI_get_folder_version only */ #define BLENDER_RESOURCE_PATH_USER 0 #define BLENDER_RESOURCE_PATH_LOCAL 1 @@ -78,17 +74,6 @@ char *BLI_get_folder_version(const int id, const int ver, const int do_check); #define BLENDER_BOOKMARK_FILE "bookmarks.txt" #define BLENDER_HISTORY_FILE "recent-files.txt" -#ifdef WIN32 -#define BLENDER_USER_FORMAT "%s\\Blender Foundation\\Blender\\%s" -#define BLENDER_SYSTEM_FORMAT "%s\\Blender Foundation\\Blender\\%s" -#elif defined(__APPLE__) -#define BLENDER_USER_FORMAT "%s/Blender/%s" -#define BLENDER_SYSTEM_FORMAT "%s/Blender/%s" -#else -#define BLENDER_USER_FORMAT "%s/.blender/%s" -#define BLENDER_SYSTEM_FORMAT "%s/blender/%s" -#endif - #ifdef WIN32 #define SEP '\\' #define ALTSEP '/' diff --git a/source/blender/blenlib/BLI_storage.h b/source/blender/blenlib/BLI_storage.h index 017f9877baf..13c78b711a8 100644 --- a/source/blender/blenlib/BLI_storage.h +++ b/source/blender/blenlib/BLI_storage.h @@ -33,46 +33,35 @@ * \ingroup bli */ -#ifdef WIN32 -/* for size_t, only needed on win32 for some reason */ +/* for size_t (needed on windows) */ #include -#endif struct direntry; - -void BLI_adddirstrings(void); -void BLI_builddir(const char *dirname, const char *relname); -int BLI_compare(struct direntry *entry1, struct direntry *entry2); - size_t BLI_filesize(int file); size_t BLI_filepathsize(const char *path); double BLI_diskfree(const char *dir); char *BLI_getwdN(char *dir, const int maxncpy); unsigned int BLI_getdir(const char *dirname, struct direntry **filelist); -/** - * @attention Do not confuse with BLI_exists - */ -int BLI_exist(const char *name); -/** - * Read a file as ASCII lines. An empty list is - * returned if the file cannot be opened or read. - * - * @attention The returned list should be free'd with - * BLI_free_file_lines. - * - * @param name The name of the file to read. - * @retval A list of strings representing the file lines. - */ + /* test if file or directory exists */ +int BLI_exists(const char *name); + /* test if there is a directory at the specified path */ int BLI_is_dir(const char *file); -struct LinkNode *BLI_read_file_as_lines(const char *name); +/** + * Read a file as ASCII lines. An empty list is + * returned if the file cannot be opened or read. + * + * @attention The returned list should be free'd with + * BLI_free_file_lines. + * + * @param name The name of the file to read. + * @retval A list of strings representing the file lines. + */ - /** - * Free the list returned by BLI_read_file_as_lines. - */ +struct LinkNode *BLI_read_file_as_lines(const char *name); void BLI_free_file_lines(struct LinkNode *lines); /* Compare if one was last modified before the other */ diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index e848ad8d0d3..3a2efbd6feb 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -195,10 +195,6 @@ int BLI_touch(const char *file) return 0; } -int BLI_exists(const char *file) { - return BLI_exist(file); -} - #ifdef WIN32 static char str[MAXPATHLEN+12]; diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index f57ac09c9b9..91e813a0350 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -84,6 +84,18 @@ #endif /* WIN32 */ +/* standard paths */ +#ifdef WIN32 +#define BLENDER_USER_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#define BLENDER_SYSTEM_FORMAT "%s\\Blender Foundation\\Blender\\%s" +#elif defined(__APPLE__) +#define BLENDER_USER_FORMAT "%s/Blender/%s" +#define BLENDER_SYSTEM_FORMAT "%s/Blender/%s" +#else +#define BLENDER_USER_FORMAT "%s/.blender/%s" +#define BLENDER_SYSTEM_FORMAT "%s/blender/%s" +#endif + /* local */ #define UNIQUE_NAME_MAX 128 @@ -1635,7 +1647,7 @@ static int add_win32_extension(char *name) int retval = 0; int type; - type = BLI_exist(name); + type = BLI_exists(name); if ((type == 0) || S_ISDIR(type)) { #ifdef _WIN32 char filename[FILE_MAXDIR+FILE_MAXFILE]; @@ -1655,7 +1667,7 @@ static int add_win32_extension(char *name) strcat(filename, extensions); } - type = BLI_exist(filename); + type = BLI_exists(filename); if (type && (! S_ISDIR(type))) { retval = 1; strcpy(name, filename); diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 7638e95b4ec..8b383f5fd11 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -438,7 +438,7 @@ size_t BLI_filepathsize(const char *path) } -int BLI_exist(const char *name) +int BLI_exists(const char *name) { #if defined(WIN32) && !defined(__MINGW32__) struct _stat64i32 st; @@ -471,7 +471,7 @@ int BLI_exist(const char *name) /* would be better in fileops.c except that it needs stat.h so add here */ int BLI_is_dir(const char *file) { - return S_ISDIR(BLI_exist(file)); + return S_ISDIR(BLI_exists(file)); } LinkNode *BLI_read_file_as_lines(const char *name) diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp index 8059b1cf3ff..b411d61fe37 100644 --- a/source/blender/collada/collada.cpp +++ b/source/blender/collada/collada.cpp @@ -60,7 +60,7 @@ extern "C" export_settings.filepath = (char *)filepath; /* annoying, collada crashes if file cant be created! [#27162] */ - if(!BLI_exist(filepath)) { + if(!BLI_exists(filepath)) { BLI_make_existing_file(filepath); /* makes the dir if its not there */ if(BLI_touch(filepath) == 0) { return 0; diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 918adcac138..c6ba7118925 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -833,7 +833,7 @@ static void fluidsim_delete_until_lastframe(FluidsimSettings *fss) curFrame++; - if((exists = BLI_exist(targetFile))) + if((exists = BLI_exists(targetFile))) { BLI_delete(targetFile, 0, 0); BLI_delete(targetFileVel, 0, 0); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 559873bd601..7a379b93ee6 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -749,7 +749,7 @@ int file_exec(bContext *C, wmOperator *exec_op) file_sfile_to_operator(op, sfile, filepath); - if (BLI_exist(sfile->params->dir)) + if (BLI_exists(sfile->params->dir)) fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir, 0, 1); BLI_make_file_string(G.main->name, filepath, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index bd9a38ab27e..a843129c4d9 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -278,7 +278,7 @@ void fsmenu_read_bookmarks(struct FSMenu* fsmenu, const char *filename) if (line[len-1] == '\n') { line[len-1] = '\0'; } - if (BLI_exist(line)) { + if (BLI_exists(line)) { fsmenu_insert_entry(fsmenu, category, line, 0, 1); } } diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c index c114c44ad77..13e9c88bfe3 100644 --- a/source/blender/makesrna/intern/rna_fluidsim.c +++ b/source/blender/makesrna/intern/rna_fluidsim.c @@ -96,7 +96,7 @@ static int fluidsim_find_lastframe(FluidsimSettings *fss) do { BLI_strncpy(targetFile, targetDir, sizeof(targetFile)); BLI_path_frame(targetFile, curFrame++, 0); - } while(BLI_exist(targetFile)); + } while(BLI_exists(targetFile)); return curFrame - 1; } diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 405779c360f..104a298acf1 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -3146,11 +3146,11 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri if(scene->r.mode & (R_NO_OVERWRITE | R_TOUCH)) BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION, TRUE); - if(scene->r.mode & R_NO_OVERWRITE && BLI_exist(name)) { + if(scene->r.mode & R_NO_OVERWRITE && BLI_exists(name)) { printf("skipping existing frame \"%s\"\n", name); continue; } - if(scene->r.mode & R_TOUCH && !BLI_exist(name)) { + if(scene->r.mode & R_TOUCH && !BLI_exists(name)) { BLI_make_existing_file(name); /* makes the dir if its not there */ BLI_touch(name); } @@ -3175,7 +3175,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri if(G.afbreek==1) { /* remove touched file */ if(BKE_imtype_is_movie(scene->r.imtype) == 0) { - if (scene->r.mode & R_TOUCH && BLI_exist(name) && BLI_filepathsize(name) == 0) { + if (scene->r.mode & R_TOUCH && BLI_exists(name) && BLI_filepathsize(name) == 0) { BLI_delete(name, 0, 0); } } From 74017cb0202811587c0227b9ff50ca9ae12c9a8e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 22 Oct 2011 01:53:35 +0000 Subject: [PATCH 111/119] header cleanup and typo's --- intern/ghost/test/multitest/MultiTest.c | 5 ++--- intern/memutil/MEM_SmartPtr.h | 4 ++-- source/blender/blenkernel/BKE_bvhutils.h | 3 +-- source/blender/blenkernel/intern/DerivedMesh.c | 1 + source/blender/blenkernel/intern/blender.c | 1 - source/blender/blenkernel/intern/bvhutils.c | 1 + source/blender/blenkernel/intern/cloth.c | 1 + source/blender/blenkernel/intern/constraint.c | 1 - source/blender/blenkernel/intern/customdata.c | 1 - source/blender/blenkernel/intern/effect.c | 2 -- source/blender/blenkernel/intern/modifier.c | 1 + source/blender/blenkernel/intern/particle.c | 1 + source/blender/blenkernel/intern/particle_system.c | 5 ++--- source/blender/blenkernel/intern/sequencer.c | 4 +++- source/blender/blenloader/intern/readfile.c | 2 +- source/blender/editors/mesh/mesh_navmesh.c | 1 + source/blender/editors/physics/physics_fluid.c | 1 - source/blender/editors/render/render_shading.c | 1 - source/blender/editors/space_file/filesel.c | 1 - source/blender/editors/space_node/node_edit.c | 1 - source/blender/editors/space_sequencer/space_sequencer.c | 1 - source/blender/imbuf/intern/IMB_anim.h | 3 --- source/blender/makesrna/intern/rna_armature_api.c | 1 - source/blender/makesrna/intern/rna_fcurve_api.c | 2 -- source/blender/makesrna/intern/rna_gpencil.c | 2 -- source/blender/makesrna/intern/rna_object_force.c | 2 -- source/blender/makesrna/intern/rna_particle.c | 1 - source/blender/makesrna/intern/rna_scene.c | 1 - source/blender/modifiers/intern/MOD_edgesplit.c | 1 + source/blender/nodes/composite/node_composite_util.c | 4 ++-- source/blender/windowmanager/intern/wm_event_system.c | 4 ++++ source/gameengine/Ketsji/KX_BulletPhysicsController.cpp | 2 +- source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 2 +- source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h | 2 +- source/gameengine/VideoTexture/VideoFFmpeg.cpp | 2 +- 35 files changed, 28 insertions(+), 40 deletions(-) diff --git a/intern/ghost/test/multitest/MultiTest.c b/intern/ghost/test/multitest/MultiTest.c index 00939e907d6..1ba28d21808 100644 --- a/intern/ghost/test/multitest/MultiTest.c +++ b/intern/ghost/test/multitest/MultiTest.c @@ -50,9 +50,8 @@ extern int datatoc_bfont_ttf_size; extern char datatoc_bfont_ttf[]; - // XXX, bad, but BLI uses these - char bprogname[160]= ""; -char U[1024]= {0}; + /* cheat */ + char U[1024]= {0}; #endif #include "Util.h" diff --git a/intern/memutil/MEM_SmartPtr.h b/intern/memutil/MEM_SmartPtr.h index 50d69cfd8dd..ee3c4f22536 100644 --- a/intern/memutil/MEM_SmartPtr.h +++ b/intern/memutil/MEM_SmartPtr.h @@ -49,14 +49,14 @@ * the Standard Template Library but without the painful get() * semantics to access the internal c style pointer. * - * It is often useful to explicitely decalre ownership of memory + * It is often useful to explicitly declare ownership of memory * allocated on the heap within class or function scope. This * class helps you to encapsulate this ownership within a value * type. When an instance of this class goes out of scope it * makes sure that any memory associated with it's internal pointer * is deleted. It can help to inform users of an aggregate class * that it owns instances of it's members and these instances - * should not be shared. This is not reliably enforcable in C++ + * should not be shared. This is not reliably enforceable in C++ * but this class attempts to make the 1-1 relationship clear. * * @section Example usage diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h index 29487713ad4..b497698f660 100644 --- a/source/blender/blenkernel/BKE_bvhutils.h +++ b/source/blender/blenkernel/BKE_bvhutils.h @@ -34,7 +34,6 @@ */ #include "BLI_kdopbvh.h" -#include "BLI_linklist.h" /* * This header encapsulates necessary code to buld a BVH @@ -118,7 +117,7 @@ void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data); #define BVHTREE_FROM_VERTICES 1 #define BVHTREE_FROM_EDGES 2 -typedef LinkNode* BVHCache; +typedef struct LinkNode* BVHCache; /* diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index c379111ccfd..f9bd76e4ef0 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -50,6 +50,7 @@ #include "BLI_memarena.h" #include "BLI_pbvh.h" #include "BLI_utildefines.h" +#include "BLI_linklist.h" #include "BKE_cdderivedmesh.h" #include "BKE_displist.h" diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 7a675dc64c3..b2bcd9aa6aa 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -59,7 +59,6 @@ #include "BLI_blenlib.h" #include "BLI_bpath.h" #include "BLI_dynstr.h" -#include "BLI_path_util.h" #include "BLI_utildefines.h" #include "BLI_callbacks.h" diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c index 2ce6b92922d..79229c49b4d 100644 --- a/source/blender/blenkernel/intern/bvhutils.c +++ b/source/blender/blenkernel/intern/bvhutils.c @@ -40,6 +40,7 @@ #include "BLI_editVert.h" #include "BLI_utildefines.h" +#include "BLI_linklist.h" #include "BKE_DerivedMesh.h" diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index 260b51bc321..d30476d44f8 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -40,6 +40,7 @@ #include "BLI_math.h" #include "BLI_edgehash.h" #include "BLI_utildefines.h" +#include "BLI_linklist.h" #include "BKE_cdderivedmesh.h" #include "BKE_cloth.h" diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 6dbea2c9ab6..8eff86d846e 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -41,7 +41,6 @@ #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" -#include "BLI_listbase.h" #include "BLI_math.h" #include "BLI_editVert.h" #include "BLI_utildefines.h" diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 7d98119610b..d59a9eed363 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -47,7 +47,6 @@ #include "DNA_ID.h" #include "BLI_blenlib.h" -#include "BLI_path_util.h" #include "BLI_linklist.h" #include "BLI_math.h" #include "BLI_mempool.h" diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 5ce7b82a45f..f728916a158 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -59,8 +59,6 @@ #include "BLI_math.h" #include "BLI_blenlib.h" #include "BLI_jitter.h" -#include "BLI_listbase.h" -#include "BLI_noise.h" #include "BLI_rand.h" #include "BLI_utildefines.h" diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index edddcb4a6b2..2056762e627 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -54,6 +54,7 @@ #include "BLI_utildefines.h" #include "BLI_path_util.h" #include "BLI_listbase.h" +#include "BLI_linklist.h" #include "BLI_string.h" #include "BKE_bmesh.h" diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 8669c4e0efd..8a83dcac765 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -54,6 +54,7 @@ #include "BLI_kdtree.h" #include "BLI_rand.h" #include "BLI_threads.h" +#include "BLI_linklist.h" #include "BKE_anim.h" #include "BKE_animsys.h" diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 64a90e15b60..c642f76d400 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -64,13 +64,12 @@ #include "BLI_rand.h" #include "BLI_jitter.h" #include "BLI_math.h" -#include "BLI_blenlib.h" +#include "BLI_blenlib.h" /* BLI_storage.h For _LARGEFILE64_SOURCE; zlib needs this on some systems */ #include "BLI_kdtree.h" #include "BLI_kdopbvh.h" -#include "BLI_listbase.h" #include "BLI_threads.h" -#include "BLI_storage.h" /* For _LARGEFILE64_SOURCE; zlib needs this on some systems */ #include "BLI_utildefines.h" +#include "BLI_linklist.h" #include "BKE_main.h" #include "BKE_animsys.h" diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index a7c19130929..e0e61a71dc2 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -51,6 +51,7 @@ #include "BLI_listbase.h" #include "BLI_path_util.h" #include "BLI_string.h" +#include "BLI_storage.h" #include "BLI_threads.h" #include "BLI_utildefines.h" @@ -61,9 +62,10 @@ #include "BKE_sequencer.h" #include "BKE_fcurve.h" #include "BKE_scene.h" -#include "RNA_access.h" #include "BKE_utildefines.h" +#include "RNA_access.h" + #include "RE_pipeline.h" #include diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 3cf19df41a8..c93e1790669 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -8661,7 +8661,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for (wo = main->world.first; wo; wo= wo->id.next) { /* Migrate to Bullet for games, except for the NaN versions */ - /* People can still explicitely choose for Sumo (after 2.42 is out) */ + /* People can still explicitly choose for Sumo (after 2.42 is out) */ if(main->versionfile > 225) wo->physicsEngine = WOPHY_BULLET; if(WO_AODIST == wo->aomode) diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c index b8ace26991e..84943ecc777 100644 --- a/source/blender/editors/mesh/mesh_navmesh.c +++ b/source/blender/editors/mesh/mesh_navmesh.c @@ -53,6 +53,7 @@ #include "BLI_listbase.h" #include "BLI_utildefines.h" #include "BLI_math_vector.h" +#include "BLI_linklist.h" #include "ED_object.h" #include "ED_mesh.h" diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index c6ba7118925..188bab9dced 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -50,7 +50,6 @@ #include "DNA_object_fluidsim.h" #include "BLI_blenlib.h" -#include "BLI_fileops.h" #include "BLI_threads.h" #include "BLI_math.h" #include "BLI_utildefines.h" diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index faf0baa1aca..582a8596dd1 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -47,7 +47,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_editVert.h" -#include "BLI_listbase.h" #include "BLI_utildefines.h" #include "BKE_animsys.h" diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index 149d84b86cd..790e2f573ee 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -64,7 +64,6 @@ #include "BLI_blenlib.h" #include "BLI_linklist.h" -#include "BLI_path_util.h" #include "BLI_storage_types.h" #include "BLI_dynstr.h" #include "BLI_utildefines.h" diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 85942901c00..5ca9a6f12fb 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -68,7 +68,6 @@ #include "BLI_math.h" -#include "BLI_blenlib.h" #include "BLI_storage_types.h" #include "RE_pipeline.h" diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 45908801147..9468603be7f 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -40,7 +40,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "BLI_path_util.h" #include "BLI_utildefines.h" #include "BKE_context.h" diff --git a/source/blender/imbuf/intern/IMB_anim.h b/source/blender/imbuf/intern/IMB_anim.h index 43168b97b88..05ba4b0d05f 100644 --- a/source/blender/imbuf/intern/IMB_anim.h +++ b/source/blender/imbuf/intern/IMB_anim.h @@ -67,9 +67,6 @@ # include #endif -#include "BLI_blenlib.h" /* BLI_remlink BLI_filesize BLI_addtail - BLI_countlist BLI_stringdec */ - #include "imbuf.h" #include "AVI_avi.h" diff --git a/source/blender/makesrna/intern/rna_armature_api.c b/source/blender/makesrna/intern/rna_armature_api.c index b65122835f1..fa079486b95 100644 --- a/source/blender/makesrna/intern/rna_armature_api.c +++ b/source/blender/makesrna/intern/rna_armature_api.c @@ -40,7 +40,6 @@ #include -#include "BLI_blenlib.h" #include "BKE_armature.h" void rna_EditBone_align_roll(EditBone *ebo, float no[3]) diff --git a/source/blender/makesrna/intern/rna_fcurve_api.c b/source/blender/makesrna/intern/rna_fcurve_api.c index a1b84f5bcfe..50698757ecb 100644 --- a/source/blender/makesrna/intern/rna_fcurve_api.c +++ b/source/blender/makesrna/intern/rna_fcurve_api.c @@ -42,8 +42,6 @@ #include -#include "BLI_blenlib.h" - #include "BKE_animsys.h" #include "BKE_fcurve.h" diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index 371c387e871..eacd814c926 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -40,8 +40,6 @@ #ifdef RNA_RUNTIME -#include "BLI_path_util.h" - static int rna_GPencilLayer_active_frame_editable(PointerRNA *ptr) { bGPDlayer *gpl= (bGPDlayer *)ptr->data; diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 597f8730e72..4ac29d8a881 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -98,8 +98,6 @@ static EnumPropertyItem empty_vortex_shape_items[] = { #include "BKE_pointcache.h" #include "BKE_depsgraph.h" -#include "BLI_blenlib.h" - #include "ED_object.h" static void rna_Cache_change(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index a1d156a2b2a..4b27e025fa3 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -120,7 +120,6 @@ EnumPropertyItem part_hair_ren_as_items[] = { #ifdef RNA_RUNTIME #include "BLI_math.h" -#include "BLI_listbase.h" #include "BKE_context.h" #include "BKE_cloth.h" diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 70ff5682717..8b41c85e313 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -175,7 +175,6 @@ EnumPropertyItem image_color_mode_items[] ={ #include "BLI_threads.h" #include "BLI_editVert.h" -#include "BLI_blenlib.h" #include "BKE_context.h" #include "BKE_global.h" diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c index db491742265..e9a341896e6 100644 --- a/source/blender/modifiers/intern/MOD_edgesplit.c +++ b/source/blender/modifiers/intern/MOD_edgesplit.c @@ -47,6 +47,7 @@ #include "BLI_edgehash.h" #include "BLI_math.h" #include "BLI_utildefines.h" +#include "BLI_linklist.h" #include "BKE_cdderivedmesh.h" diff --git a/source/blender/nodes/composite/node_composite_util.c b/source/blender/nodes/composite/node_composite_util.c index 78f97c5289e..2047a9089f4 100644 --- a/source/blender/nodes/composite/node_composite_util.c +++ b/source/blender/nodes/composite/node_composite_util.c @@ -1320,7 +1320,7 @@ void IIR_gauss(CompBuf* src, float sigma, int chan, int xy) if ((xy < 1) || (xy > 3)) xy = 3; - // XXX The YVV macro defined below explicitely expects sources of at least 3x3 pixels, + // XXX The YVV macro defined below explicitly expects sources of at least 3x3 pixels, // so just skiping blur along faulty direction if src's def is below that limit! if (src->x < 3) xy &= ~(int) 1; if (src->y < 3) xy &= ~(int) 2; @@ -1346,7 +1346,7 @@ void IIR_gauss(CompBuf* src, float sigma, int chan, int xy) // it seems to work, not entirely sure if it is actually totally correct, // Besides J.M.Geusebroek's anigauss.c (see http://www.science.uva.nl/~mark), // found one other implementation by Cristoph Lampert, - // but neither seem to be quite the same, result seems to be ok sofar anyway. + // but neither seem to be quite the same, result seems to be ok so far anyway. // Extra scale factor here to not have to do it in filter, // though maybe this had something to with the precision errors sc = cf[0]/((1.0 + cf[1] - cf[2] + cf[3])*(1.0 - cf[1] - cf[2] - cf[3])*(1.0 + cf[2] + (cf[1] - cf[3])*cf[3])); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index e73440e5eb0..bed75f58e58 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2729,4 +2729,8 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U } } + + /* Handy when debugging checking events */ + /* WM_event_print(&event); */ + } diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp index 6e5513991f9..3febff92e18 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp @@ -98,7 +98,7 @@ void KX_BulletPhysicsController::SetObject (SG_IObject* object) if (m_bSensor) { // use a different callback function for sensor object, - // bullet will not synchronize, we must do it explicitely + // bullet will not synchronize, we must do it explicitly SG_Callbacks& callbacks = gameobj->GetSGNode()->GetCallBackFunctions(); callbacks.m_updatefunc = KX_GameObject::SynchronizeTransformFunc; } diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 2bc11ef5f5b..76bdd36a70f 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -767,7 +767,7 @@ void CcdPhysicsController::SetPhysicsEnvironment(class PHY_IPhysicsEnvironment * if (m_cci.m_physicsEnv != physicsEnv) { // since the environment is changing, we must also move the controler to the - // new environement. Note that we don't handle sensor explicitely: this + // new environment. Note that we don't handle sensor explicitly: this // function can be called on sensor but only when they are not registered if (m_cci.m_physicsEnv->removeCcdPhysicsController(this)) { diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h index 60da4523dd5..e0a12a64b12 100644 --- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h +++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h @@ -63,7 +63,7 @@ struct PHY_RayCastResult /** * This class replaces the ignoreController parameter of rayTest function. * It allows more sophisticated filtering on the physics controller before computing the ray intersection to save CPU. - * It is only used to its full extend by the Ccd physics environement (Bullet). + * It is only used to its full extend by the Ccd physics environment (Bullet). */ class PHY_IRayCastFilterCallback { diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.cpp b/source/gameengine/VideoTexture/VideoFFmpeg.cpp index 8a76b0c004d..ae8132514cf 100644 --- a/source/gameengine/VideoTexture/VideoFFmpeg.cpp +++ b/source/gameengine/VideoTexture/VideoFFmpeg.cpp @@ -607,7 +607,7 @@ void VideoFFmpeg::openCam (char * file, short camIdx) // The driver name is constructed automatically from the device type: // v4l : /dev/video // dv1394: /dev/dv1394/ - // If you have different driver name, you can specify the driver name explicitely + // If you have different driver name, you can specify the driver name explicitly // instead of device type. Examples of valid filename: // /dev/v4l/video0:pal // /dev/ieee1394/1:ntsc From be61044eee235c979b7e291f95330a6017074143 Mon Sep 17 00:00:00 2001 From: Alexander Kuznetsov Date: Sat, 22 Oct 2011 03:14:19 +0000 Subject: [PATCH 112/119] Fix for text object on windows. No utf8 when keyup --- intern/ghost/intern/GHOST_SystemWin32.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 99ce81165ad..956a159a4ec 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -725,6 +725,8 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP (wchar_t*)utf16, 1, (LPSTR) utf8_char, 5, NULL,NULL); else *utf8_char = 0; + + if(!keyDown) utf8_char[0] = '\0'; event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, (*utf8_char & 0x80)?'?':*utf8_char, utf8_char); From 19f79f73a8b241127bec2b177b8f7d289071120a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 22 Oct 2011 03:39:13 +0000 Subject: [PATCH 113/119] BLI_utildefine minor edits - removed AVG2, was only used once. - remove unused LONGCOPY define. - removed BLI_STRUCT_OFFSET, was only used once, replce with offsetof - formatting edits, split some macros over multiple lines. --- .../blender/blenkernel/intern/subsurf_ccg.c | 2 +- source/blender/blenlib/BLI_blenlib.h | 7 - source/blender/blenlib/BLI_utildefines.h | 220 +++++++++++------- .../nodes/node_composite_directionalblur.c | 5 +- 4 files changed, 143 insertions(+), 91 deletions(-) diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 3d3806f7c02..0d9f27e4fa9 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -141,7 +141,7 @@ static CCGSubSurf *_getSubSurf(CCGSubSurf *prevSS, int subdivLevels, int useAgin ccgSubSurf_setUseAgeCounts(ccgSS, 1, 8, 8, 8); } - ccgSubSurf_setCalcVertexNormals(ccgSS, 1, BLI_STRUCT_OFFSET(DMGridData, no)); + ccgSubSurf_setCalcVertexNormals(ccgSS, 1, offsetof(DMGridData, no)); return ccgSS; } diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index 4eb4b71da12..a5c0e03c09e 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -84,13 +84,6 @@ extern "C" { #include "BLI_noise.h" -/** - * @param strct The structure of interest - * @param member The name of a member field of @a strct - * @retval The offset in bytes of @a member within @a strct - */ -#define BLI_STRUCT_OFFSET(strct, member) ((int)(intptr_t) &((strct*) 0)->member) - #ifdef __cplusplus } #endif diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index b2b3e7381c6..c1eed40de74 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -67,63 +67,113 @@ #define MAX3(x,y,z) MAX2( MAX2((x),(y)) , (z) ) #define MAX4(x,y,z,a) MAX2( MAX2((x),(y)) , MAX2((z),(a)) ) -#define INIT_MINMAX(min, max) { (min)[0]= (min)[1]= (min)[2]= 1.0e30f; (max)[0]= (max)[1]= (max)[2]= -1.0e30f; } - -#define INIT_MINMAX2(min, max) { (min)[0]= (min)[1]= 1.0e30f; (max)[0]= (max)[1]= -1.0e30f; } - -#define DO_MIN(vec, min) { if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ - if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ - if( (min)[2]>(vec)[2] ) (min)[2]= (vec)[2]; } \ - -#define DO_MAX(vec, max) { if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ - if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; \ - if( (max)[2]<(vec)[2] ) (max)[2]= (vec)[2]; } \ - -#define DO_MINMAX(vec, min, max) { if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ - if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ - if( (min)[2]>(vec)[2] ) (min)[2]= (vec)[2]; \ - if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ - if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; \ - if( (max)[2]<(vec)[2] ) (max)[2]= (vec)[2]; } \ - -#define DO_MINMAX2(vec, min, max) { if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ - if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ - if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ - if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; } +#define INIT_MINMAX(min, max) { \ + (min)[0]= (min)[1]= (min)[2]= 1.0e30f; \ + (max)[0]= (max)[1]= (max)[2]= -1.0e30f; \ + } +#define INIT_MINMAX2(min, max) { \ + (min)[0]= (min)[1]= 1.0e30f; \ + (max)[0]= (max)[1]= -1.0e30f; \ + } +#define DO_MIN(vec, min) { \ + if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ + if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ + if( (min)[2]>(vec)[2] ) (min)[2]= (vec)[2]; \ + } +#define DO_MAX(vec, max) { \ + if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ + if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; \ + if( (max)[2]<(vec)[2] ) (max)[2]= (vec)[2]; \ + } +#define DO_MINMAX(vec, min, max) { \ + if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ + if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ + if( (min)[2]>(vec)[2] ) (min)[2]= (vec)[2]; \ + if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ + if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; \ + if( (max)[2]<(vec)[2] ) (max)[2]= (vec)[2]; \ + } +#define DO_MINMAX2(vec, min, max) { \ + if( (min)[0]>(vec)[0] ) (min)[0]= (vec)[0]; \ + if( (min)[1]>(vec)[1] ) (min)[1]= (vec)[1]; \ + if( (max)[0]<(vec)[0] ) (max)[0]= (vec)[0]; \ + if( (max)[1]<(vec)[1] ) (max)[1]= (vec)[1]; \ + } /* some math and copy defines */ #ifndef SWAP -# define SWAP(type, a, b) { type sw_ap; sw_ap=(a); (a)=(b); (b)=sw_ap; } +# define SWAP(type, a, b) { type sw_ap; sw_ap=(a); (a)=(b); (b)=sw_ap; } #endif -#define ABS(a) ( (a)<0 ? (-(a)) : (a) ) - -#define AVG2(x, y) ( 0.5 * ((x) + (y)) ) +#define ABS(a) ( (a)<0 ? (-(a)) : (a) ) #define FTOCHAR(val) ((val)<=0.0f)? 0 : (((val)>(1.0f-0.5f/255.0f))? 255 : (char)((255.0f*(val))+0.5f)) #define FTOUSHORT(val) ((val >= 1.0f-0.5f/65535)? 65535: (val <= 0.0f)? 0: (unsigned short)(val*65535.0f + 0.5f)) -#define F3TOCHAR3(v2,v1) (v1)[0]=FTOCHAR((v2[0])); (v1)[1]=FTOCHAR((v2[1])); (v1)[2]=FTOCHAR((v2[2])) -#define F3TOCHAR4(v2,v1) { (v1)[0]=FTOCHAR((v2[0])); (v1)[1]=FTOCHAR((v2[1])); (v1)[2]=FTOCHAR((v2[2])); \ - (v1)[3] = 255; } -#define F4TOCHAR4(v2,v1) { (v1)[0]=FTOCHAR((v2[0])); (v1)[1]=FTOCHAR((v2[1])); (v1)[2]=FTOCHAR((v2[2])); \ - (v1)[3]=FTOCHAR((v2[3])); } +#define F3TOCHAR3(v2, v1) { \ + (v1)[0]= FTOCHAR((v2[0])); \ + (v1)[1]= FTOCHAR((v2[1])); \ + (v1)[2]= FTOCHAR((v2[2])); \ + } +#define F3TOCHAR4(v2, v1) { \ + (v1)[0]= FTOCHAR((v2[0])); \ + (v1)[1]= FTOCHAR((v2[1])); \ + (v1)[2]= FTOCHAR((v2[2])); \ + (v1)[3]= 255; \ + } +#define F4TOCHAR4(v2, v1) { \ + (v1)[0]= FTOCHAR((v2[0])); \ + (v1)[1]= FTOCHAR((v2[1])); \ + (v1)[2]= FTOCHAR((v2[2])); \ + (v1)[3]= FTOCHAR((v2[3])); \ + } +#define VECCOPY(v1, v2) { \ + *(v1)= *(v2); \ + *(v1+1)= *(v2+1); \ + *(v1+2)= *(v2+2); \ + } +#define VECCOPY2D(v1, v2) { \ + *(v1)= *(v2); \ + *(v1+1)= *(v2+1); \ + } +#define QUATCOPY(v1, v2) { \ + *(v1)= *(v2); \ + *(v1+1)= *(v2+1); \ + *(v1+2)= *(v2+2); \ + *(v1+3)= *(v2+3); \ + } +#define VECADD(v1,v2,v3) { \ + *(v1)= *(v2) + *(v3); \ + *(v1+1)= *(v2+1) + *(v3+1); \ + *(v1+2)= *(v2+2) + *(v3+2); \ + } +#define VECSUB(v1,v2,v3) { \ + *(v1)= *(v2) - *(v3); \ + *(v1+1)= *(v2+1) - *(v3+1); \ + *(v1+2)= *(v2+2) - *(v3+2); \ + } +#define VECSUB2D(v1,v2,v3) { \ + *(v1)= *(v2) - *(v3); \ + *(v1+1)= *(v2+1) - *(v3+1); \ + } +#define VECADDFAC(v1,v2,v3,fac) { \ + *(v1)= *(v2) + *(v3)*(fac); \ + *(v1+1)= *(v2+1) + *(v3+1)*(fac); \ + *(v1+2)= *(v2+2) + *(v3+2)*(fac); \ + } +#define VECSUBFAC(v1,v2,v3,fac) { \ + *(v1)= *(v2) - *(v3)*(fac); \ + *(v1+1)= *(v2+1) - *(v3+1)*(fac); \ + *(v1+2)= *(v2+2) - *(v3+2)*(fac); \ + } +#define QUATADDFAC(v1,v2,v3,fac) { \ + *(v1)= *(v2) + *(v3)*(fac); \ + *(v1+1)= *(v2+1) + *(v3+1)*(fac); \ + *(v1+2)= *(v2+2) + *(v3+2)*(fac); \ + *(v1+3)= *(v2+3) + *(v3+3)*(fac); \ + } - -#define VECCOPY(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1); *(v1+2)= *(v2+2);} -#define VECCOPY2D(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1);} -#define QUATCOPY(v1,v2) {*(v1)= *(v2); *(v1+1)= *(v2+1); *(v1+2)= *(v2+2); *(v1+3)= *(v2+3);} -#define LONGCOPY(a, b, c) {int lcpc=c, *lcpa=(int *)a, *lcpb=(int *)b; while(lcpc-->0) *(lcpa++)= *(lcpb++);} - - -#define VECADD(v1,v2,v3) {*(v1)= *(v2) + *(v3); *(v1+1)= *(v2+1) + *(v3+1); *(v1+2)= *(v2+2) + *(v3+2);} -#define VECSUB(v1,v2,v3) {*(v1)= *(v2) - *(v3); *(v1+1)= *(v2+1) - *(v3+1); *(v1+2)= *(v2+2) - *(v3+2);} -#define VECSUB2D(v1,v2,v3) {*(v1)= *(v2) - *(v3); *(v1+1)= *(v2+1) - *(v3+1);} -#define VECADDFAC(v1,v2,v3,fac) {*(v1)= *(v2) + *(v3)*(fac); *(v1+1)= *(v2+1) + *(v3+1)*(fac); *(v1+2)= *(v2+2) + *(v3+2)*(fac);} -#define VECSUBFAC(v1,v2,v3,fac) {*(v1)= *(v2) - *(v3)*(fac); *(v1+1)= *(v2+1) - *(v3+1)*(fac); *(v1+2)= *(v2+2) - *(v3+2)*(fac);} -#define QUATADDFAC(v1,v2,v3,fac) {*(v1)= *(v2) + *(v3)*(fac); *(v1+1)= *(v2+1) + *(v3+1)*(fac); *(v1+2)= *(v2+2) + *(v3+2)*(fac); *(v1+3)= *(v2+3) + *(v3+3)*(fac);} - -#define INPR(v1, v2) ( (v1)[0]*(v2)[0] + (v1)[1]*(v2)[1] + (v1)[2]*(v2)[2] ) +#define INPR(v1, v2) ( (v1)[0]*(v2)[0] + (v1)[1]*(v2)[1] + (v1)[2]*(v2)[2] ) /* some misc stuff.... */ #define CLAMP(a, b, c) if((a)<(b)) (a)=(b); else if((a)>(c)) (a)=(c) @@ -138,28 +188,36 @@ #define IN_RANGE_INCL(a, b, c) ((b < c)? ((b<=a && a<=c)? 1:0) : ((c<=a && a<=b)? 1:0)) /* array helpers */ -#define ARRAY_LAST_ITEM(arr_start, arr_dtype, elem_size, tot) (arr_dtype *)((char*)arr_start + (elem_size*(tot - 1))) -#define ARRAY_HAS_ITEM(item, arr_start, arr_dtype, elem_size, tot) ((item >= arr_start) && (item <= ARRAY_LAST_ITEM(arr_start, arr_dtype, elem_size, tot))) +#define ARRAY_LAST_ITEM(arr_start, arr_dtype, elem_size, tot) \ + (arr_dtype *)((char*)arr_start + (elem_size*(tot - 1))) + +#define ARRAY_HAS_ITEM(item, arr_start, arr_dtype, elem_size, tot) ( \ + (item >= arr_start) && \ + (item <= ARRAY_LAST_ITEM(arr_start, arr_dtype, elem_size, tot)) \ + ) /* This one rotates the bytes in an int64, int (32) and short (16) */ -#define SWITCH_INT64(a) { \ - char s_i, *p_i; \ - p_i= (char *)&(a); \ - s_i=p_i[0]; p_i[0]=p_i[7]; p_i[7]=s_i; \ - s_i=p_i[1]; p_i[1]=p_i[6]; p_i[6]=s_i; \ - s_i=p_i[2]; p_i[2]=p_i[5]; p_i[5]=s_i; \ - s_i=p_i[3]; p_i[3]=p_i[4]; p_i[4]=s_i; } +#define SWITCH_INT64(a) { \ + char s_i, *p_i; \ + p_i= (char *)&(a); \ + s_i= p_i[0]; p_i[0]= p_i[7]; p_i[7]= s_i; \ + s_i= p_i[1]; p_i[1]= p_i[6]; p_i[6]= s_i; \ + s_i= p_i[2]; p_i[2]= p_i[5]; p_i[5]= s_i; \ + s_i= p_i[3]; p_i[3]= p_i[4]; p_i[4]= s_i; \ + } - #define SWITCH_INT(a) { \ - char s_i, *p_i; \ - p_i= (char *)&(a); \ - s_i=p_i[0]; p_i[0]=p_i[3]; p_i[3]=s_i; \ - s_i=p_i[1]; p_i[1]=p_i[2]; p_i[2]=s_i; } +#define SWITCH_INT(a) { \ + char s_i, *p_i; \ + p_i= (char *)&(a); \ + s_i= p_i[0]; p_i[0]= p_i[3]; p_i[3]= s_i; \ + s_i= p_i[1]; p_i[1]= p_i[2]; p_i[2]= s_i; \ + } -#define SWITCH_SHORT(a) { \ - char s_i, *p_i; \ - p_i= (char *)&(a); \ - s_i=p_i[0]; p_i[0]=p_i[1]; p_i[1]=s_i; } +#define SWITCH_SHORT(a) { \ + char s_i, *p_i; \ + p_i= (char *)&(a); \ + s_i=p_i[0]; p_i[0]=p_i[1]; p_i[1]=s_i; \ + } /* Warning-free macros for storing ints in pointers. Use these _only_ @@ -221,25 +279,25 @@ # else # define _dummy_abort() (void)0 # endif -# if defined(__GNUC__) || defined(_MSC_VER) /* just want to check if __func__ is available */ -# define BLI_assert(a) \ -do { \ - if (!(a)) { \ - fprintf(stderr, \ - "BLI_assert failed: %s, %s(), %d at \'%s\'\n", \ - __FILE__, __func__, __LINE__, STRINGIFY(a)); \ - _dummy_abort(); \ - } \ +# if defined(__GNUC__) || defined(_MSC_VER) /* check __func__ is available */ +# define BLI_assert(a) \ +do { \ + if (!(a)) { \ + fprintf(stderr, \ + "BLI_assert failed: %s, %s(), %d at \'%s\'\n", \ + __FILE__, __func__, __LINE__, STRINGIFY(a)); \ + _dummy_abort(); \ + } \ } while (0) # else # define BLI_assert(a) \ -do { \ - if (0 == (a)) { \ - fprintf(stderr, \ - "BLI_assert failed: %s, %d at \'%s\'\n", \ - __FILE__, __LINE__, STRINGIFY(a)); \ - _dummy_abort(); \ - } \ +do { \ + if (0 == (a)) { \ + fprintf(stderr, \ + "BLI_assert failed: %s, %d at \'%s\'\n", \ + __FILE__, __LINE__, STRINGIFY(a)); \ + _dummy_abort(); \ + } \ } while (0) # endif #else diff --git a/source/blender/nodes/composite/nodes/node_composite_directionalblur.c b/source/blender/nodes/composite/nodes/node_composite_directionalblur.c index 1a5e3150f53..34815fcb24c 100644 --- a/source/blender/nodes/composite/nodes/node_composite_directionalblur.c +++ b/source/blender/nodes/composite/nodes/node_composite_directionalblur.c @@ -86,8 +86,9 @@ static CompBuf *dblur(bNode *node, CompBuf *img, int iterations, int wrap, getpix(tmp, cs * u + ss * v + center_x_pix, cs * v - ss * u + center_y_pix, col); /* mix img and transformed tmp */ - for(j= 0; j < 4; ++j) - img->rect[p + j]= AVG2(img->rect[p + j], col[j]); + for(j= 0; j < 4; ++j) { + img->rect[p + j]= 0.5f * (img->rect[p + j] + col[j]); + } } } From 8f4a01568460ad20c5a5c8a39feadea512e60d8f Mon Sep 17 00:00:00 2001 From: Alexander Kuznetsov Date: Sat, 22 Oct 2011 04:36:58 +0000 Subject: [PATCH 114/119] Fix for alt-tab in Windows. utf8_buf can be not null terminated, plus not init as in this case. (I need to investigate more) --- source/blender/windowmanager/intern/wm_event_system.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index bed75f58e58..177dd560838 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2611,7 +2611,7 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U GHOST_TEventKeyData *kd= customdata; event.type= convert_key(kd->key); event.ascii= kd->ascii; - strcpy(event.utf8_buf, kd->utf8_buf); + memcpy(event.utf8_buf, kd->utf8_buf,sizeof(event.utf8_buf));/* might be not null terminated*/ event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE; /* exclude arrow keys, esc, etc from text input */ From cac4fde224f3dfb2831779df7b61f819a3564e2d Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Sat, 22 Oct 2011 09:28:10 +0000 Subject: [PATCH 115/119] utf8 OSX - cleanup I still think utf8_buf can be 5 (4 bytes + '\0'), but even 6 may not be enough to what is coming next (NFC - precomposedStringWithCanonicalMapping) incorporating ascii as a subset of utf8. I don't think we need to re-encode it. U+0000 ~ U+00FF - latin1 set --- intern/ghost/intern/GHOST_SystemCocoa.mm | 43 ++++++------------------ 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 1a6aaadb506..9ec8dd0abad 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1655,15 +1655,8 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) return GHOST_kFailure; } - /* unicode input - not entirely supported yet - * but we are getting the right byte, Blender is not drawing it though - * also some languages may need special treatment: - - Japanese: romanji is used as input, and every 2 letters OSX converts the text - to Hiragana/Katakana. - - Korean: one add one letter at a time, and then the OSX join them in the equivalent - combined letter. - */ char utf8_buf[6]= {'\0'}; + ascii = 0; switch ([event type]) { @@ -1678,32 +1671,18 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) keyCode = convertKey([event keyCode],0, [event type] == NSKeyDown?kUCKeyActionDown:kUCKeyActionUp); - /* ascii */ + /* handling both unicode or ascii */ characters = [event characters]; - if ([characters length]>0) { //Check for dead keys - //Convert characters to iso latin 1 encoding - convertedCharacters = [characters dataUsingEncoding:NSISOLatin1StringEncoding]; - if ([convertedCharacters length]>0) - ascii =((char*)[convertedCharacters bytes])[0]; - else - ascii = 0; //Character not available in iso latin 1 encoding - } - else - ascii= 0; - - /* unicode */ if ([characters length]>0) { convertedCharacters = [characters dataUsingEncoding:NSUTF8StringEncoding]; - if ([convertedCharacters length]>0) { - utf8_buf[0] = ((char*)[convertedCharacters bytes])[0]; - utf8_buf[1] = ((char*)[convertedCharacters bytes])[1]; - utf8_buf[2] = ((char*)[convertedCharacters bytes])[2]; - utf8_buf[3] = ((char*)[convertedCharacters bytes])[3]; - utf8_buf[4] = ((char*)[convertedCharacters bytes])[4]; - utf8_buf[5] = ((char*)[convertedCharacters bytes])[5]; + + for (int x = 0; x < [convertedCharacters length]; x++) { + utf8_buf[x] = ((char*)[convertedCharacters bytes])[x]; } - else { - utf8_buf[0] = '\0'; + + /* ascii is a subset of unicode */ + if ([convertedCharacters length] == 1) { + ascii = utf8_buf[0]; } } @@ -1714,9 +1693,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyDown, window, keyCode, ascii, utf8_buf) ); //printf("Key down rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } else { - // XXX Font Object bug - backspace or adding new chars are being computed twice (keydown and keyup) - utf8_buf[0] = '\0'; - pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, ascii, utf8_buf) ); + pushEvent( new GHOST_EventKey([event timestamp]*1000, GHOST_kEventKeyUp, window, keyCode, 0, '\0') ); //printf("Key up rawCode=0x%x charsIgnoringModifiers=%c keyCode=%u ascii=%i %c utf8=%s\n",[event keyCode],[charsIgnoringModifiers length]>0?[charsIgnoringModifiers characterAtIndex:0]:' ',keyCode,ascii,ascii, utf8_buf); } break; From ebe63b664baa2f4e65643a2535766e5babf9c8a7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 22 Oct 2011 10:49:35 +0000 Subject: [PATCH 116/119] py api - added PyC_UnicodeFromByteAndSize() to match PyUnicode_FromStringAndSize() also made RNA_property_string_get_alloc() return the length of the new string to avoid having to run strlen on it after. --- .../editors/animation/anim_ipo_utils.c | 2 +- source/blender/editors/interface/interface.c | 7 ++-- .../editors/interface/interface_layout.c | 2 +- .../editors/interface/interface_templates.c | 4 +- .../editors/space_buttons/buttons_context.c | 2 +- .../editors/space_buttons/buttons_ops.c | 2 +- .../editors/space_outliner/outliner_edit.c | 2 +- .../editors/space_outliner/outliner_tree.c | 2 +- source/blender/makesrna/RNA_access.h | 4 +- source/blender/makesrna/intern/rna_access.c | 21 ++++++---- source/blender/python/generic/IDProp.c | 8 ++-- source/blender/python/generic/py_capi_utils.c | 11 +++-- source/blender/python/generic/py_capi_utils.h | 5 ++- source/blender/python/intern/bpy_interface.c | 13 +++--- source/blender/python/intern/bpy_rna.c | 42 ++++++++++++------- 15 files changed, 78 insertions(+), 49 deletions(-) diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c index 383e0bac796..d18a3c320f7 100644 --- a/source/blender/editors/animation/anim_ipo_utils.c +++ b/source/blender/editors/animation/anim_ipo_utils.c @@ -118,7 +118,7 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu) PropertyRNA *nameprop= RNA_struct_name_property(ptr.type); if (nameprop) { /* this gets a string which will need to be freed */ - structname= RNA_property_string_get_alloc(&ptr, nameprop, NULL, 0); + structname= RNA_property_string_get_alloc(&ptr, nameprop, NULL, 0, NULL); free_structname= 1; } else diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index a12d297bbb1..b7b572e7217 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -1593,17 +1593,18 @@ void ui_get_but_string(uiBut *but, char *str, size_t maxlen) if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) { PropertyType type; char *buf= NULL; + int buf_len; type= RNA_property_type(but->rnaprop); if(type == PROP_STRING) { /* RNA string */ - buf= RNA_property_string_get_alloc(&but->rnapoin, but->rnaprop, str, maxlen); + buf= RNA_property_string_get_alloc(&but->rnapoin, but->rnaprop, str, maxlen, &buf_len); } else if(type == PROP_POINTER) { /* RNA pointer */ PointerRNA ptr= RNA_property_pointer_get(&but->rnapoin, but->rnaprop); - buf= RNA_struct_name_get_alloc(&ptr, str, maxlen); + buf= RNA_struct_name_get_alloc(&ptr, str, maxlen, &buf_len); } if(!buf) { @@ -1611,7 +1612,7 @@ void ui_get_but_string(uiBut *but, char *str, size_t maxlen) } else if(buf && buf != str) { /* string was too long, we have to truncate */ - BLI_strncpy(str, buf, maxlen); + memcpy(str, buf, MIN2(maxlen, buf_len+1)); MEM_freeN(buf); } } diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 2f423a361b8..be6c89eb37d 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -1221,7 +1221,7 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, const char *s iconid= ui_id_icon_get((bContext*)C, id, 1); } else { - name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); + name= RNA_struct_name_get_alloc(&itemptr, NULL, 0, NULL); /* could use the string length here */ iconid = 0; } diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index c6bc0f58b5b..34f9849fac7 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -2085,7 +2085,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe if(icon == ICON_NONE || icon == ICON_DOT) icon= 0; - namebuf= RNA_struct_name_get_alloc(itemptr, NULL, 0); + namebuf= RNA_struct_name_get_alloc(itemptr, NULL, 0, NULL); name= (namebuf)? namebuf: ""; /* hardcoded types */ @@ -2270,7 +2270,7 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, const char * if(found) { /* create button */ - name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); + name= RNA_struct_name_get_alloc(&itemptr, NULL, 0, NULL); icon= list_item_icon_get(C, &itemptr, rnaicon, 0); uiItemL(row, (name)? name: "", icon); diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index 4a2860335fe..309c5cfc218 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -925,7 +925,7 @@ void buttons_context_draw(const bContext *C, uiLayout *layout) if(ptr->data) { icon= RNA_struct_ui_icon(ptr->type); - name= RNA_struct_name_get_alloc(ptr, namebuf, sizeof(namebuf)); + name= RNA_struct_name_get_alloc(ptr, namebuf, sizeof(namebuf), NULL); if(name) { if(!ELEM(sbuts->mainb, BCONTEXT_RENDER, BCONTEXT_SCENE) && ptr->type == &RNA_Scene) diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 75b3eb950a5..3cf4de992e5 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -169,7 +169,7 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!prop) return OPERATOR_CANCELLED; - str= RNA_property_string_get_alloc(&ptr, prop, NULL, 0); + str= RNA_property_string_get_alloc(&ptr, prop, NULL, 0, NULL); /* useful yet irritating feature, Shift+Click to open the file * Alt+Click to browse a folder in the OS's browser */ diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c index 1d1abf80fe4..30a7abd3c0b 100644 --- a/source/blender/editors/space_outliner/outliner_edit.c +++ b/source/blender/editors/space_outliner/outliner_edit.c @@ -1021,7 +1021,7 @@ static void tree_element_to_path(SpaceOops *soops, TreeElement *te, TreeStoreEle /* tsenext= TREESTORE(temnext); */ /* UNUSED */ nextptr= &temnext->rnaptr; - name= RNA_struct_name_get_alloc(nextptr, buf, sizeof(buf)); + name= RNA_struct_name_get_alloc(nextptr, buf, sizeof(buf), NULL); if(name) { /* if possible, use name as a key in the path */ diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index dda103b971b..925c4571a66 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -972,7 +972,7 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i } else if(type == TSE_RNA_STRUCT) { /* struct */ - te->name= RNA_struct_name_get_alloc(ptr, NULL, 0); + te->name= RNA_struct_name_get_alloc(ptr, NULL, 0, NULL); if(te->name) te->flag |= TE_FREE_NAME; diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 1f45fe2646f..486e189873d 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -648,7 +648,7 @@ PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifi FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier); const struct ListBase *RNA_struct_type_functions(StructRNA *srna); -char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen); +char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len); /* Properties * @@ -755,7 +755,7 @@ void RNA_property_float_get_default_array(PointerRNA *ptr, PropertyRNA *prop, fl float RNA_property_float_get_default_index(PointerRNA *ptr, PropertyRNA *prop, int index); void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value); -char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen); +char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len); void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value); int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop); void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char *value); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 149497c85fb..c1c22afcf75 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -748,12 +748,12 @@ void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type) srna->blender_type= blender_type; } -char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen) +char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen, int *r_len) { PropertyRNA *nameprop; if(ptr->data && (nameprop = RNA_struct_name_property(ptr->type))) - return RNA_property_string_get_alloc(ptr, nameprop, fixedbuf, fixedlen); + return RNA_property_string_get_alloc(ptr, nameprop, fixedbuf, fixedlen, r_len); return NULL; } @@ -2276,7 +2276,8 @@ void RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop, char *value) strcpy(value, sprop->defaultvalue); } -char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen) +char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, + char *fixedbuf, int fixedlen, int *r_len) { char *buf; int length; @@ -2301,6 +2302,10 @@ char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char *fi BLI_assert(buf[length] == '\0'); #endif + if (r_len) { + *r_len= length; + } + return buf; } @@ -2836,15 +2841,17 @@ int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, co PropertyRNA *nameprop; char name[256], *nameptr; int found= 0; + int keylen= strlen(key); + int namelen; RNA_property_collection_begin(ptr, prop, &iter); for(; iter.valid; RNA_property_collection_next(&iter)) { if(iter.ptr.data && iter.ptr.type->nameproperty) { nameprop= iter.ptr.type->nameproperty; - nameptr= RNA_property_string_get_alloc(&iter.ptr, nameprop, name, sizeof(name)); + nameptr= RNA_property_string_get_alloc(&iter.ptr, nameprop, name, sizeof(name), &namelen); - if(strcmp(nameptr, key) == 0) { + if((keylen == namelen) && (strcmp(nameptr, key) == 0)) { *r_ptr= iter.ptr; found= 1; } @@ -4254,7 +4261,7 @@ char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, in PropertyRNA *prop= RNA_struct_find_property(ptr, name); if(prop) { - return RNA_property_string_get_alloc(ptr, prop, fixedbuf, fixedlen); + return RNA_property_string_get_alloc(ptr, prop, fixedbuf, fixedlen, NULL); /* TODO, pass length */ } else { printf("%s: %s.%s not found.\n", __func__, ptr->type->identifier, name); @@ -5442,7 +5449,7 @@ int RNA_property_copy(PointerRNA *ptr, PointerRNA *fromptr, PropertyRNA *prop, i } case PROP_STRING: { - char *value= RNA_property_string_get_alloc(fromptr, prop, NULL, 0); + char *value= RNA_property_string_get_alloc(fromptr, prop, NULL, 0, NULL); RNA_property_string_set(ptr, prop, value); MEM_freeN(value); return 1; diff --git a/source/blender/python/generic/IDProp.c b/source/blender/python/generic/IDProp.c index 1524812086b..541008ebaa5 100644 --- a/source/blender/python/generic/IDProp.c +++ b/source/blender/python/generic/IDProp.c @@ -67,9 +67,9 @@ PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop ) switch ( prop->type ) { case IDP_STRING: #ifdef USE_STRING_COERCE - return PyC_UnicodeFromByte(IDP_Array(prop)); + return PyC_UnicodeFromByteAndSize(IDP_Array(prop), prop->len); #else - return PyUnicode_FromString(IDP_Array(prop)); + return PyUnicode_FromStringAndSize(IDP_Array(prop), prop->len); #endif case IDP_INT: return PyLong_FromLong( (long)prop->data.val ); @@ -485,9 +485,9 @@ static PyObject *BPy_IDGroup_MapDataToPy(IDProperty *prop) switch (prop->type) { case IDP_STRING: #ifdef USE_STRING_COERCE - return PyC_UnicodeFromByte(IDP_Array(prop)); + return PyC_UnicodeFromByteAndSize(IDP_Array(prop), prop->len); #else - return PyUnicode_FromString(IDP_Array(prop)); + return PyUnicode_FromStringAndSize(IDP_Array(prop), prop->len); #endif break; case IDP_FLOAT: diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index 575495e186e..587ac69071e 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -386,9 +386,9 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce) } } -PyObject *PyC_UnicodeFromByte(const char *str) +PyObject *PyC_UnicodeFromByteAndSize(const char *str, Py_ssize_t size) { - PyObject *result= PyUnicode_FromString(str); + PyObject *result= PyUnicode_FromStringAndSize(str, size); if (result) { /* 99% of the time this is enough but we better support non unicode * chars since blender doesnt limit this */ @@ -397,11 +397,16 @@ PyObject *PyC_UnicodeFromByte(const char *str) else { PyErr_Clear(); /* this means paths will always be accessible once converted, on all OS's */ - result= PyUnicode_DecodeFSDefault(str); + result= PyUnicode_DecodeFSDefaultAndSize(str, size); return result; } } +PyObject *PyC_UnicodeFromByte(const char *str) +{ + return PyC_UnicodeFromByteAndSize(str, strlen(str)); +} + /***************************************************************************** * Description: This function creates a new Python dictionary object. * note: dict is owned by sys.modules["__main__"] module, reference is borrowed diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h index f38ce209be2..ccd001aabd4 100644 --- a/source/blender/python/generic/py_capi_utils.h +++ b/source/blender/python/generic/py_capi_utils.h @@ -40,8 +40,9 @@ void PyC_FileAndNum_Safe(const char **filename, int *lineno); /* checks python int PyC_AsArray(void *array, PyObject *value, const int length, const PyTypeObject *type, const short is_double, const char *error_prefix); /* follow http://www.python.org/dev/peps/pep-0383/ */ -PyObject * PyC_UnicodeFromByte(const char *str); -const char * PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce); /* coerce must be NULL */ +PyObject * PyC_UnicodeFromByte(const char *str); +PyObject * PyC_UnicodeFromByteAndSize(const char *str, Py_ssize_t size); +const char * PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce); /* coerce must be NULL */ /* name namespace function for bpy & bge */ PyObject * PyC_DefaultNameSpace(const char *filename); diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 90156a9cb3e..7a39cfc93c8 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -203,9 +203,9 @@ void BPY_python_start(int argc, const char **argv) /* allow to use our own included python */ PyC_SetHomePath(BLI_get_folder(BLENDER_SYSTEM_PYTHON, NULL)); - /* Python 3.2 now looks for '2.58/python/include/python3.2d/pyconfig.h' to parse - * from the 'sysconfig' module which is used by 'site', so for now disable site. - * alternatively we could copy the file. */ + /* Python 3.2 now looks for '2.xx/python/include/python3.2d/pyconfig.h' to + * parse from the 'sysconfig' module which is used by 'site', + * so for now disable site. alternatively we could copy the file. */ Py_NoSiteFlag= 1; Py_Initialize(); @@ -215,8 +215,11 @@ void BPY_python_start(int argc, const char **argv) { int i; PyObject *py_argv= PyList_New(argc); - for (i=0; iptr, NULL, FALSE); + name= RNA_struct_name_get_alloc(&self->ptr, NULL, 0, NULL); if (name) { ret= PyUnicode_FromFormat("", RNA_struct_identifier(self->ptr.type), @@ -901,7 +901,7 @@ static PyObject *pyrna_prop_str(BPy_PropertyRNA *self) /* if a pointer, try to print name of pointer target too */ if (RNA_property_type(self->prop) == PROP_POINTER) { ptr= RNA_property_pointer_get(&self->ptr, self->prop); - name= RNA_struct_name_get_alloc(&ptr, NULL, FALSE); + name= RNA_struct_name_get_alloc(&ptr, NULL, 0, NULL); if (name) { ret= PyUnicode_FromFormat("", @@ -1257,14 +1257,22 @@ static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val) ret= PyUnicode_FromString(enum_item->identifier); } else { - const char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, FALSE); + const char *ptr_name= RNA_struct_name_get_alloc(ptr, NULL, 0, NULL); /* prefer not fail silently incase of api errors, maybe disable it later */ - printf("RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'\n", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop)); + printf("RNA Warning: Current value \"%d\" " + "matches no enum in '%s', '%s', '%s'\n", + val, RNA_struct_identifier(ptr->type), + ptr_name, RNA_property_identifier(prop)); #if 0 // gives python decoding errors while generating docs :( char error_str[256]; - BLI_snprintf(error_str, sizeof(error_str), "RNA Warning: Current value \"%d\" matches no enum in '%s', '%s', '%s'", val, RNA_struct_identifier(ptr->type), ptr_name, RNA_property_identifier(prop)); + BLI_snprintf(error_str, sizeof(error_str), + "RNA Warning: Current value \"%d\" " + "matches no enum in '%s', '%s', '%s'", + val, RNA_struct_identifier(ptr->type), + ptr_name, RNA_property_identifier(prop)); + PyErr_Warn(PyExc_RuntimeWarning, error_str); #endif @@ -1311,19 +1319,20 @@ PyObject *pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop) { int subtype= RNA_property_subtype(prop); const char *buf; + int buf_len; char buf_fixed[32]; - buf= RNA_property_string_get_alloc(ptr, prop, buf_fixed, sizeof(buf_fixed)); + buf= RNA_property_string_get_alloc(ptr, prop, buf_fixed, sizeof(buf_fixed), &buf_len); #ifdef USE_STRING_COERCE /* only file paths get special treatment, they may contain non utf-8 chars */ if (ELEM3(subtype, PROP_FILEPATH, PROP_DIRPATH, PROP_FILENAME)) { - ret= PyC_UnicodeFromByte(buf); + ret= PyC_UnicodeFromByteAndSize(buf, buf_len); } else { - ret= PyUnicode_FromString(buf); + ret= PyUnicode_FromStringAndSize(buf, buf_len); } #else // USE_STRING_COERCE - ret= PyUnicode_FromString(buf); + ret= PyUnicode_FromStringAndSize(buf, buf_len); #endif // USE_STRING_COERCE if (buf_fixed != buf) { MEM_freeN((void *)buf); @@ -3127,14 +3136,15 @@ static void pyrna_dir_members_rna(PyObject *list, PointerRNA *ptr) * Collect RNA attributes */ char name[256], *nameptr; + int namelen; iterprop= RNA_struct_iterator_property(ptr->type); RNA_PROP_BEGIN(ptr, itemptr, iterprop) { - nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name)); + nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { - pystring= PyUnicode_FromString(nameptr); + pystring= PyUnicode_FromStringAndSize(nameptr, namelen); PyList_Append(list, pystring); Py_DECREF(pystring); @@ -3716,13 +3726,14 @@ static PyObject *pyrna_prop_collection_keys(BPy_PropertyRNA *self) PyObject *ret= PyList_New(0); PyObject *item; char name[256], *nameptr; + int namelen; RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { - nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name)); + nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { /* add to python list */ - item= PyUnicode_FromString(nameptr); + item= PyUnicode_FromStringAndSize(nameptr, namelen); PyList_Append(ret, item); Py_DECREF(item); /* done */ @@ -3751,15 +3762,16 @@ static PyObject *pyrna_prop_collection_items(BPy_PropertyRNA *self) PyObject *ret= PyList_New(0); PyObject *item; char name[256], *nameptr; + int namelen; int i= 0; RNA_PROP_BEGIN(&self->ptr, itemptr, self->prop) { if (itemptr.data) { /* add to python list */ item= PyTuple_New(2); - nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name)); + nameptr= RNA_struct_name_get_alloc(&itemptr, name, sizeof(name), &namelen); if (nameptr) { - PyTuple_SET_ITEM(item, 0, PyUnicode_FromString(nameptr)); + PyTuple_SET_ITEM(item, 0, PyUnicode_FromStringAndSize(nameptr, namelen)); if (name != nameptr) MEM_freeN(nameptr); } From c1de5cc83829b65094eee024af10928bd13261ce Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 22 Oct 2011 11:34:01 +0000 Subject: [PATCH 117/119] - use defines for wmKeyMapItem & wmEvent alt/shift/ctrl/oskey - clear utf8_buf on key up & complain if its set (should never happen) --- .../editors/interface/interface_handlers.c | 30 +++++------ .../editors/interface/interface_panel.c | 2 +- .../blender/editors/physics/particle_edit.c | 2 +- source/blender/editors/transform/transform.c | 9 ++-- source/blender/windowmanager/WM_types.h | 5 ++ .../windowmanager/intern/wm_event_system.c | 52 ++++++++++--------- .../blender/windowmanager/intern/wm_keymap.c | 26 ++-------- 7 files changed, 58 insertions(+), 68 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c02bbafce15..32c4ec21e13 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -2199,15 +2199,11 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data /* always set */ but->modifier_key = 0; - if(event->shift) - but->modifier_key |= KM_SHIFT; - if(event->alt) - but->modifier_key |= KM_ALT; - if(event->ctrl) - but->modifier_key |= KM_CTRL; - if(event->oskey) - but->modifier_key |= KM_OSKEY; - + if(event->shift) but->modifier_key |= KM_SHIFT; + if(event->alt) but->modifier_key |= KM_ALT; + if(event->ctrl) but->modifier_key |= KM_CTRL; + if(event->oskey) but->modifier_key |= KM_OSKEY; + ui_check_but(but); ED_region_tag_redraw(data->region); @@ -3673,7 +3669,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt if(sel!= -1) { /* ok, we move a point */ /* deselect all if this one is deselect. except if we hold shift */ - if(event->shift==0) { + if(event->shift == FALSE) { for(a=0; atotpoint; a++) cmp[a].flag &= ~SELECT; cmp[sel].flag |= SELECT; @@ -3712,7 +3708,7 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt if(!data->dragchange) { /* deselect all, select one */ - if(event->shift==0) { + if(event->shift == FALSE) { for(a=0; atotpoint; a++) cmp[a].flag &= ~SELECT; cmp[data->dragsel].flag |= SELECT; @@ -4491,7 +4487,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) ui_but_drop (C, event, but, data); } /* handle keyframing */ - else if(event->type == IKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { + else if(event->type == IKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_delete_keyframe(C); else @@ -4502,7 +4498,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } /* handle drivers */ - else if(event->type == DKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { + else if(event->type == DKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_remove_driver(C); else @@ -4513,7 +4509,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } /* handle keyingsets */ - else if(event->type == KKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { + else if(event->type == KKEY && !ELEM3(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_remove_keyingset(C); else @@ -5983,9 +5979,9 @@ static int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle case ZKEY: { if( (event->val == KM_PRESS) && - (event->shift == FALSE) && - (event->ctrl == FALSE) && - (event->oskey == FALSE) + (event->shift == FALSE) && + (event->ctrl == FALSE) && + (event->oskey == FALSE) ) { for(but= block->buttons.first; but; but= but->next) { diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index 890a2b4ee7f..546f4f0b639 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -1042,7 +1042,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) inside= 1; if(inside && event->val==KM_PRESS) { - if(event->type == AKEY && !ELEM4(1, event->ctrl, event->oskey, event->shift, event->alt)) { + if(event->type == AKEY && !ELEM4(KM_MOD_FIRST, event->ctrl, event->oskey, event->shift, event->alt)) { if(pa->flag & PNL_CLOSEDY) { if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 740fd5137de..c0b81efe18c 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3700,7 +3700,7 @@ static void brush_edit_apply_event(bContext *C, wmOperator *op, wmEvent *event) RNA_collection_add(op->ptr, "stroke", &itemptr); RNA_float_set_array(&itemptr, "mouse", mouse); - RNA_boolean_set(&itemptr, "pen_flip", event->shift != 0); // XXX hardcoded + RNA_boolean_set(&itemptr, "pen_flip", event->shift != FALSE); // XXX hardcoded /* apply */ brush_edit_apply(C, op, &itemptr); diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 859c7778883..e3eb14e2fe6 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -1543,10 +1543,11 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int { if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) { - if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) || - (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) || - (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) || - (kmi->type == OSKEY && event->oskey)) { + if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) || + (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) || + (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) || + ((kmi->type == OSKEY) && event->oskey) ) + { t->modifiers |= MOD_SNAP_INVERT; } break; diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index f28fb08ac6e..5048166c8b7 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -98,6 +98,11 @@ enum { #define KM_ALT2 64 #define KM_OSKEY2 128 +/* KM_MOD_ flags for wmKeyMapItem and wmEvent.alt/shift/oskey/ctrl */ +/* note that KM_ANY and FALSE are used with these defines too */ +#define KM_MOD_FIRST 1 +#define KM_MOD_SECOND 2 + /* type: defined in wm_event_types.c */ #define KM_TEXTINPUT -2 diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 177dd560838..c798b284c7b 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -2615,35 +2615,39 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U event.val= (type==GHOST_kEventKeyDown)?KM_PRESS:KM_RELEASE; /* exclude arrow keys, esc, etc from text input */ - if(type==GHOST_kEventKeyUp || (event.ascii<32 && event.ascii>0)) - event.ascii= '\0'; - - /* modifiers */ - if (event.type==LEFTSHIFTKEY || event.type==RIGHTSHIFTKEY) { - event.shift= evt->shift= (event.val==KM_PRESS); - if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->oskey)) - event.shift= evt->shift = 3; // define? - } - else if (event.type==LEFTCTRLKEY || event.type==RIGHTCTRLKEY) { - event.ctrl= evt->ctrl= (event.val==KM_PRESS); - if(event.val==KM_PRESS && (evt->shift || evt->alt || evt->oskey)) - event.ctrl= evt->ctrl = 3; // define? - } - else if (event.type==LEFTALTKEY || event.type==RIGHTALTKEY) { - event.alt= evt->alt= (event.val==KM_PRESS); - if(event.val==KM_PRESS && (evt->ctrl || evt->shift || evt->oskey)) - event.alt= evt->alt = 3; // define? - } - else if (event.type==OSKEY) { - event.oskey= evt->oskey= (event.val==KM_PRESS); - if(event.val==KM_PRESS && (evt->ctrl || evt->alt || evt->shift)) - event.oskey= evt->oskey = 3; // define? + if(type==GHOST_kEventKeyUp) { + if (event.ascii<32 && event.ascii > 0) { + event.ascii= '\0'; + } + + /* ghost should do this already for key up */ + if (event.utf8_buf[0]) { + printf("%s: ghost on you're platform is misbehaving, utf8 events on key up!\n", __func__); + } + event.utf8_buf[0]= '\0'; } - else { + + /* modifiers */ + /* assigning both first and second is strange - campbell */ + switch(event.type) { + case LEFTSHIFTKEY: case RIGHTSHIFTKEY: + event.shift= evt->shift= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE; + break; + case LEFTCTRLKEY: case RIGHTCTRLKEY: + event.ctrl= evt->ctrl= (event.val==KM_PRESS) ? ((evt->shift || evt->alt || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE; + break; + case LEFTALTKEY: case RIGHTALTKEY: + event.alt= evt->alt= (event.val==KM_PRESS) ? ((evt->ctrl || evt->shift || evt->oskey) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE; + break; + case OSKEY: + event.oskey= evt->oskey= (event.val==KM_PRESS) ? ((evt->ctrl || evt->alt || evt->shift) ? (KM_MOD_FIRST | KM_MOD_SECOND) : KM_MOD_FIRST) : FALSE; + break; + default: if(event.val==KM_PRESS && event.keymodifier==0) evt->keymodifier= event.type; /* only set in eventstate, for next event */ else if(event.val==KM_RELEASE && event.keymodifier==event.type) event.keymodifier= evt->keymodifier= 0; + break; } /* this case happens on some systems that on holding a key pressed, diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 854fa688ea4..99bd83ef8c1 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -310,31 +310,15 @@ static void keymap_event_set(wmKeyMapItem *kmi, short type, short val, int modif kmi->type= type; kmi->val= val; kmi->keymodifier= keymodifier; - + if(modifier == KM_ANY) { kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= KM_ANY; } else { - - kmi->shift= kmi->ctrl= kmi->alt= kmi->oskey= 0; - - /* defines? */ - if(modifier & KM_SHIFT) - kmi->shift= 1; - else if(modifier & KM_SHIFT2) - kmi->shift= 2; - if(modifier & KM_CTRL) - kmi->ctrl= 1; - else if(modifier & KM_CTRL2) - kmi->ctrl= 2; - if(modifier & KM_ALT) - kmi->alt= 1; - else if(modifier & KM_ALT2) - kmi->alt= 2; - if(modifier & KM_OSKEY) - kmi->oskey= 1; - else if(modifier & KM_OSKEY2) - kmi->oskey= 2; + kmi->shift= (modifier & KM_SHIFT) ? KM_MOD_FIRST : ((modifier & KM_SHIFT2) ? KM_MOD_SECOND : FALSE); + kmi->ctrl= (modifier & KM_CTRL) ? KM_MOD_FIRST : ((modifier & KM_CTRL2) ? KM_MOD_SECOND : FALSE); + kmi->alt= (modifier & KM_ALT) ? KM_MOD_FIRST : ((modifier & KM_ALT2) ? KM_MOD_SECOND : FALSE); + kmi->oskey= (modifier & KM_OSKEY) ? KM_MOD_FIRST : ((modifier & KM_OSKEY2) ? KM_MOD_SECOND : FALSE); } } From e417e011d558693b9ff9cd048efe9cbe79da74be Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Sat, 22 Oct 2011 15:35:49 +0000 Subject: [PATCH 118/119] Code cleanup: file operations merged into single header, some function names made less cryptic and changed to indicate if they work on files or directories. --- .../blender/blenfont/intern/blf_translation.c | 2 +- source/blender/blenkernel/intern/effect.c | 1 - source/blender/blenkernel/intern/fluidsim.c | 1 - source/blender/blenkernel/intern/packedFile.c | 4 +- .../blenkernel/intern/particle_system.c | 3 +- source/blender/blenkernel/intern/sequencer.c | 1 - source/blender/blenlib/BLI_blenlib.h | 2 - source/blender/blenlib/BLI_edgehash.h | 2 +- source/blender/blenlib/BLI_fileops.h | 56 +++++++++++---- ...LI_storage_types.h => BLI_fileops_types.h} | 9 +-- source/blender/blenlib/BLI_mempool.h | 2 +- source/blender/blenlib/BLI_scanfill.h | 2 +- source/blender/blenlib/BLI_storage.h | 71 ------------------- source/blender/blenlib/CMakeLists.txt | 3 +- source/blender/blenlib/intern/fileops.c | 47 +++++++----- source/blender/blenlib/intern/path_util.c | 12 ++-- source/blender/blenlib/intern/storage.c | 31 ++++---- .../blender/blenloader/intern/readblenentry.c | 8 +-- source/blender/blenloader/intern/runtime.c | 2 +- source/blender/blenloader/intern/writefile.c | 2 +- source/blender/collada/ImageExporter.cpp | 2 +- source/blender/collada/collada.cpp | 5 +- .../editors/interface/interface_icons.c | 9 ++- .../editors/space_buttons/buttons_ops.c | 1 - source/blender/editors/space_file/file_draw.c | 1 - source/blender/editors/space_file/file_ops.c | 5 +- source/blender/editors/space_file/filelist.c | 5 +- source/blender/editors/space_file/filesel.c | 1 - .../blender/editors/space_file/space_file.c | 1 - .../blender/editors/space_image/image_ops.c | 4 +- source/blender/editors/space_node/node_edit.c | 5 -- .../editors/space_sequencer/sequencer_add.c | 1 - .../editors/space_sequencer/sequencer_edit.c | 3 +- .../imbuf/intern/openexr/openexr_api.cpp | 2 +- source/blender/imbuf/intern/readimage.c | 4 +- source/blender/imbuf/intern/thumbs.c | 6 +- source/blender/python/intern/bpy_interface.c | 2 +- .../blender/render/intern/source/pipeline.c | 6 +- .../blender/windowmanager/intern/wm_files.c | 4 +- 39 files changed, 137 insertions(+), 191 deletions(-) rename source/blender/blenlib/{BLI_storage_types.h => BLI_fileops_types.h} (93%) delete mode 100644 source/blender/blenlib/BLI_storage.h diff --git a/source/blender/blenfont/intern/blf_translation.c b/source/blender/blenfont/intern/blf_translation.c index 90d9c4a5981..17290c66544 100644 --- a/source/blender/blenfont/intern/blf_translation.c +++ b/source/blender/blenfont/intern/blf_translation.c @@ -60,7 +60,7 @@ unsigned char *BLF_get_unifont(int *unifont_size_r) BLI_snprintf(unifont_path, sizeof(unifont_path), "%s/%s", fontpath, unifont_filename); - unifont_ttf= (unsigned char*)BLI_ungzip_to_mem(unifont_path, &unifont_size); + unifont_ttf= (unsigned char*)BLI_file_ungzip_to_mem(unifont_path, &unifont_size); } else { printf("%s: 'fonts' data path not found for international font, continuing\n", __func__); diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index f728916a158..e3e769253f1 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -33,7 +33,6 @@ #include -#include "BLI_storage.h" /* _LARGEFILE_SOURCE */ #include #include diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c index 1c2f1c8487c..9247646b927 100644 --- a/source/blender/blenkernel/intern/fluidsim.c +++ b/source/blender/blenkernel/intern/fluidsim.c @@ -33,7 +33,6 @@ #include -#include "BLI_storage.h" /* _LARGEFILE_SOURCE */ #include "MEM_guardedalloc.h" diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 0041cd33c14..70b0b7727c4 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -192,7 +192,7 @@ PackedFile *newPackedFile(ReportList *reports, const char *filename, const char if (file <= 0) { BKE_reportf(reports, RPT_ERROR, "Unable to pack file, source path not found: \"%s\"", name); } else { - filelen = BLI_filesize(file); + filelen = BLI_file_descriptor_size(file); if (filelen == 0) { // MEM_mallocN complains about MEM_mallocN(0, "bla"); @@ -283,7 +283,7 @@ int writePackedFile(ReportList *reports, const char *filename, PackedFile *pf, i for (number = 1; number <= 999; number++) { BLI_snprintf(tempname, sizeof(tempname), "%s.%03d_", name, number); if (! BLI_exists(tempname)) { - if (BLI_copy_fileops(name, tempname) == RET_OK) { + if (BLI_copy(name, tempname) == RET_OK) { remove_tmp = TRUE; } break; diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index c642f76d400..cebefe81495 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -36,7 +36,6 @@ #include -#include "BLI_storage.h" /* _LARGEFILE_SOURCE */ #include #include @@ -64,7 +63,7 @@ #include "BLI_rand.h" #include "BLI_jitter.h" #include "BLI_math.h" -#include "BLI_blenlib.h" /* BLI_storage.h For _LARGEFILE64_SOURCE; zlib needs this on some systems */ +#include "BLI_blenlib.h" #include "BLI_kdtree.h" #include "BLI_kdopbvh.h" #include "BLI_threads.h" diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index e0e61a71dc2..cf03a8d3f36 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -51,7 +51,6 @@ #include "BLI_listbase.h" #include "BLI_path_util.h" #include "BLI_string.h" -#include "BLI_storage.h" #include "BLI_threads.h" #include "BLI_utildefines.h" diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index a5c0e03c09e..356709d5ccd 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -76,8 +76,6 @@ extern "C" { #include "BLI_path_util.h" -#include "BLI_storage.h" - #include "BLI_fileops.h" #include "BLI_rect.h" diff --git a/source/blender/blenlib/BLI_edgehash.h b/source/blender/blenlib/BLI_edgehash.h index fba13035f02..23ffdbae59b 100644 --- a/source/blender/blenlib/BLI_edgehash.h +++ b/source/blender/blenlib/BLI_edgehash.h @@ -30,7 +30,7 @@ #ifndef BLI_EDGEHASH_H #define BLI_EDGEHASH_H -/** \file BLI_storage.h +/** \file BLI_edgehash.h * \ingroup bli * \author Daniel Dunbar * \brief A general unordered 2-int pair hash table ADT. diff --git a/source/blender/blenlib/BLI_fileops.h b/source/blender/blenlib/BLI_fileops.h index 354931e306a..ebe231e2973 100644 --- a/source/blender/blenlib/BLI_fileops.h +++ b/source/blender/blenlib/BLI_fileops.h @@ -29,10 +29,7 @@ /** \file BLI_fileops.h * \ingroup bli - * \author Daniel Dunbar - * \brief More low-level fileops from Daniel Dunbar. Two functions were also - * defined in storage.c. These are the old fop_ prefixes. There is - * definitely some redundancy here! + * \brief File and directory operations. * */ #ifndef BLI_FILEOPS_H @@ -42,17 +39,48 @@ extern "C" { #endif -void BLI_recurdir_fileops(const char *dirname); -int BLI_link(const char *file, const char *to); -int BLI_is_writable(const char *filename); +#include "BLI_fileops_types.h" -int BLI_copy_fileops(const char *file, const char *to); -int BLI_rename(const char *from, const char *to); -int BLI_gzip(const char *from, const char *to); -char *BLI_ungzip_to_mem(const char *from_file, int *size_r); -int BLI_delete(const char *file, int dir, int recursive); -int BLI_move(const char *file, const char *to); -int BLI_touch(const char *file); +/* for size_t (needed on windows) */ +#include + +/* Common */ + +int BLI_exists(const char *path); +int BLI_copy(const char *path, const char *to); +int BLI_rename(const char *from, const char *to); +int BLI_delete(const char *path, int dir, int recursive); +int BLI_move(const char *path, const char *to); +int BLI_create_symlink(const char *path, const char *to); + +/* Directories */ + +struct direntry; + +int BLI_is_dir(const char *path); +void BLI_dir_create_recursive(const char *dir); +double BLI_dir_free_space(const char *dir); +char *BLI_current_working_dir(char *dir, const int maxlen); + +unsigned int BLI_dir_contents(const char *dir, struct direntry **filelist); + +/* Files */ + +int BLI_file_is_writable(const char *file); +int BLI_file_touch(const char *file); + +int BLI_file_gzip(const char *from, const char *to); +char *BLI_file_ungzip_to_mem(const char *from_file, int *size_r); + +size_t BLI_file_descriptor_size(int file); +size_t BLI_file_size(const char *file); + + /* compare if one was last modified before the other */ +int BLI_file_older(const char *file1, const char *file2); + + /* read ascii file as lines, empty list if reading fails */ +struct LinkNode *BLI_file_read_as_lines(const char *file); +void BLI_file_free_lines(struct LinkNode *lines); #ifdef __cplusplus } diff --git a/source/blender/blenlib/BLI_storage_types.h b/source/blender/blenlib/BLI_fileops_types.h similarity index 93% rename from source/blender/blenlib/BLI_storage_types.h rename to source/blender/blenlib/BLI_fileops_types.h index 07c0ceffeb5..58dcf1a5441 100644 --- a/source/blender/blenlib/BLI_storage_types.h +++ b/source/blender/blenlib/BLI_fileops_types.h @@ -26,10 +26,11 @@ * * ***** END GPL LICENSE BLOCK ***** */ -#ifndef BLI_STORAGE_TYPES_H -#define BLI_STORAGE_TYPES_H -/** \file BLI_storage_types.h +#ifndef BLI_FILEOPS_TYPES_H +#define BLI_FILEOPS_TYPES_H + +/** \file BLI_fileops_types.h * \ingroup bli * \brief Some types for dealing with directories. */ @@ -75,5 +76,5 @@ struct dirlink char *name; }; -#endif /* BLI_STORAGE_TYPES_H */ +#endif /* BLI_FILEOPS_TYPES_H */ diff --git a/source/blender/blenlib/BLI_mempool.h b/source/blender/blenlib/BLI_mempool.h index 4ea48929efb..56df71b5582 100644 --- a/source/blender/blenlib/BLI_mempool.h +++ b/source/blender/blenlib/BLI_mempool.h @@ -29,7 +29,7 @@ #ifndef BLI_MEMPOOL_H #define BLI_MEMPOOL_H -/** \file BLI_storage.h +/** \file BLI_mempool.h * \ingroup bli * \author Geoffrey Bantle * \brief Simple fast memory allocator. diff --git a/source/blender/blenlib/BLI_scanfill.h b/source/blender/blenlib/BLI_scanfill.h index c5acf7b7f70..3cc6ebcc7da 100644 --- a/source/blender/blenlib/BLI_scanfill.h +++ b/source/blender/blenlib/BLI_scanfill.h @@ -30,7 +30,7 @@ #ifndef BLI_SCANFILL_H #define BLI_SCANFILL_H -/** \file BLI_storage.h +/** \file BLI_scanfill.h * \ingroup bli * \since March 2001 * \author nzc diff --git a/source/blender/blenlib/BLI_storage.h b/source/blender/blenlib/BLI_storage.h deleted file mode 100644 index 13c78b711a8..00000000000 --- a/source/blender/blenlib/BLI_storage.h +++ /dev/null @@ -1,71 +0,0 @@ -/* $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#ifndef BLI_STORAGE_H -#define BLI_STORAGE_H - -/** \file BLI_storage.h - * \ingroup bli - */ - -/* for size_t (needed on windows) */ -#include - -struct direntry; - -size_t BLI_filesize(int file); -size_t BLI_filepathsize(const char *path); -double BLI_diskfree(const char *dir); -char *BLI_getwdN(char *dir, const int maxncpy); - -unsigned int BLI_getdir(const char *dirname, struct direntry **filelist); - - /* test if file or directory exists */ -int BLI_exists(const char *name); - /* test if there is a directory at the specified path */ -int BLI_is_dir(const char *file); - -/** - * Read a file as ASCII lines. An empty list is - * returned if the file cannot be opened or read. - * - * @attention The returned list should be free'd with - * BLI_free_file_lines. - * - * @param name The name of the file to read. - * @retval A list of strings representing the file lines. - */ - -struct LinkNode *BLI_read_file_as_lines(const char *name); -void BLI_free_file_lines(struct LinkNode *lines); - - /* Compare if one was last modified before the other */ -int BLI_file_older(const char *file1, const char *file2); - -#endif /* BLI_STORAGE_H */ - diff --git a/source/blender/blenlib/CMakeLists.txt b/source/blender/blenlib/CMakeLists.txt index ea9f72c19c3..49d849bdf14 100644 --- a/source/blender/blenlib/CMakeLists.txt +++ b/source/blender/blenlib/CMakeLists.txt @@ -99,6 +99,7 @@ set(SRC BLI_edgehash.h BLI_editVert.h BLI_fileops.h + BLI_fileops_types.h BLI_fnmatch.h BLI_ghash.h BLI_graph.h @@ -125,8 +126,6 @@ set(SRC BLI_rand.h BLI_rect.h BLI_scanfill.h - BLI_storage.h - BLI_storage_types.h BLI_string.h BLI_string_utf8.h BLI_threads.h diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 3a2efbd6feb..fef102d8267 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -65,7 +65,8 @@ return -1 if zlib fails, -2 if the originating file does not exist note: will remove the "from" file */ -int BLI_gzip(const char *from, const char *to) { +int BLI_file_gzip(const char *from, const char *to) +{ char buffer[10240]; int file; int readsize = 0; @@ -109,7 +110,7 @@ int BLI_gzip(const char *from, const char *to) { /* gzip the file in from_file and write it to memery to_mem, at most size bytes. return the unziped size */ -char *BLI_ungzip_to_mem(const char *from_file, int *size_r) +char *BLI_file_ungzip_to_mem(const char *from_file, int *size_r) { gzFile gzfile; int readsize, size, alloc_size=0; @@ -150,7 +151,7 @@ char *BLI_ungzip_to_mem(const char *from_file, int *size_r) /* return 1 when file can be written */ -int BLI_is_writable(const char *filename) +int BLI_file_is_writable(const char *filename) { int file; @@ -178,7 +179,7 @@ int BLI_is_writable(const char *filename) } } -int BLI_touch(const char *file) +int BLI_file_touch(const char *file) { FILE *f = fopen(file,"r+b"); if (f != NULL) { @@ -199,7 +200,8 @@ int BLI_touch(const char *file) static char str[MAXPATHLEN+12]; -int BLI_delete(const char *file, int dir, int recursive) { +int BLI_delete(const char *file, int dir, int recursive) +{ int err; if (recursive) { @@ -216,7 +218,8 @@ int BLI_delete(const char *file, int dir, int recursive) { return err; } -int BLI_move(const char *file, const char *to) { +int BLI_move(const char *file, const char *to) +{ int err; // windows doesn't support moveing to a directory @@ -241,7 +244,8 @@ int BLI_move(const char *file, const char *to) { } -int BLI_copy_fileops(const char *file, const char *to) { +int BLI_copy(const char *file, const char *to) +{ int err; // windows doesn't support copying to a directory @@ -266,14 +270,16 @@ int BLI_copy_fileops(const char *file, const char *to) { return err; } -int BLI_link(const char *file, const char *to) { +int BLI_create_symlink(const char *file, const char *to) +{ callLocalErrorCallBack("Linking files is unsupported on Windows"); (void)file; (void)to; return 1; } -void BLI_recurdir_fileops(const char *dirname) { +void BLI_dir_create_recursive(const char *dirname) +{ char *lslash; char tmp[MAXPATHLEN]; @@ -295,7 +301,7 @@ void BLI_recurdir_fileops(const char *dirname) { if (lslash) { /* Split about the last slash and recurse */ *lslash = 0; - BLI_recurdir_fileops(tmp); + BLI_dir_create_recursive(tmp); } if(dirname[0]) /* patch, this recursive loop tries to create a nameless directory */ @@ -303,7 +309,8 @@ void BLI_recurdir_fileops(const char *dirname) { callLocalErrorCallBack("Unable to create directory\n"); } -int BLI_rename(const char *from, const char *to) { +int BLI_rename(const char *from, const char *to) +{ if (!BLI_exists(from)) return 0; /* make sure the filenames are different (case insensitive) before removing */ @@ -343,25 +350,29 @@ int BLI_delete(const char *file, int dir, int recursive) return -1; } -int BLI_move(const char *file, const char *to) { +int BLI_move(const char *file, const char *to) +{ BLI_snprintf(str, sizeof(str), "/bin/mv -f \"%s\" \"%s\"", file, to); return system(str); } -int BLI_copy_fileops(const char *file, const char *to) { +int BLI_copy(const char *file, const char *to) +{ BLI_snprintf(str, sizeof(str), "/bin/cp -rf \"%s\" \"%s\"", file, to); return system(str); } -int BLI_link(const char *file, const char *to) { +int BLI_create_symlink(const char *file, const char *to) +{ BLI_snprintf(str, sizeof(str), "/bin/ln -f \"%s\" \"%s\"", file, to); return system(str); } -void BLI_recurdir_fileops(const char *dirname) { +void BLI_dir_create_recursive(const char *dirname) +{ char *lslash; char tmp[MAXPATHLEN]; @@ -373,13 +384,14 @@ void BLI_recurdir_fileops(const char *dirname) { if (lslash) { /* Split about the last slash and recurse */ *lslash = 0; - BLI_recurdir_fileops(tmp); + BLI_dir_create_recursive(tmp); } mkdir(dirname, 0777); } -int BLI_rename(const char *from, const char *to) { +int BLI_rename(const char *from, const char *to) +{ if (!BLI_exists(from)) return 0; if (BLI_exists(to)) if(BLI_delete(to, 0, 0)) return 1; @@ -388,3 +400,4 @@ int BLI_rename(const char *from, const char *to) { } #endif + diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 91e813a0350..d9176c5f162 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -46,8 +46,6 @@ #include "BLI_fileops.h" #include "BLI_path_util.h" #include "BLI_string.h" -#include "BLI_storage.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "BKE_utildefines.h" @@ -740,7 +738,7 @@ int BLI_path_cwd(char *path) if (wasrelative==1) { char cwd[FILE_MAXDIR + FILE_MAXFILE]= ""; - BLI_getwdN(cwd, sizeof(cwd)); /* incase the full path to the blend isnt used */ + BLI_current_working_dir(cwd, sizeof(cwd)); /* incase the full path to the blend isnt used */ if (cwd[0] == '\0') { printf( "Could not get the current working directory - $PWD for an unknown reason."); @@ -986,7 +984,7 @@ static int get_path_system(char *targetpath, const char *folder_name, const char } /* try CWD/release/folder_name */ - if(BLI_getwdN(cwd, sizeof(cwd))) { + if(BLI_current_working_dir(cwd, sizeof(cwd))) { if(test_path(targetpath, cwd, "release", relfolder)) { return 1; } @@ -1117,7 +1115,7 @@ char *BLI_get_folder_create(int folder_id, const char *subfolder) if (!path) { path = BLI_get_user_folder_notest(folder_id, subfolder); - if (path) BLI_recurdir_fileops(path); + if (path) BLI_dir_create_recursive(path); } return path; @@ -1250,7 +1248,7 @@ void BLI_make_existing_file(const char *name) /* test exist */ if (BLI_exists(di) == 0) { - BLI_recurdir_fileops(di); + BLI_dir_create_recursive(di); } } @@ -1732,7 +1730,7 @@ static void bli_where_am_i(char *fullname, const size_t maxlen, const char *name BLI_strncpy(fullname, name, maxlen); if (name[0] == '.') { char wdir[FILE_MAX]= ""; - BLI_getwdN(wdir, sizeof(wdir)); /* backup cwd to restore after */ + BLI_current_working_dir(wdir, sizeof(wdir)); /* backup cwd to restore after */ // not needed but avoids annoying /./ in name if(name[1]==SEP) diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 8b383f5fd11..b3caeb71822 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -88,10 +88,9 @@ #include "DNA_listBase.h" +#include "BLI_fileops.h" #include "BLI_listbase.h" #include "BLI_linklist.h" -#include "BLI_storage.h" -#include "BLI_storage_types.h" #include "BLI_string.h" #include "BKE_utildefines.h" @@ -104,7 +103,7 @@ static struct ListBase dirbase_={NULL, NULL}; static struct ListBase *dirbase = &dirbase_; /* can return NULL when the size is not big enough */ -char *BLI_getwdN(char *dir, const int maxncpy) +char *BLI_current_working_dir(char *dir, const int maxncpy) { const char *pwd= getenv("PWD"); if (pwd){ @@ -116,7 +115,7 @@ char *BLI_getwdN(char *dir, const int maxncpy) } -int BLI_compare(struct direntry *entry1, struct direntry *entry2) +static int bli_compare(struct direntry *entry1, struct direntry *entry2) { /* type is equal to stat.st_mode */ @@ -143,7 +142,7 @@ int BLI_compare(struct direntry *entry1, struct direntry *entry2) } -double BLI_diskfree(const char *dir) +double BLI_dir_free_space(const char *dir) { #ifdef WIN32 DWORD sectorspc, bytesps, freec, clusters; @@ -198,7 +197,7 @@ double BLI_diskfree(const char *dir) #endif } -void BLI_builddir(const char *dirname, const char *relname) +static void bli_builddir(const char *dirname, const char *relname) { struct dirent *fname; struct dirlink *dlink; @@ -273,7 +272,7 @@ void BLI_builddir(const char *dirname, const char *relname) } BLI_freelist(dirbase); - if (files) qsort(files, actnum, sizeof(struct direntry), (int (*)(const void *,const void*))BLI_compare); + if (files) qsort(files, actnum, sizeof(struct direntry), (int (*)(const void *,const void*))bli_compare); } else { printf("%s empty directory\n",dirname); } @@ -284,7 +283,7 @@ void BLI_builddir(const char *dirname, const char *relname) } } -void BLI_adddirstrings(void) +static void bli_adddirstrings(void) { char datum[100]; char buf[512]; @@ -392,7 +391,7 @@ void BLI_adddirstrings(void) } } -unsigned int BLI_getdir(const char *dirname, struct direntry **filelist) +unsigned int BLI_dir_contents(const char *dirname, struct direntry **filelist) { // reset global variables // memory stored in files is free()'d in @@ -401,8 +400,8 @@ unsigned int BLI_getdir(const char *dirname, struct direntry **filelist) actnum = totnum = 0; files = NULL; - BLI_builddir(dirname,""); - BLI_adddirstrings(); + bli_builddir(dirname,""); + bli_adddirstrings(); if (files) { *(filelist) = files; @@ -416,7 +415,7 @@ unsigned int BLI_getdir(const char *dirname, struct direntry **filelist) } -size_t BLI_filesize(int file) +size_t BLI_file_descriptor_size(int file) { struct stat buf; @@ -425,14 +424,14 @@ size_t BLI_filesize(int file) return (buf.st_size); } -size_t BLI_filepathsize(const char *path) +size_t BLI_file_size(const char *path) { int size, file = open(path, O_BINARY|O_RDONLY); if (file == -1) return -1; - size = BLI_filesize(file); + size = BLI_file_descriptor_size(file); close(file); return size; } @@ -474,7 +473,7 @@ int BLI_is_dir(const char *file) return S_ISDIR(BLI_exists(file)); } -LinkNode *BLI_read_file_as_lines(const char *name) +LinkNode *BLI_file_read_as_lines(const char *name) { FILE *fp= fopen(name, "r"); LinkNode *lines= NULL; @@ -515,7 +514,7 @@ LinkNode *BLI_read_file_as_lines(const char *name) return lines; } -void BLI_free_file_lines(LinkNode *lines) +void BLI_file_free_lines(LinkNode *lines) { BLI_linklist_free(lines, (void(*)(void*)) MEM_freeN); } diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c index ded5a95df5a..09e6dcd7bf9 100644 --- a/source/blender/blenloader/intern/readblenentry.c +++ b/source/blender/blenloader/intern/readblenentry.c @@ -34,7 +34,6 @@ #include -#include "BLI_storage.h" /* _LARGEFILE_SOURCE */ #include #include @@ -43,11 +42,12 @@ #include "MEM_guardedalloc.h" -#include "BLI_utildefines.h" -#include "BLI_listbase.h" -#include "BLI_string.h" +#include "BLI_fileops.h" #include "BLI_ghash.h" #include "BLI_linklist.h" +#include "BLI_listbase.h" +#include "BLI_string.h" +#include "BLI_utildefines.h" #include "DNA_genfile.h" #include "DNA_sdna_types.h" diff --git a/source/blender/blenloader/intern/runtime.c b/source/blender/blenloader/intern/runtime.c index 7a241e007f2..57cdce94b17 100644 --- a/source/blender/blenloader/intern/runtime.c +++ b/source/blender/blenloader/intern/runtime.c @@ -111,7 +111,7 @@ BlendFileData *BLO_read_runtime(const char *path, ReportList *reports) goto cleanup; } - actualsize= BLI_filesize(fd); + actualsize= BLI_file_descriptor_size(fd); lseek(fd, -12, SEEK_END); diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 8959a1ed017..752677d047d 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2734,7 +2734,7 @@ int BLO_write_file(Main *mainvar, const char *filepath, int write_flags, ReportL /* first write compressed to separate @.gz */ BLI_snprintf(gzname, sizeof(gzname), "%s@.gz", filepath); - ret = BLI_gzip(tempname, gzname); + ret = BLI_file_gzip(tempname, gzname); if(0==ret) { /* now rename to real file name, and delete temp @ file too */ diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index 6c7251016c3..ec3cc0fc984 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -110,7 +110,7 @@ void ImagesExporter::operator()(Material *ma, Object *ob) // make dest directory if it doesn't exist BLI_make_existing_file(abs); - if (BLI_copy_fileops(src, abs) != 0) { + if (BLI_copy(src, abs) != 0) { fprintf(stderr, "Cannot copy image to file's directory. \n"); } } diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp index b411d61fe37..a0b3d0051b4 100644 --- a/source/blender/collada/collada.cpp +++ b/source/blender/collada/collada.cpp @@ -40,9 +40,8 @@ extern "C" #include "BKE_context.h" /* make dummy file */ -#include "BLI_storage.h" -#include "BLI_path_util.h" #include "BLI_fileops.h" +#include "BLI_path_util.h" int collada_import(bContext *C, const char *filepath) { @@ -62,7 +61,7 @@ extern "C" /* annoying, collada crashes if file cant be created! [#27162] */ if(!BLI_exists(filepath)) { BLI_make_existing_file(filepath); /* makes the dir if its not there */ - if(BLI_touch(filepath) == 0) { + if(BLI_file_touch(filepath) == 0) { return 0; } } diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index c1418c5b6e8..f987aa9c4e6 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -47,7 +47,6 @@ #include "BLI_math.h" #include "BLI_blenlib.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "DNA_brush_types.h" @@ -609,11 +608,11 @@ static void init_iconfile_list(struct ListBase *list) if(icondir==NULL) return; - /* since BLI_getdir changes the current working directory, restore it + /* since BLI_dir_contents changes the current working directory, restore it back to old value afterwards */ - if(!BLI_getwdN(olddir, sizeof(olddir))) + if(!BLI_current_working_dir(olddir, sizeof(olddir))) restoredir = 0; - totfile = BLI_getdir(icondir, &dir); + totfile = BLI_dir_contents(icondir, &dir); if (restoredir && !chdir(olddir)) {} /* fix warning about checking return value */ for(i=0; i=0; i--){ diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 3cf4de992e5..5dbcfbba5be 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -39,7 +39,6 @@ #include "BLI_fileops.h" #include "BLI_path_util.h" -#include "BLI_storage.h" #include "BLI_string.h" #include "BLI_utildefines.h" diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 6fbfa11d0cf..8a7e4ce3ec1 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -37,7 +37,6 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" #include "BLI_dynstr.h" -#include "BLI_storage_types.h" #ifdef WIN32 #include "BLI_winstuff.h" #endif diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 7a379b93ee6..079b1c96d24 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -39,7 +39,6 @@ #include "BLI_blenlib.h" #include "BLI_utildefines.h" -#include "BLI_storage_types.h" #ifdef WIN32 #include "BLI_winstuff.h" #endif @@ -1042,7 +1041,7 @@ int file_directory_new_exec(bContext *C, wmOperator *op) } /* create the file */ - BLI_recurdir_fileops(path); + BLI_dir_create_recursive(path); if (!BLI_exists(path)) { BKE_report(op->reports,RPT_ERROR, "Couldn't create new folder"); @@ -1136,7 +1135,7 @@ int file_directory_exec(bContext *C, wmOperator *UNUSED(unused)) file_expand_directory(C); if (!BLI_exists(sfile->params->dir)) { - BLI_recurdir_fileops(sfile->params->dir); + BLI_dir_create_recursive(sfile->params->dir); } /* special case, user may have pasted a fulepath into the directory */ diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index b478976d027..89a34c62200 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -48,7 +48,6 @@ #include "BLI_blenlib.h" #include "BLI_linklist.h" -#include "BLI_storage_types.h" #include "BLI_threads.h" #include "BLI_utildefines.h" @@ -825,10 +824,10 @@ static void filelist_read_dir(struct FileList* filelist) filelist->fidx = NULL; filelist->filelist = NULL; - BLI_getwdN(wdir, sizeof(wdir)); /* backup cwd to restore after */ + BLI_current_working_dir(wdir, sizeof(wdir)); /* backup cwd to restore after */ BLI_cleanup_dir(G.main->name, filelist->dir); - filelist->numfiles = BLI_getdir(filelist->dir, &(filelist->filelist)); + filelist->numfiles = BLI_dir_contents(filelist->dir, &(filelist->filelist)); if(!chdir(wdir)) {} /* fix warning about not checking return value */ filelist_setfiletypes(filelist); diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index 790e2f573ee..29d8242e26d 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -64,7 +64,6 @@ #include "BLI_blenlib.h" #include "BLI_linklist.h" -#include "BLI_storage_types.h" #include "BLI_dynstr.h" #include "BLI_utildefines.h" diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 7a70ed9c0a0..726a2a80be1 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -46,7 +46,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_rand.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "BKE_context.h" diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 725b5f5c02d..dba60586b29 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -143,7 +143,7 @@ static int space_image_file_exists_poll(bContext *C) if(ibuf) { BLI_strncpy(name, ibuf->name, FILE_MAX); BLI_path_abs(name, bmain->name); - poll= (BLI_exists(name) && BLI_is_writable(name)); + poll= (BLI_exists(name) && BLI_file_is_writable(name)); } ED_space_image_release_buffer(sima, lock); @@ -1223,7 +1223,7 @@ static int save_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; save_image_options_from_op(&simopts, op); - if (BLI_exists(simopts.filepath) && BLI_is_writable(simopts.filepath)) { + if (BLI_exists(simopts.filepath) && BLI_file_is_writable(simopts.filepath)) { save_image_doit(C, sima, op, &simopts, FALSE); } else { diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 5ca9a6f12fb..59e62c9b0e4 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -49,7 +49,6 @@ #include "BLI_math.h" #include "BLI_blenlib.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "BKE_context.h" @@ -66,10 +65,6 @@ #include "BKE_texture.h" #include "BKE_report.h" - -#include "BLI_math.h" -#include "BLI_storage_types.h" - #include "RE_pipeline.h" #include "IMB_imbuf_types.h" diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 2b78bc3c190..2f57bc2d93b 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -44,7 +44,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "DNA_scene_types.h" diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 33d2a27f789..a20ab260379 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -45,7 +45,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "BLI_storage_types.h" #include "BLI_utildefines.h" #include "BLI_threads.h" @@ -883,7 +882,7 @@ static void UNUSED_FUNCTION(touch_seq_files)(Scene *scene) if(seq->type==SEQ_MOVIE) { if(seq->strip && seq->strip->stripdata) { BLI_make_file_string(G.main->name, str, seq->strip->dir, seq->strip->stripdata->name); - BLI_touch(seq->name); + BLI_file_touch(seq->name); } } diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index e064d7f760d..1084355dd74 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -546,7 +546,7 @@ int IMB_exr_begin_read(void *handle, const char *filename, int *width, int *heig { ExrHandle *data= (ExrHandle *)handle; - if(BLI_exists(filename) && BLI_filepathsize(filename)>32) { /* 32 is arbitrary, but zero length files crashes exr */ + if(BLI_exists(filename) && BLI_file_size(filename)>32) { /* 32 is arbitrary, but zero length files crashes exr */ data->ifile = new InputFile(filename); if(data->ifile) { Box2i dw = data->ifile->header().dataWindow(); diff --git a/source/blender/imbuf/intern/readimage.c b/source/blender/imbuf/intern/readimage.c index 849b3ff0ce2..1c1e681bb30 100644 --- a/source/blender/imbuf/intern/readimage.c +++ b/source/blender/imbuf/intern/readimage.c @@ -88,7 +88,7 @@ ImBuf *IMB_loadifffile(int file, int flags) if(file == -1) return NULL; - size= BLI_filesize(file); + size= BLI_file_descriptor_size(file); mem= mmap(NULL, size, PROT_READ, MAP_SHARED, file, 0); if(mem==(unsigned char*)-1) { @@ -175,7 +175,7 @@ static void imb_loadtilefile(ImBuf *ibuf, int file, int tx, int ty, unsigned int if(file == -1) return; - size= BLI_filesize(file); + size= BLI_file_descriptor_size(file); mem= mmap(NULL, size, PROT_READ, MAP_SHARED, file, 0); if(mem==(unsigned char*)-1) { diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c index 2ab7e55d1f8..d2bf7f75615 100644 --- a/source/blender/imbuf/intern/thumbs.c +++ b/source/blender/imbuf/intern/thumbs.c @@ -237,10 +237,10 @@ void IMB_thumb_makedirs(void) { char tpath[FILE_MAX]; if (get_thumb_dir(tpath, THB_NORMAL)) { - BLI_recurdir_fileops(tpath); + BLI_dir_create_recursive(tpath); } if (get_thumb_dir(tpath, THB_FAIL)) { - BLI_recurdir_fileops(tpath); + BLI_dir_create_recursive(tpath); } } @@ -277,7 +277,7 @@ ImBuf* IMB_thumb_create(const char* path, ThumbSize size, ThumbSource source, Im /* exception, skip images over 100mb */ if(source == THB_SOURCE_IMAGE) { - const size_t size= BLI_filepathsize(path); + const size_t size= BLI_file_size(path); if(size != -1 && size > THUMB_SIZE_MAX) { // printf("file too big: %d, skipping %s\n", (int)size, path); return NULL; diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 7a39cfc93c8..cfd8d9f433b 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -674,7 +674,7 @@ int BPY_context_member_get(bContext *C, const char *member, bContextDataResult * #ifdef WITH_PYTHON_MODULE -#include "BLI_storage.h" +#include "BLI_fileops.h" /* TODO, reloading the module isnt functional at the moment. */ static void bpy_module_free(void *mod); diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 104a298acf1..5ca0983ffd0 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2753,7 +2753,7 @@ int RE_is_rendering_allowed(Scene *scene, Object *camera_override, ReportList *r scene_unique_exr_name(scene, str, 0); - if (BLI_is_writable(str)==0) { + if (BLI_file_is_writable(str)==0) { BKE_report(reports, RPT_ERROR, "Can not save render buffers, check the temp default path"); return 0; } @@ -3152,7 +3152,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri } if(scene->r.mode & R_TOUCH && !BLI_exists(name)) { BLI_make_existing_file(name); /* makes the dir if its not there */ - BLI_touch(name); + BLI_file_touch(name); } } @@ -3175,7 +3175,7 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri if(G.afbreek==1) { /* remove touched file */ if(BKE_imtype_is_movie(scene->r.imtype) == 0) { - if (scene->r.mode & R_TOUCH && BLI_exists(name) && BLI_filepathsize(name) == 0) { + if (scene->r.mode & R_TOUCH && BLI_exists(name) && BLI_file_size(name) == 0) { BLI_delete(name, 0, 0); } } diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 4cd31b8d894..823df35fc6e 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -574,7 +574,7 @@ void WM_read_history(void) BLI_make_file_string("/", name, cfgdir, BLENDER_HISTORY_FILE); - lines= BLI_read_file_as_lines(name); + lines= BLI_file_read_as_lines(name); G.recent_files.first = G.recent_files.last = NULL; @@ -589,7 +589,7 @@ void WM_read_history(void) } } - BLI_free_file_lines(lines); + BLI_file_free_lines(lines); } From 952560dc028516d60a5318eadbcbd5f2c0668335 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 22 Oct 2011 16:01:19 +0000 Subject: [PATCH 119/119] * Re-commit splash screen with Alpha header. --- release/datafiles/splash.png | Bin 204738 -> 153933 bytes source/blender/editors/datafiles/splash.png.c | 11212 +++++++--------- 2 files changed, 4812 insertions(+), 6400 deletions(-) diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png index 79339095b0774b85ebf07d7758adf2dfa10c1077..5de3f868d1a2b4198be3231196815908d70abe74 100644 GIT binary patch delta 152400 zcmb?>Q+S}kvh8GI+nLzLWMbR4ZJU2=Pt1vJ+qRR5ZQFPDzURE$=ljx+{jKWiu3Bq# z^>xEd)NBh%B6S3zf*W^!PL;)t1alz%=0*9bQmgfdgM!%iCKAfL zFiBO@;{VqY9m$PHvG~;edO-T>gw=-S1Ic$C`lSM9qbEjF*)S(b15{>;O6q*Qt4tet zTmTNCVt;Z*?hqW_iIY=)5Hoh=UV>)yxs6p!~SFVgsDeJ*zr*FD8^ zyLW9|Hvji*RZh>SLbkkbF*vin07*SP$vh!@`^%TUOW4D3V`&PX@Q&*&0*=A4W0dU# zc-t;Y;%2++76Oo}yY4Ps;mvm_wbL!tC$EU?v@r3Eli7cexG7O`?uj32t&ASsyrKbZ zY}mCnn4`Ydp1GQz#GY$GQ{wuV$Fs{0SDien8?g3K8ryT1d1aP~Cz8DZ;l2pM8Qj;zGHmRlk{i#=|j)8DfBe>r;fIBer@ z&-dg+jBMq^p?87=SCvhJ*?!B04@EO`mEg1u3fiHa97^*i5)khjCe4fS+*@$VjS>VB!q#@dHUeWhTDtF(wv*w zoZ+-D{xTzC1wuiv#B+)_S}gElebTo;2PBCme+5REJme|YFye>HD885grkH`4unDJ= zGqs0&z7Ox0?B=g|Dqn==$>%i}_-;U0C1$G!kZ&S;c80n>32i99v zC5MJsj}si`0~*+rXQz4ggkFKA{l4Zm?*9XqeF?m0%RP}O<;}1C-G_S<_ulN=)gzI= zTeHxgB-JjNq_!@Q!1?7lIkXH?bx7ibmyZNGOkKOc8M*WC@x7TI2m?&&BFu<9O1FkR z>C(NpYM!UNo!&-q3p3$)I)X>8AIH<3$yc8jZrNok1z`X;kR`$#dUnVDp41b~k1OQ6 zKdR=>_w7?sxJw%svfU2=Uq4TJqu*vwd4NI2&JGgn#(FmYGs6e@9`Q6Z|F=mFOcz0$ z`#}AB2ZQ`^WKX$2-}F&r885;!$#$A=2A}-mboj{f+VYkpO>uLke0Ez0h**W4fav#8 z48!K&5qiLw??muswE(td2k)1FCu~}sD?;Y@-h%GXcE~owA0hq3k1C_?&b(9cia=$h zhP!s}d(5qT;3gzEbeAZ6q_XGk<9pip!^Jg+&){%|&mFL0ViZrf)#bId0Kvd2Y~jo$b7!mmY;l&}$= zi@KG638>CQd(-i~$+?89_!t%0i`9KK20~6^ZKD%^#+D<79-G6T9P7S>b3Im{n%SL?sWg)!_TF)ld93KxZX9=h z(BOV{VYYy`n4||NF0z5YZBi3AgAI4aYmQ~}9cHlgZK^HejuIY9{qoX59Qv4Q0hTj9 z9NZu>whk4NAhkY;IxNOxhUUO+1&sWb*~9u@Ktn^X{T@{y05Y zvFv85^9$&&%e5R@VD|3zecd7P0M+synQ?3-Wy|r%$(suW+a21wU!NL!+l3NU_qw+( zJ+j>!VkJYLXT#pbVz@=rdMZAM*HhTT?x@%b_D4eQ-7-&}DQc%&1Vyb*Kc723z=r$w z{Jp>9edl#fSibk^J%SY8zhgO4O`dz&p?Yin*Fd&xvpx3&AEr`hw;}9|02#gLB;<5; z9UUD)8Gf`A{;LB!QqSGUNS|a#65jXex997lCkJa6ehQSTmHNmOT^A}jV8ZrW-d&Er zb921+Dcwvo%b;zLvx_h{=2w~TIp(K)_LG(yueqpX(LhzTM^FaO&;vh@&#@~|u`UkP zxhh4O_Sjr)WZgj_KhXRN>>a`|bzI`AxLl!?yvs;Cg7+C6EW4WY`*15iwa?=+aDncf zKI(skO47sd=9s6Ogi(463ZF~p&MO5>=WK5C0+1a=24DZ$?!lT)=^0m5Yt-y1q{L() zC8)KYgedkZT}+&F^i=&)tgRB+PRWXVAs;M>fC5W^pls9 zeaEsFiqVG-585pdv3+MIdyO>>#S8T6eWmrtJ@4^Bs9%fr^Ti8%ewjcBf3EL#R z*tg#)yR?VVHcJ`NRC;I7xcIy|b*1=sxN)?5;NHVEn#J#%?w0b-5cklKp{&7V_Jj&B;>ioV6jek1&?^Y^5 zfE$;Z9xVb*Tw7lqaL+0#9|p)4o}ZWyIaeFotm|uj{NA}bI9e75_ldt_{w22h{Me4~ zXfo=)TH@R9n3{gt#|$N0MTot7eMpQA&9N)R#;o5ja*1)nC6ks3<8)8u7AD%{K6}Nfy2$O?V&l^e29#aI z;QgQRG<2WCN78zairwY7)s90)#(F<_YP7xVfc&zpRr?N`-lIZz-Tt{KqyKQvEm=t& z0601otDk$(3VBSCXoyvhl&P!3tK}yZq$Q3QFzh||Fs!}WfQ-Fc{_@pUu&ynOFJ=Xn)!%>#i;v@|yG5NnyH1rBDE)sz7*RF=jnP zOh8ZJkQ1&#j=ut%g7C!|fnBHl_9dfo2G&W}dlZe)k3GRI`j3!0rjJ7RU%fV6x&QKc zQ$U#~O6H9Rb1AhIwPm=6`Kd9)AbVvvUaJVjwPf0pTa$e=~_ z+CUo|^W1b%FA!6y&J-kEGpE$Qit<`ts6AbNMB2Q%K-}~8fL&}m?%DbE04#X$j zv(+#c4I}M=l}qjhiMKhc51eA`Qr`W|s&>pjcy*YH0nf9AJR1qKEz>Q1`%)ofu6RJb z#6~#bA!|`?{3D^7IAjg!@LjdGEwr2WFNkPHYcV{AOlul*Ftr>(yJa9y3^m_Cea&+yc$C0@hs5WZZZDk7fZJSvRaJP;gpQ2fI)9E4*9X~#X zBfTQrlZRvMzWs9_h8fT1#lT!G+>Csy`P=cYG{aM<5QbcDQ}O(Vt#IyFj`DcPC-ilF z@%BtPYvJcG?#fZ@_rgzg6&^8R1Xesd-@xUX8GD)kC>avqU(wdeenE@*+fABucOvX_ zC|$%oEQ`IyacDf!(V^`7NWfcR*Lu2aPYjj7v;}S$h)_!R62HwU!+TR2_K_wt{OM~E^wMeU$33EX>RO<=B$2e%W*N9 z^bpX|53xQYoe&GitI%Mq3l2W+c533TS3d5+bJMS5WQ(IZWe;&q+E?mU;dr;|I)Z-x zz}4$L)4e67-&{13MQy?vchhyn__`_X%8+|+KWlwnPaw_w+-slNd;2plH27pL=fm4^ ze6f``?SXUl?%dsVCOiMO5hnQMQ1|!5gB>_R?Ll;(`&*j86)@cif2kDfA4>bgi2t=WnyDq;13f3IzCUY#y*wv zOa2Mp3NA#I$Y=bsJJ=R4K7rR}J2GF_Q4Y`BV6z*o>aGyB&+$ai;iY3&!^iXV3811@ z@6&0H;T^+hTk@eDNYM>5T3ZsetaQe8_?z8=74so0m7>ILGwNV zD6&`ImTmQO{`KG3-vZCA-f-&BF>W86Pi>(U)t>agEPePtl`5`!>IDIr8v8gK55AND zo~flTpt^#gL&EmaUs=!OciA4MZkRYkI(1b3J1J_T4&H59kHvSZyvD5qQKzfgV^)JJ zs{QQO(AVB#LCzabYDOR>FcmQwMpzUGhZ=^KsOJ%f`PN|}N!e^`tf!a5O&Yn;5mWpo zKVGRUVZmm%t+DQnvvt+*_Uc=gP#ynuim(k%?D*cxo@2L-!n_HHsF(~r*yNA3ed$A` zyv_8q2X=qel}!aa=n<@+vH5>3{x=3F)lUT|KyL9v~^zpv&PS@xQrk zDfwn z|EDn+#JQ|qInEbf7HT>h?cFK?U%H=ri*{L<9zOyBXMSrqCvuWT5NEHNnQ^RhDZQY< zX$u8aS;O45;8smCY48xLk<7WXDS=leh(NZ?^FFWd?Hdhg?6uX&uBav(*V?liq7Z7! zXLUzO=T&eWWspj?xql%ZM5}}BpsOx8nJImWp9V0~Py+ejFPrJFiX~OgK!KLoTq5Ev zuK);O(IDs7lh|i@4rGugFJ*h@{MQ!eGRC#JHqZ$Bm!&BQ>(_{lQxT8MKol zK%_|E?z^mkxq-d>xsoMHMma)eF*BqPf|&wB-Xm$U3+{&nXIr3M_?EBgI-vprD>F4mc1Igi?+D=tnhir+qbX~L%ux-p(Zu`_%?+)KmW`#ej{h;QpR zuiKo)$fY(jx;2IW2C)3+IcrD(_+!6Mu6&Q&e*fJPYmEy^%$7)tBxFuI!Us>;L!;Ht zVs2opLk>a6GEZ}wev#<9UvL}8-L(IEwBQ-mj$m*_c4q6k*6*&vfrtMn+-(!Mu`S#F z_JM(mngTNY?eUqz^V@SnnD-u7?3461bWf{p+7&2olmC6|zhf!<=R?v0jNMKTu7~@f z*vDVN^O1FPHDy?PjERze4eY1B1$>L=ke<*=%X#y8xrrq(*VFmGrfntngk-1uC4sj> z?8h(zg+ui>k6)^8d+XSgI&nej$zl71vR`Rc@7O2nKW^s<>@sBj!?yoxoTe-0$lnsQ z|1u?Dnyn3MrHcUu9sVk>6#f77oc|Nr|Fa)D!|h+pZe=coC?(JmhK9?G;@mJl0Ur(5 zP~er9X4MWsB-{^5Tm`$;S}#yYrFPZg9a-m5qh8LVdbon8*pD)A)kA1B#_0VCLywNv zYX30yVkCx$vP^N)-_)(}vufc=LHl=rIAm7jv2ZfGj0EZ+XN`x|lcC+#g$~$_PgC&w z^Cv#kBl4&n;aiEOwuyt?XBnQpaF{|SDuA-kJTsmRi#1>!dWlD_N_=4yO0!bHE%&(~ z?LZbF`O^6kk zWvj@SoqDWA|LGCDwd|Y0tV-(M)XO(`SN!QV`#zXwNt8}<>N3*{vjkCH`#g-U2ee!p zrcZIaSaH|}oY}22bXRPzhCN?>Z1vTy-rL>PHa^?kV*lhOgda+UxDqJEuYR;GnYcPZ z!51yYv*Stg9^&*NNppdLuhLuU#CTX6i}I@6%2Bp!TG5~YN~1Q;9n-5ND7q$d3aqz1 zPAANYquEH~?umW`oV*UDr_;d|0ibgN{Q-rXADtmI#fnpdV~?D7leX6D*7hC05Hq4< zc1|~>3GzAbe1GvCr>Udv*}%fGmuq~XRWFe6Vd23TA}?C^ss*}(8%GAO<+2M0$M`AK zoOYC{8LCuJQ`hoYd{3vU(Uu8iqv>V-QKqj%>xevbb?}`<`2B%KvqDZ&59qKgQwt0~ zo5w@Fpsk z0uVwJOOKjK*fU?PFm#-(2ie_<+F!S&L*i1pztZA^M+$NJbm)_43} zhWfNJ)ug0^MaHUe;L1fsD(h1i;D->U}r~dv9-)YCZ}&`$eBu_Qew4tM~06b-)0fWe;^l= zOdM0Lyz!?fp!z#U3LWkh`7$NdTYUPaSLb*6xX7@FmmMkD5L9}S)<-3{G?ixy%8F*G zAt=o9eRr_4jWGb^0rzZbjb$Zdx=#Ahj-N1O6)o#$XaaE)kxF#jt?MMp)g6`8OU_83 zWmJ}(vnQQm)KDP7a|k?kO44l5-az#qd*NQ+q};vg;kWid4j8@}ugy^`RWKm4j4Yex z_WNiFW$ij!Qh07EUCrDv7zbFU&>&#~ow)=fRdmQEoqi}I(8P``jJlwDB+x=>dM7r% zqf3aZ=^p;ep6T|i-tT5BvRk0og+MMMUSFAds~zU=Uh}vB^5Qqvw9F=m-_e+$hHz8V zOGSf%nR42gv>_;M)vS9`ASA6vNx2xrib`>xo{`WA8|Qy=u(e-49|}v6P@ygTs7VpIU@L1i+e9z^aq($D}SvH^J|K4h> zZ|y6MeHlZ|3WV2x@78iPQh7c zEzn#_R!~vmezdaPHA6RPUo}2b+!kgoaF0yHNttML{~> z9B8I!fC5E>RAeM)z63EDA2X@E`tQqw{)*Gv)&Rk;+iNHs5nXEf-M4iuzNzJ{i9qk>C# z1$=DX!O<)6#2N*%LY*p_G%a|maIzh)YsQ@{>ht0_%UJr?Dk1ewt+s%+8e2 z(V;7%5_jg1bzgVQZnKuZXkN>uDtzw{hP0O1o8s)B9#cQKh?8S32k?0VpO5j44`|{p z#iU{8wDgc+C$HOs%rEb6>X;5zI!v~4feHDo-(sr`cD~f;UV+W{m}62>vGZV{GNek) zr)t_H{-L&8XSc6}!L?{E(8M)Q` z&=Jx)`oiQC#U-IPfI=CP8my7mU>AoOi93B&k@mQg)g(bB&FxHnH5DR! zl61&s@S5_yvJ8mT@3Eww%vq$jw7fjF(sj_S)zGmz4o;fG)fP?5yM%IoGu=VV40$Z_ zM6bbY;echFpel+W03FT&xv!Z6 z?l+b0o=&ef+KmSl(Lj}5=ZV!HD@0UBcGym8Y=@hb$RCwv$Ui*EZ+2IYkH_^P2s=x! zyOa;}WQR8>65D0hjPD{kZPicC_ZFMNtd#$EmS8IqjMM73elHd5kAXBy3f{+)n#~rp zN%AUli394rQM7?-U}jeyKIH(Vf~~h%v~DXCCSO0-6}9@`)o1C;qTxP5(XCcm@h&JM zyjAH}XANWQH$kjE7AWhk}n3*kC@1 zU}Q5>4}%X)IQNAW=k0-Iz7#|r%E)~d}N6L){ z$w>Z;;tL6(Z72~ktBOQWm9UXPMthnj-Ty&JWlDW(-(994uW^2cRz~Pe=zp^-m~Yre zf-nPKRw7Uj%vI=?hd_w(Agnv{x#UZx6J2?0rH};TRQ;Gw;==X2E&TQ5G+d|+V|t|* zTv&|9H8aI5v6}hn?NY>?U`m{nY#{T!LB>i{fyFi@u(Hpd(e$UT(P!;4ktg(F7h>)u z(unq6*Y~JQMosM}nuS6wIwvil^4LUPDTb#3BlA+vH%0DfH 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

`Z102Bqlg-4$d zq~Qs;Ha<(X*PYdiKS7w0LkXq=w=S31z4Z;$x(AYKfCe|jR2msd>EIys|L4tBgYC`% zyeJ7jzHO^d3UPI`R{h0ZJ>qsZ)`+ zYy-4KP)3vOR@mGz7yS+3c*S5sZ(WwQtqaD_vtj3<;2IHccX^RzZcTCI1uollb-`kmC zXQxD*?|@@rJLZ(F0f2?RD9EERYts=EA+Qm+G6;W?1=q@i>pK~jOPiQ0A*4D%B%@M7 z5(cy9qKmzDz=j{&)moftUE85OD;b#>%WQjQZDLS0Lvn4_zf6!&qE<$ooVb=N7?0gf z+?0Xr%>|P<y$HcRe?15o*XEOXh?+!W`(zoxi(bfShb^9a6^4tGkF- zUPDS@l;$>$)1JODvpTY(?Fb0~D5K)n%MwSQXIwn_SBSGy%)%bZKq!iUvLF;8AbK{u zGEiwF`7;8f-yJPNm&Eervxr&oh5}qfhw*=H$`1jE(OBwm(puK+XbOQv5!CWaYj0L1 zCj^)+bd~_)Pl`*^0)&GjIA$5EAk_Yq4gT3NN3)ggMWb_LLkp8YPD@%g5P15;w_yMW zM)scerOpm9(!{*lj{p}CgcZ?se{Cjk?+}r3Zn|!_iKUIZ^!@}#J%X@~Olqfh>F0lg z4YAgAhY`7YjePDgN-c4yQGoar%jsLE1e@h#mXY_aI!_2zzJ22G*(MG;Scdh&P z8%@*KHkA5x-hr;M@Ve`;{sr!Z|E_=C#FNXGwUtqmanNrz*QR`j+nM_J@32vgfl??k&kN{y zDJdmTQ9_8ZS}YNxPp=}juNN;yHK28E6Q6O#JILHgYnro52f0N9j7yX;i$JD;Dg^+R zE|w)BNu%b2FeLJXN!MTBXEVt$P~~B*X*;j-=}7z3(*LJ*{o|RD>7;z z5F!ODWXxFAZk!U#>pqet#N~gS+XaF`krJ@a88=?q#}}(xpcl76MPJ-Jgr0`Cu#W0Q z9{k*lfd>NIdoaTvzqpMT*Y09jy#v7u|A_*L2|*KrM5Lfts$f+mXiBhf7eIvD1VX@w z<0^uP+SV`Rd=2U>U`ZTd0?ZrUQ9}0n*e|LfaKav!n>=cjjkqTOlSzLMo6n?)|5o>p zCpB_8+_*`>&cCt@l!jp~ejiv0mck=ZyFWad9CZWKtSxy>+ev)j8>c-@@>sT@(mTZ& z8NdpP%AY@~jyk#Ffg{))&pXbd9wQRa{!~S47Jr*2bJ`5NuM@h)Q+uC)MC0a0M?{g1 z*rs|GS#PB4Y#fPt(`A2S=}W){n0?d;=w?D%|4r%CG`qe?-q?guZz>(`#3vd6UC(CM z-e=fnuIafr0v>~?1BER5822R658bsL?2~C?Odj2%)BJ+pfc&-w&-DKzqegO!66waZ zKzsd3C%ahE>BWz6Z>06HZjnE+w6YjW` z#zLxCt!f}wAQt4T7Mh_%b^8DSAOJ~3K~xeg`ZU8_+aL+dWYRD80}~42i2Wj9cHsa| zsvQU-o~C`At^!K7@vjJkSx`p`ENnw4I2}1V>f4=lfej;EEEA;8U{$la%{CE>D3Fc$ z&MMg98cZ2NK2v|WbWL+^?Mclcwv(0>tSAct6#*4yHZ5!R#xE^Kd*oboA|QF zd&WRcl(RjtHS4w)XQ@#jp%K9rOa}9+F|Tv2pt=HS1w}R{KQd}H*gb{_P(UqW5_u31 z4N|tqdNZmC?m~BYR^#H$Yp9EBK&o5leakNK%s-KU1p|K{J}JOo9^){4isE1op*(bb zd^BcyQJ^SFa5V3fln7GQpnB;^XU*Q&7MGC-fh;p1iCqfcsiSnFrtEsJ%t{z>j?k zYh0i$p}K#82C3HwG}Dlb3{m=;T^i(&>7c$Vbr8GursyGie7m-nwiIO@lj3L!C*3@c zZ<^xz)~w?Rmwdti<@?as9)Q&gPg@uZ`axG82e zt*4HyMW{|s`hE6plRwXWNN!WiYuljoreWz3ya#{WhN;JBhSh!}(K*a8CYpzl_c~!{ z)Y4pk+CsqW7xt~ueZLI_+g6#{Hu#BJlx!_ZcLbC5*J3&f^yz=km@OB2Ro9r$cd$1r zP!|M>CDO^l35ITmsWp%l!U+WzD5CwoWF zZE}rZE7mSmqX>X!$cqY0?)&Y@U!ooc(_04yxoL{HrkVnbAV+_;xg`;Up*bP~?*FdPtX+^5>m1A~bPM1?u7NrsRjNWk?y!pZfQQQtd7)Kh?po^7#iz>hYIN*Dkl@W~0| zt=1T0t3Tq7iR%0mH00R#nTX?#fK zRu$G{mlC>&^mfHY6QsD^-95bf2mfZr&eq|^xydS*-nMW0tKElIhnBGH)RX2&6t(C< zIMbUaCbwp`ZXMcm`fS@)n%l4e-A;dpqpfg$UzfZ7Z;k)&V3_Tr4h{6&>e71zMWsQZ zZi|nu^Ys;k`OYrB_k%wGQS-n5a0thH7I5S8M|w_%_12$rc4n_es$$FXqBp^g+QkME z*Qu5L6iPG!sjMS6I%54}jeyhH$W9{)IwGk}D%GZV1QSrZViWrH+f=d97G{6U^b6E} z0^J$wE!u3dy!J25gjH4?Emla?(ymq9!BT=5olr&+X+7Boz7!lVpU)8sqY6u%Fbjg& ztV9N*7IT8LNK5w5(MVbobX83u2QNvcGWsgHyZ z)M7nzCP0%|=EZ#!y9eN650Ohyh}H}dA!|UE zjO?UJi=el=U(9pWRw53w2lkzOUcT< zJ3;`9tuWwxgj6S_DxrU>1$FYDXGSat6a#?JY2>9LsW-Jy4c!(mjO?KS(s%cwbr^em zfJiG_>62`x;b{gi-`&Hv-+34B{rF$EQ_jJ~i+JVrw{ZXNXL$1HQGXlgkd&tr!gcI~ zcKYq7)d0ZG?jGKH=Ux2FAAjm*`2O$yVQ=uTpog5hUCqyb`lElZg$C*5*yBvuDdJUc zVkPZS+6EAV_I+Y8_VZG#PrK*Bth8$aKz(82cBx-KuYH{O*5=FWl!<^2yx(awMJiz+ zCF|#rkI{g^usGmHcthAeCT)y~T{pQ9w=bp<0gWd3jV_7YHf2xj@5e0h{**s#?tYt- z`Z#9x9KWi4+va~QIF61|v>fEnaUvb;P&`>B-2dt+-jZbLUcngV%!(WeXs*5CG}8~W z-ZbJ*Q52w10=hy7genI|t7;2?saCfC4vb6!$rcq#F#;SBz~CaH#0os$!?SdNeQUyIHD<2F=r%US_F`otVzAtf&igl1U@L#VSax}webp)rH)#By6wc_32UU4 zvD6a**{+3|!ce=52PvpvWJGAn2%KC7Y5w*gL1_#zoXQNSYZP4hrx9#2gcWb0XnEMk zW>-oD>P&8d3TL7#daHE+p4qO7f(haiz3ptt{N6SB_kgWIfl2eA4Oxqz3?x+q2qKqG zNUIq9DrN3^Xb(j~JKEBE5-14ZSQ8 z@nLR!bQ)OT8SdFO?IDoe)1mNM-6;>EM)U3Rwi%y1ksZuj5RJ#O=Z|+f*(T29kSQyrKxR0|4^Lla2|6c9*}5J1RavYl*JMahh^2P2fveYU;Og}o_~rZWwO{sPHp6${{XM+@vmc|btIj}#Iu4I0aP#IjaP8W4eDdK3 zI6XOT4~@W#S6=-l4liB;5%B!kQ{21#DWHPA-F>|A&iC=z#~+SCW0KWHwKY#*w@Wp>^Jbw7)z_)%IyLrcvgxjBegc~otf}$+(-cNpnD_5`M z>h+gU6n66+zc|7dw?9Klwf)X_zK_p7`88g;c?;!ihUIdJyPto8ayG+DH(xYoeK!1fI&b#nH05PTTh~1OsedXgZfir(yjSWG3f=a1 z`n6*C*$&`z-MW4!*Rg*$?uLCyonnpY*#mvfU~v**R+jkWqmS{`lV_-Nfum&iSEL;;QvRDc-ajtXNbS6Q(O0q^XYyr`U^ zk_f>9xvmW@klgLy)d*)X!eH*IhUVltZUEkJm~&``21Wsb)JuN=w%^am4{tBhIVV7z ziJt^HRghqQ@nCVgQEsh6iGsf`GcX}F@?a~IA~z!mR^+4B2vM<8Mi2|8QMGth0X)*v zkSOa4#N$=PB38Mv{c5t;O#>aAY?whnvIRp7CIORVt5OL@HVYt7XbPOVNRL6nm=hrr zp{`dzQ9!f+w6=fbG*w)_5b)r|OVDSh04G4hDd zomTVB09Z1zW~`E;Uaf#swZvG`+)iZ*3|Qv2!swg^$+`dp?abF2clIV`Ts_^?R(5v% ztzmGwTf-M>(%Zxw0~^7f^fcqrTY9NT_l(py2cQjh;eme-o4@ghaqOr4Ik<2UAHDzA z`1of(#_sMOZocvw7>cKlAEKO@nMBjXT)BE3FOHt0t}5?Bq{oc6m-zbY-^ArBSMcEn zKgY@Oi}oOAC|>*Kn+P%BgZF-d_ka4=D2fs{ZoS%qr2ug8(q(-7%b(-@pZo~R#VKyR z_69^UKK_5z`v8FVfBKjB`A>d?#}B`pa6UWxW;r;#h!21HbNu|Le+dAns|uff^eepg z)4#+A@Bb9c0k6FJ&B5bcxOf>K{rVSp|7SnOa&d~+-~2W%T)d2rfBga8|Jh$*u{gym z-*|oSJQprr!Y9A}03W>f*H|tWcxvEbvkLc6c4)bCRTyi%hx_^=aa21uxbZ?=aR#Hkvq4sz*C|eitoLr=>+eqf0;g&Ft*#;Le?U_~kD@L4+VJkCB$AsHz&Q86|o4 zw~9}&K&mqiX25L!(5y%Obp#e9v3zoM2d^RqsN29Q+c6hFh%-QG7Y8$7NhLTfv66sl zwS;;cC$)b3*$bZ+cV?6Yn`sP3%*p}$=xPYJIR?T08(p98=aG2`&oN^>>(md4m~9{^Ap25KoksK7BS|()QBaZu{3|T zTup9WYVY@A%(!@M7ioUo;pufA6P0YAP!1K)m#GXD%zX2e)H8In;1`#jat z@Jy{x8M)21>n-g}*@>@=;70Biw&DqnzP1H1gn*2PuEy%Ln(c ze|TZ=`}e=Njhr(?1y3G7L|M*o?~6OFR`khZf1SN&yMONvQZ^6i=64?4y9@Ch&(p^b z+usQx;_$*HJh*?yAU#n$`sx8LUb_6XcBhz>-=Uj;$7l5v39(mYW!wHd=1&fAl^#N%w~Jdy|!$PCoCtA(F1k<@D=>bQ?;Rhu_?76{BiPBr_-m_0@`LPSsoLI{Mz8KdGo%w&HB+T8(C362@d zT0psiW+RPqXq?u}m5!JUehviT(qLg?5JeQTIYKN^azM$pJD<(wC}(qkE$wZ-GXoJJ zrDV?mi#E*)C>IbR&aNYPD+f)>qXEF&6%lil-01#2asa7kBP_j>Cfs01=)&eY(}D<)dGHfH&Uy4xqrD zJD+vB!=eNc;jMpn-W{A1MBGKP0!R+)H;{zIY!0DOZg--6Gmv!x-_+4ruc`qJ>*B>r zxOU@Z%x3eJ6vzXOAdphst#7^SPpNjkn35g9eJ(yJIxyx>9VW~zc%0c_IHO| zh6Sz_?|Mh(VDxB8ftj%`coX>XZ;;L|F!4wL<<&7ho*Sj}>g({Q;wJ=!B zwJ&(8n+iKe0j=&jP_*50FchVx0A!!SDI+kWvWkWfqD{MA&>{dT0z?Bul2cK=I59)m z?)fah4hUB+0{4z@K%X9iVnRdr+9YG!^k**sAFqI){i?*DeD)FW{r8~Z-+^#Mg&M0I zkyd{U)ScFwnJm->#qF&`5z`i)wo0pOuPOg+;Xoe;sOb`Kwm8J4SsLG;Dkij{wt z7bnM9Etj}-=`t=}x`M}#zG|V|O@B^LPw;=?FMp1=-u@mq1l<1gBPf8Xwu1J-`#(Xh z>vm%)z4%x7&Ot{}(Zi{**(dfQOciUH>~sbj*!&aIGU3QNc*D>=Zkc(}4cnq}LbdKWQ5&(Z= zE!(;~*T&n2hTlK|@bF2E|KfKE|G|I!=lGxhHQ~kc=g?Rn zi{*l+x-#+>GENb&BNhIw-?@s}t+#)1e4?1mW~fuf>0$+@4AzV~3;L?`3`Qu78C;YK zDi3jGzQS^L2uc}8p}>=eOX%@KP-&2AN(~ea1P-VgFVcXPd>I;bjGA>P1x98IQ>k<9 zI%m_PM`ol{fw@2^3S_BGqus1D#3pbBkg6K9SqY5+DJ6q<+1E7AekO-unQVVDw3s!v zRYOpS1S6@bVeF9=8f*}-hQbWJf(SSWRv>5{kR(|)xo4@9d)Pw-!WonUC@3-k0TIIL z+jwI(Bw-Y=Xj2iJGPCcX18JKkN1kp*?qP3zhd5I_f>_uIb1} zl-rHIB)z{V0X#2&e}1pT@Be?|1$N%}msk|Pk6P!bWr>stRh>~)OVnxM+ZJ0Hh)d8K z836T6)5OPJGlXGtO3iR(0-Gs~2%1=JZG_q?T_(Gm)s##~BA!_xtsSiS-n8?4TYy!Y zRR{d%nz}|ldaGN_`m_38zQ>~OoBJ8UAN*f$zWfT97#s>*fB6=kK7N1X$uOpIeEjfB z+<56_T)1!%j~{;74GCMMU#sO3AAaz2>>nK9^*6t5@r0?y^Jhy_6KgONBwD6oHU zIQUSdPlD=A7^yZBigGp|1_zvT-kJInTmzf4!B1sT;-#Cn&N)O)ES>d?{&T~sGN**2 z=TC9-l~)mhkxF8W*x!FY7#+CXJI>pH(Q}#EPq@c*b+Ok#jP>UeQ(m)|o`nB(>uXW% zi~L8$bZv)@A~L3*vC!F2F7db$s1+i+fjEFDTIoQHyJpWI;4&d3Yc(WI~i$ z;~L{?rPZ7$`>^XK^9 z_kR~5Mm&Fe`UGEmac58{o;-Spm%s5kj*nlUS}r?NnC5`oApNN-E9`H*{aw8At+(;% zN58^npL~p0zVRyF{{HWQm{Hdi9zXmNCr8f*PO41^N%PnYi*S7O)dPI%JKt;f+)o~U z>3TrwBg^O01uL+sR=D@YZM^#0n;>SamJ2+2{1AWp2Z!gMq0R`zRZz3F> z0-Vtc>^}E78vzt^;D5P0!(0FSDPFnxzv1rAn>bDTSX2+NO37rAbplca(F!azaw}Qw z)Cf&TQEP7Iy6ln^u^?0web7tp3D18W;_XO_s=C~b&EnYggN!DXu`pBvXje7jMo6M! zNKq4#)^NmHH%;n>4RY7Z-~Ik~^!WJ2+R4}u>A5%cu^*C^L*IR~lg171o!|L=Jh*!s z&z?L6dU39khHb-CNIw_2N4xJ1bLt14^o86s+@Eu6gx_(7n%CE#W|TJ9rAdFbHAiVm-Q-T9&$=7jGJ^U9`KqbX#?v zS`pE>d6@V;25x_q@t?i(5dVMm|McJCvkU(b7GL}nVZM*U-GIlx_!s!U{_mgQqsIyR z`*S=xTH(^_3I4-By@dH6{9`E*JMZu)BSObvu5X{2;ExC%AMtDy#Fg5_E6YI5vw^ZJz^u2!p-Hs6VP8?#d$x6p2zqD3%OT9yEIG9i`6NviI zV*5Pn^CC@|pKX7-c?fGep5J8ix&3^nb;1>Tw#d|%8quf$+wkb;F6`4qt8Yd`qt|+# zrl$KHLSK1(zGkA+Y16oH(581hOnhrwsg3V_{km+j&pEsCp-msb2Jifd_eo##P8x@; zoD1Hk9uI}SR-@K7)-KZmQJ4KrBiQ|v@a^y={>T6JPq2Ud&VPwVcfSO*LcLlc^9%JpZq;Mt-p!9cnV03l~W_veezpund%^F87Oa>mhqb~VUkRb``@;$YGJ#@>85MYjsx&Th z{tYmedvM3RCfXMipc-77C<8u@HmC{N=c=s=rx|U`hRtkjxt%Du*_)G*`IH(rLqC7D zap4mPDU=w0MOh-eboJT~tEw7gm$Tm(+zQ*RfM=rKewI2t9tiLL?jPdd!bRNv>=P_b zPX}QSo9dUMV?+0CWT%V#Xr7|sNj=WD9+zO6I+`{dhIB^JJ^KLNOopSgtKa$oI$-yW z3roK!onvC(Hsy}~tzEU!`pfIbebRQyR*#{-t#}WAr{k8@s9*0juNT+xw`==r7^c?J z_D_+fY%FQ(n&s@G{dF1e{g>1^M$uV6+prv)CYjE(!|7epewV3(MyvUml@eA@PVnFV zS%Gi=qyGW-pWOm2ZX*dnrH1AjwG^PkZ{XS?uzGM8e|Yr>@BZ1J;@Rwvkx!muRaL07 zqD~oqi)4GyT-T^-%c!n0uvGN#)~hHFkjsT%3zvo z1_DQ@CS+!ZJ{@W$K-*L{&->1`BY(k$8x~L?C_=|RCWA`}madhvt8v&0w-Nvj{#`P^ z@a&CBqsRyxT62=teUqt$g4y@5&FfH@e2JWYI8~6?K9)P9lEwl&!^w0ukGGPo;Ltk} zfhmAlys)@-iz2crNUVVgV#o#9HT3Qy508))Uz9Tx1^e@9>NPRVt(RMu2s6d8`;iqW zAke5d!3=t;Kz=b8G|w}o_y5Okp?IPte*NoX$m92M;ra#4%j=MnN6`8NO4(p{HI$cs zR3SM-+RH^w$TqG;AAJnWZQelB*w|n$j&i%xCuzGH4%9&AR{YH;zPC_xR7I5sv~cPn zE|$b&&(+4W`i`|M3WS%gUHM^MRlS3dTAgVBfD_|M^l0`&zpXDH+{0H7zUW-fHfDh7 zsBn$WNjl>I2PTUHO@Z7S9&7BxwJGC&n$A(!H@w1g{@k{ruIskl6I}?MRoH3jwP7># zJg$d&R(Aci$D8=9>0H&R-4_jt$T^V)I`g8_#(S*)iiyrD?(6?Xm}bGB)ewCBpE-*R zH{Bd)Z>+We3Y~00b>e%`Bs#8rXGYhS7`XpT@MkYS!hiDL`~`0B{C%t*-$p2Z7m?Z7~Y?1k8^n~6N5-a&aL zByqO67sCdh3{b>K&=74hH#<3`mX+2B_~3*rv;~>jCQsvsxxH*|B3qo%M!D0HJLYZY@@$^i zt2oD56jd z?YM=SkhF&XMXq<}W=3y|d9%B3;)~%K_ez~4*soT%er zI(6-2jcuk|XHA{jY7UBjtP$$;oDgF7qQ`sFK0%7H-5OJ;x!%9Q&U|h0{Pq4QM%JF) z&T{}qP%l}IrdJySlP?_%_`|=zm>}2FAZyoPsh*>ltP$UIR4O~&`SxPf{p>Jnd8nJ8 zY#@3PHC0`U7MhH2MQ6KDEyOn3%k-pmG$!kf!fG}V?5g8!@C#!_T z7f+z8Q$#+6%t~l~QWOhQ->f*H&Lsi?r4Kntq=mP|;Z5S;@*{WXaFSV8i!o)*s8fa} zwGftIGBqJ9u8oCgooXPIU@nlQYBkOZ@yo6t4k${pro^Aqta2lm3s4r{;VU>8G9Y4- zI!}pdO=CnlQxtP84?Yps);wea<%GZrr>hwuj|}u>5DF)Ma4B(DkQz3)pP=kttSsak zUvpT~1SF`h0tm6p%+mtIxf4cvPl`s-UQ4e@M3ocoF0Pm63XXq zXQ!-;=Rr|kIKcDg3q1W-{|EN3zlKXUUd6%T0m^v|&MR=8Kq+CS0MtTy$kKuQwb|-} zRo&OXcp2t@>K9Rxy^G}Uv5}fNSKZ&gw#}ZpPkd67Mi^4W9ZpSM1Cg8i$7qe-T!*gl z^6U?SBAy-}*%P84dD+R17-Z)1Jp&7B?Jj)}xPf>^7)s3)LqF^BMo}ksu3O2$1GaNF zB~hP*JtRGi&g${*W9vk{tzK*21$?^#e&fUF2uAIH;T?m6p1SMa)k#`g(Vj(l8u+*4 zj8136gY_ka)YGZ=e`(FmWUHQiK*<{6FVjXb<7PmIuIYnjV(L?9?vsHXzE0l&QwBz~ zQ9iIie?QR-ZN4u?4aj8wsOLKF#$h|E{n%L@1jaOtk@m@vO_L|XexTnyDgn=r68`Bs z8Q=eZ_x=Gse(@5h`XwR}SZahaVy9jqr-a0F%)q#In348g#$q)`ou1;w0$81#K&u6W z8ELh`D%Gg9fTSfz5)v8DS#t%f9)qMt=75k~Iu!z-g_)sLD};g}1%qM4wj>rlqS>V1 zEz+W5`fm_|GL+3FEigkkdoo)_h807}H4*e44Z!x52|rPP!#8i$VFGRz@Kk z!yfFa6!CAIC+3l{)P(^JO~PAliw=n;<7pDc|`W;*Qp`v#PM z4?-vb#2Ju_eIP$+R|j8zQW~BPvz;A4Gggmoth+H60g$UQx zv*pxB--&|)0t7n%_Pr_0PHhXJuq*)2GSHlRFuV_~)GY3;us6s+V;5_ZwQMePwj4t6 zwM%lyoV1~oyN^6I1z&M;dV=`UOE2Mn`1r)3bsCV*dL-6CPp-X5xjzl{f2UzlQm^32 z#9n(7iEfkMFO4SDHAGs6*0uy4y@!5Q{BICNP zhT_l}??cajKaPfMI`dlh5eFKkCvG99Zi+45_8g}P`0m9c{QW=wV=Qj|UGTl9*qsLi zDjZ@gvCoXUUZKhX7k3D=D=*_XA0So7s07eziKrE*V622u20~^=UM7@*K=YZ~H#1Nw zAah8L2!Roz`JhLRC}38usk8}yFmON-7|H?5Dj~Yxe0IYha{ax4om3`BQld_#V=iVh zbC`1owMq(+WV>(%m<@*Q{P1UxT$?62M)!xY#}$$Gyp$}+0OnaupY77J0v6d?Q$)pg( l2n;!G?mu+ZJ{K1^0{}{0CYlvrJe2?d002ovPDHLkV1fq;d!GOR delta 203605 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%0D-?Jl?#V<4ji;P_5x= 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�N*`0$K{z){!F!GCENO=i}PULn}N^YFcaK}*E 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 */ -int datatoc_splash_png_size= 204738; +int datatoc_splash_png_size= 153933; char datatoc_splash_png[]= { -137, 80, - 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, - 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218, -157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, - 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33, -162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, - 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, - 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1, -128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, - 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, - 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0, -192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60, -241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, - 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174, -206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, - 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, - 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252, -247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11, -255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255, -100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0, -242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, - 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, - 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104, -134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98, -138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, - 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185, -168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, - 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, - 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, - 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, - 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, - 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, - 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168, -161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, - 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199, -136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, - 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143, -169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, - 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13, -171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243, -148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, - 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, - 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191, -110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, - 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145, -185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, - 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, - 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173, -157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219, -174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, - 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, - 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, - 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, - 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87, -173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183, -203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248, -122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144, -173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142, -112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, - 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252, -237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, - 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, - 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, - 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178, -254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87, -102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, - 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171, -237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, - 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153, -220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, - 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84, -244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, - 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, - 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141, -156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66, -154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, - 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111, -239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234, -116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189, -121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238, -173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6, -133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207, -100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253, -234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, - 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75, - 71, 68, 0,255, 0,255, 0,255,160,189,167,147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, - 24, 0, 0, 0, 7,116, 73, 77, 69, 7,219, 8, 10, 15, 54, 11,254,114,226, 41, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189, -121,212,101,103, 89, 39,250,123,167, 61,156,225, 27,106, 72, 85, 66, 37, 49,149,129,132,132, 41, 21, 6, 1, 21, 72, 33,160,226, -132,137, 99, 59,155,216,186,188,182,182,146, 92,180, 23,246,242, 98, 19,187,111,115,219,123,181, 37, 42, 44,245,218, 10, 81,161, -165,175,136, 41, 71,104, 90, 66, 42, 4,130, 16, 8,169, 36, 36, 33, 73,205,223,116,134,189,223,225,254,241, 60,239,217,251,156, -250,230,250,190,202,224,254,173,117,214, 55,156,115,246,222,239,244,204, 3,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, - 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104, -208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26,156, 19,168,115,124, 63,193,175, 12,192,126, 33,176, 27, 64, 15, - 64,201,255,111,208,160, 65,131, 6, 13, 26, 60, 11, 32, 0, 72, 33,112,217,187,127,234,250, 63,121,248,247,127,226,232,163,127, -116,211,137,223,249, 55,111,250,239,137, 18, 7,106,159,105,208,160, 65,131, 6, 13, 26, 60,195, 53,117, 1, 32,121,199, 15,191, -242,157,183,126,215, 53, 63, 56, 83, 12,218, 83,211,173,252,218, 87, 92,250,252,111, 63,112,201,193,187, 62,255,208,147, 79,156, - 26,126, 9, 64,104,152,123,131, 6, 13, 26, 52,104,240,204,102,234, 18, 64,235,205,215,180,223,250,154,221,226,154,226,232, 81, -216,147, 39,224,251, 22, 23, 92,113,225,236, 13,215, 95,243,150,163,167,230,212,189, 15, 28,255, 12,128,126,195,216, 27, 52,104, -208,160, 65,131,103,182,166,158,254,237,125, 39,158,188,234,130,244, 69, 47,186,108,247, 94,148, 30,126,225, 20,252, 98, 15,157, -243,118,234,111,189,254,197,223, 48,147, 39,151,127,244,174, 35,159, 6,112,162, 97,236, 13, 26, 52,104,208,160,193, 51,147,169, - 3,128, 8,192,194,159,126,234,216,189, 78, 23, 59,191,254,170,189, 87, 24,101,224,122,139,240,167, 79, 3, 89, 27,175,122,245, - 85, 87, 29,188,106,223,107,255,254,222, 47, 63,124,122,169, 60,210, 44, 81,131, 6, 13, 26, 52,104,176,126,237,249, 92,223, 47, - 3, 48, 13, 96,223, 91,175,155,254,161,223,254, 87,215,253,248,174, 86,146, 21, 75, 67, 64, 25,136,125, 23,195,236,219,135,167, -158, 56, 49,255,243,191,241,145,255,240,223, 14,125,233,183, 0, 44,240,247,195, 51,121, 50, 67, 8, 7, 0,204,242,159, 71,132, - 16,207,105,161,228, 95,218,120, 27, 52,104,208,160, 97,234,203, 67, 2,152, 2,176,231,146, 89,245,173,255,227,103, 95,246,243, - 87, 93, 48,179,183,236,149, 0, 60,176,247, 34, 36, 23, 93, 12, 27, 60,222,249,190,255,249, 7,191,242,187,127,247,203, 0, 30, -229,231, 61,107,198, 30, 66,216, 15, 96,255, 58, 63,126, 74, 8,113,120,157,215,189, 19,192, 65,254,243, 86, 33,196,109,207,113, -166,254,156, 24, 47, 11, 39, 7, 89, 64, 57, 80,123,235, 48,128, 35, 0,238, 16, 66,156,218,130,251, 76, 94, 31, 91,189, 7, 27, - 52,104,240, 47, 27,250, 44,152,178, 7,208, 61,127,202,188,240,162, 89,179,211, 5, 41,198, 36, 5, 1, 72, 41,132,143,255, 17, -244, 37,168,209,187, 26, 64,171, 95,248,254,191,253,240, 67,127,245,127,190,245,234,111,191,114,239,212,140, 45, 3,112,234, 56, -202,118, 27,106,199,121,120,199,205,223,240,131, 47,223,127,193,243,127,240, 93,119,252,226,241,249,226,227, 91,196,216,111, 0, -240,174, 13, 16, 99, 0,184, 3,192, 33, 33,196,237,205,182,121,206, 88, 25,110,224,215, 74, 2, 94, 20, 88,222, 19, 66,184,157, - 5,151,179, 97,238, 7, 0,220,185,137,239, 29, 2,240,134,102,213, 26, 52,104,176, 29, 76, 93, 0, 16,221, 84, 30,248,175, 63, -248,146, 95,251,150, 23, 93,248,218, 86, 75, 39, 65, 40, 64, 8, 64, 10, 64,242,239, 90,209,223, 74,142,222, 19, 74,211,255,132, - 0,132, 4,164, 68, 0,130, 11,194,123,173, 33, 71,255, 23,240,174, 68,232, 11,188,249,141, 87,190,226,240,243,127,242,207,126, -242,215,255,252, 29, 31,249,228, 99,239, 3, 48,196,185, 55,197,223, 0,224,134, 16,194, 13, 0,110,220, 10,205,173,193,211,138, -187, 55,248,249,155, 0, 28, 12, 33,220,216,104,205, 13, 26, 52,120,174,105,234,187,127,239, 71,175,125,247, 13,175,218,255,117, -182,231, 0, 47, 32, 36, 23,139, 11, 18, 8,130,148,121,207,172, 55,176,134,238, 1,120, 15, 40, 5, 33, 88,117, 15, 0,132, 16, - 82, 10,133, 16, 70, 90, 61,177,236,128, 0, 1,219, 43,113,209, 69,187,118,255,233,127,252,161,255,231,127,255,173, 67,151,255, -198,159,124,242, 63, 0, 56,182, 69, 90,123,212,132,176,134,182, 86,255,251,206, 16,194, 27, 26,198,254,156,193, 97,144, 37,230, -176, 16,226, 16,107,242,179,188,214, 55,213,246,192,126, 0, 31, 8, 33, 92,183, 69,107,127, 59,200,188,191, 22,154,125,214,160, - 65,131,237,211,212, 83, 35,246,191,254,202,243, 94,134,165, 18,174, 63, 0,188, 39, 38, 29, 45,235,177, 24,108,252, 27, 1, 80, - 18, 98,215, 30,210,210,125, 0,164, 7, 60, 91,241,133,228, 75, 7, 64, 6,192, 59,210,246,157, 27,197,231,219,161, 69,203, 24, -249, 95,126,241, 91,126,238,101,151, 95,248,194, 31,127,215,159,191,109, 88,250,123,183,130,177, 11, 33, 86, 53,109,178,118,254, - 46, 84,102,218, 3, 76,236,111,107,182,208,179, 26,183, 3,184,125, 57,205,155,153,246, 29, 0,238, 8, 33,188,135,215, 59, 50, -246,173, 90,251, 59,162, 16,209,160, 65,131, 6, 91, 1,185,137,239,168, 97, 25, 78,252,197,125,143,126, 18,114,128, 52, 41,145, -182,128, 36, 15,252,242,213,239, 89,128,145, 67,192, 21, 64,214, 33,147,187, 39,166, 29,198,216,112, 9,248, 2,240, 3, 32, 12, -249,239, 1, 16, 74, 98,240, 33, 0,193,195,186, 0, 63,116,248,129,183, 94,123,240,158,247,253,235, 15,189,240,226,217,239, 4, -177,125,185,157,147, 36,132,184, 3,228,211,172,107, 76, 55, 52,219,231, 89,141, 55, 8, 33,110, 94,143, 41, 93, 8,113,243,132, - 70,125, 75, 51,125, 13, 26, 52,120,174,104,234, 0,112,226, 71,127,247,190,119,252,213,167, 31,249,206, 43, 46,158,186, 88, 0, -210,135,224,153, 4,194, 5, 10, 45,235, 15,173,188,246,194, 93, 47,184,241,235, 95,188,223,232, 84,122,239,217,223, 14, 98,236, -195, 37, 8, 45, 32,246, 93, 3,185,227, 10,160,181, 7,194,116, 1, 87, 32, 12,143, 35,244,190,138,112,226,139,128,235, 3, 50, - 7,224,224,131,130, 95, 42,240,130,171, 47,188,232,163,191,253, 99,191,247,166,159,126,175,250,236,145,147,127,134, 42,120,111, -187, 24,251,145, 16,194, 29, 53,141,237,192, 86, 92,119,153,136,232,195, 91, 20,105, 93,143,240,223, 84,186,217, 86, 92,227, 92, -140,119,226, 57,215,117,189, 77,104,200,183,163, 10,174,156, 13, 33, 28,104,124,235, 13, 26, 52,120, 46, 48,117, 7, 96, 9,192, - 23, 62,112,120,254,221, 56, 60,159, 99,249, 34, 54, 59,127,232,245, 23,253,216,155,175,187,230,252, 68, 26,233,124, 32,211,123, -127, 8, 12,151, 0, 55, 15,249,252,215, 64, 94,245,189,144,231, 93,113, 38,209,141,191, 44, 29,131,123,242,159,224, 31,255, 71, - 8,145,146,214, 46, 4,108,191,192,249,123,119, 77,127,248, 63,255,240,111,190,234, 71,127,235,228,227, 39, 7,127,139,173,243, -177,175,132, 45,201,195,102,198,118, 19,107,251, 7,150,121,255, 8, 42,211,240,169, 21,174,241,174,218,119,239, 16, 66,220, 94, -187,238, 77,152,136,232,230,107,222,182,158,232,253, 16,194, 77,172,141,238,223,232,115,109,199,120, 87, 25,235, 45,124,221,217, -218,199,183, 43, 82,124,146,129,207, 54,228,163, 65,131, 6,207, 5,166,238, 1, 12, 0, 88, 80, 81, 24,133,154, 7,157,153,234, - 11,222,247, 83,175,248,149, 31,126,237, 21,175,245, 5, 96,157, 7,202, 33, 66,127, 17,176, 3, 64, 7,152, 55,253, 18,228,254, -235,215,190, 91,123, 55,212,165,111,129,152,121, 1,252,231,223, 11, 72, 71, 74,185, 0,108,191,192, 69,151,158,191,235,189,111, -255,238, 95,127,227, 47,252,254,119, 2,248,202, 54, 51,245, 58, 33,223,148,118, 25, 66, 56, 8,224, 3,107, 48,133,253,172, 21, -222,180, 74,180,117,204,173, 6,128, 67,156,162,245,158, 85, 44, 8,251, 65,169, 89, 7,216,156,188, 18,243,125, 15, 86,118, 45, -196,231,186, 33,132,240,134,115, 56,222,229,198,122,103,195, 88, 27, 52,104,208,224,236,153,122,100,220, 37,191,234,138,181,186, -250,121,217, 91,254,224, 39, 94,115,219,181, 87,238,185,220,246, 61,188, 43, 73, 51, 47, 45, 32, 28, 68, 2,232,111,121, 23,228, -190,151,143, 46,214, 47, 44,238,122,248, 40,254,242,115, 79,226,244, 66, 31, 70, 9, 92,249,188, 25,124,243, 11, 46,192, 37,123, -102, 0, 0,114,231,165, 16, 47,250,105,184,207,254, 6, 96, 52,201, 22, 82,194, 47, 13,240,141,215, 95,245,210, 31,252,166, 23, -254,216, 31,252,229,125,239,196, 54,165,187, 49,195,187, 97, 66, 35,220,232, 53,110, 96, 6, 55,169, 1, 30,170, 9, 9,117,109, -118, 63,170, 72,251,195,107, 8, 27, 31,168,105,214,119,212, 52,203, 3, 19,207,125, 83, 8,225,200, 10,133, 98,222,181, 12, 67, -175, 95, 43, 62,219,129,101,198,113,174,198, 59, 59,193,208, 79,213,158,111,255, 54,158,149,131,107,104,238,103,179,175,182,220, -253,210,160, 65,131,127,153, 16, 91,116,141, 0, 96,250,135, 94,187,231,231,254,243,119,127,237,219,118,116,178,188, 40, 2, 5, -200, 21, 3,102,247, 0,202, 57,168,111,248, 73,168, 23,253,171,209,151,191,244,228,105,188,253, 79,239,197,103,143, 47,160,155, - 24, 36, 70, 82, 0,124, 89, 34,241, 22,223,250,138, 75,240, 51,175,191, 26,137, 38, 11,191,255,234,189,240,247,191, 15,232,236, - 70,236,210,170,147, 4, 15,124,241,241, 39,175,248,158,223,120, 19,128,207,129, 92, 4,171, 17,210, 91, 80, 43, 62, 35,132, 16, -235, 32,188,147, 26,236, 27, 38,253,178,171, 85, 88, 99,191,239,221, 53,102,116, 4,192,205,203,249,118,151,209,110, 15, 11, 33, -174, 91,229, 94,117, 6,124,243, 36, 83,224,123,127,160,198, 60, 78, 1,184,180,254, 57, 54,185,191,103,130,105,221, 56,233, 71, - 95, 69,243,222,182,241,174, 48,214, 35,124,207, 59, 38,215,106, 59,152, 98, 8,225, 65,140,251,237,175,219,164,149,230,206, 9, -107,207,114,214,134, 35,188,150,183, 55,165,119, 27, 52,104,112, 46, 52,245, 73,134,126,201,175,126,207, 21,191,122,235,155,174, -249,126,233, 53,138, 97, 73, 12,221,218,202, 56, 31, 60,176,251, 82,168,231,127,251,232,203, 79,206, 45,225, 7,126,231, 19,120, -112, 96, 49,211,202,209,215, 10,137, 81,200,149,128,201, 18, 8,103,241,254,255,117, 4, 74, 74,252,155,131,215,144,198,190,247, - 69,240,143,236, 1,220, 18,160, 51, 64, 0,190, 40,112,201,165,187,247,190,229, 53,151,188,241,195, 31,127,232, 11,168, 50,228, -215, 75,108,111, 89, 67, 67,155,100, 40, 55,111, 34,208,234, 61, 19,218,229,138,185,206, 66,136, 67,108,222,142, 26,233,129, 16, -194, 77,107,248,195, 15, 9, 33,110, 92,225,122, 71, 66, 8,183,214, 24, 74,204,193,174, 51,196, 91, 38,152,202,178,121,248,181, -103,187,251,105, 28,239,145,149,174,183, 77, 12,125, 50,190, 96,171,170, 10,174,228, 62,216,207,235,113, 75, 8,225, 57, 95,110, -184, 65,131, 6,207, 12,166, 46, 0,136, 61, 93,117,253, 31,223,244,178,255,244,186,151, 92,240, 98, 59, 0,172, 40, 1, 63,164, -126,108,137, 24,125, 50,148,125,168, 43, 94, 3,164,221,209, 5,254,253,127,255, 28, 62,245,196,105,160,219,197,201, 69, 11, 72, - 7, 41,128,174, 18,184,184,173,113, 65,174,177,107,186,131, 15,254,175, 7,241,218,203,207,195, 75, 46, 62, 15,144, 18,242,194, -215,194,127,254,247,129, 93, 23, 1,193,195, 11, 1,157,165,184,241,245, 47, 59,248,225,143, 63,244, 94, 0, 39,177, 49, 19,252, -122, 75,198,222,142, 77,228, 22,215,106,139,215,181,218, 85,153,143, 16,226, 48,151, 38,189,165, 38, 92,172,198, 76,110, 94,227, -122,135, 66, 8,135, 49,110,234,142,207, 55, 89, 42,245,182,213,158,175,246,108, 55, 61, 77,227,189,237, 92,153,168,121, 44,245, -253,113,120,139, 74, 5,199,186,242,117, 51,126,189, 6,253,104,111,134, 16,246,175, 20, 7,209,160, 65,131, 6,117,108, 38,191, - 59, 6,197,117,222,122, 96,250,231,239,249,119,175,253,211,215, 93,189,247,197, 69,207,193,195, 17, 67,151,160, 10,114, 74, 0, - 90, 80, 5, 57, 45, 33,119, 95, 51,186,200,209,185, 30,254,224,211, 95, 1,178, 22,165,185, 41, 9, 40, 5, 15,137,185,129,195, -103,143,246,112,247,209, 30,138, 32, 96,149,194,223,124,241,104,245, 0,221,139, 40,232, 14,150,159, 38, 0,214,227,202, 11,103, - 46, 5,112, 62,182,175, 81,205, 13,172, 69,110, 52, 64,171,206,224, 78,109,128, 41, 28,154,184,247,138, 12, 98,157,102,218,195, - 43, 60,211,193, 9, 6,187,158,231,187,227,105, 26,239,145,115, 85,127,159, 93, 8,147,230,242,179, 97,174,167, 0,220, 10,114, -125, 92, 39,132,184, 81, 8,113, 91,237,117,163, 16, 98, 7,127,166, 46,180,220,196,130, 87,131, 6, 13, 26,108,169,166, 30,205, -237, 23,188,237,219,246,253,202, 59,191,249,133, 63,161,188, 70, 81, 56, 64,121, 50,177, 7, 64,120,129,160, 4, 32, 37, 87,139, -243,128,206, 32,218, 23,140, 46,244,212, 66, 31,189, 65, 9,180,179, 74, 78,136,186,181,164,250,177,199, 23, 75,220, 85, 88, 92, - 61,165,177, 48,176,213, 67,100,211, 0, 20, 48,236, 65,228, 93, 4, 4,192,149,184, 96,111,231,188, 52,145,123,135,133,255,194, - 6,199,117,235, 42,239,237,103, 38,181,159, 53,168, 81,244,247, 6,180,197,131, 43, 48, 86,172, 67,187, 30,211, 26, 87, 8, 32, - 91,175,229,224,200, 42, 99,220,208,181, 38,159,237, 28,142,247,156,228,134,179,224, 54, 25, 59,112,235,217,228,166,243,119,215, - 83,236,230,182, 16,194, 33,140,187, 56,222,181,134, 32,213,160, 65,131, 6, 27, 98,234, 2, 0,166, 51,249,170,247,253,200, 85, -191,254, 29,215, 94,244,106, 59, 4,202,196,145,102,238, 2, 80, 4,232, 84,160,239,188, 55, 16, 18, 90,142, 50,216, 5, 0,132, - 42,126,109, 54, 79, 32,141,129, 15,160, 90,241, 33,140,234,189, 35, 0,240,212, 8,102,161, 95,226,222, 65, 31,111, 49,245, 84, -120, 15,132, 2,176, 67, 64, 76, 65, 8,170, 82,215,105,235,214,158,169,108,246, 43,199,123, 27,178, 64,172,199,103,201,126,213, - 91, 80,181,231,188, 19,192,122,131,165,234,209,205,251, 57,240,107, 51,152, 93, 69, 3, 60, 27,108,138, 9,243,103, 15,156,227, -241,110, 59, 83,103,134,126,231,196, 56,110, 62,151, 29,250,216, 29,113, 43, 42,211,255,254, 16,194, 13,147,129,129, 13, 26, 52, -104,176, 81,166, 30, 77,217,230,107, 47,206,190,239,143,126,236,218,219, 46,217, 51,125, 94, 49, 12, 64,166,136,161,151, 30,178, - 8,208, 45,137,119,255,221, 3,159,185,100, 42,155,249,246, 3, 23, 94, 92, 4, 80,163, 23,161,128,114, 17, 97,225, 97,136,157, -151, 2, 0,158,183,163,139,111,187,108, 15, 62,120,255, 49, 64,107,192, 10,170,251, 30, 27,192,128, 25,187, 16, 24,204, 45,225, -202, 61, 83, 21,209,237,157, 2, 6,243, 64, 49,205, 31,246, 8, 85,104,156,196, 54,152,223, 89,123, 66,141,200,174, 39,120,109, - 57,230,180,145, 94,238, 79, 7, 78,109,193,103,159, 77,227, 93, 15, 67,191,245,105,106,185, 91,175, 98,135,103,211, 60, 54,104, -208,224,153,201,212,163,185,253,188,159, 62,184,231, 23,223,249, 77, 87,255,111,211,121,154, 20, 30, 64,155, 53,231,194,195,120, -160, 76,129, 95,250,255, 62,247,225, 95,251,243,175,124,240,195, 63,253,194,183,129, 10,191,145, 95, 93, 0,208, 18,225,196,103, -129,175,185,158,153, 36,240,246,111,189, 10, 31,188,255, 9, 96, 80, 2, 73, 82,241, 98,199,119, 13, 30, 88, 90,194, 27,175,216, -135,111,126,225,190,138,240,206,127, 25, 33, 12, 33, 92, 57,210,236,133, 8, 88, 92, 28,246,143,206, 15, 22,182, 81,123,186,141, -171,155, 69,220,128,141, 71, 66, 31,193,230, 43,211, 61, 27,243,151,159,109,227,157,100,232,183, 63, 93,209,231, 66,136, 83, 19, -193,141, 7,209, 52, 17,106,208,160,193, 38,153,186, 0, 32,148,196, 21,191,243, 67, 87,252,151, 31,121,229,165,111,116, 37, 80, -104, 1,164, 10,240, 30,161,239,145,106,224,216,160, 24,252,204,127,187,231,119,223,255,201, 83,127, 4,192, 63,188, 48,124, 10, - 34, 92, 25, 2, 32, 34, 83,207,187,240,143,124, 2,234,202, 31, 0,218,187, 1, 0,215,125,205,110,124,232,230, 87,227, 7,222, -123, 23, 22,231, 7, 64,150,145, 63, 61, 4,160, 44,129,126, 15,111,186,124, 47,126,255,167, 94,141, 52,154,223, 93, 1,255,192, -159, 65,164, 25, 32,200,143, 31,188, 3,164,196, 99, 79,204, 31, 27, 20,254, 24,182, 47, 80, 14, 32,159,243,193, 26,145,221,176, -246,245, 47, 44, 69,233, 89, 51, 94,238,198, 54,201,208,159,238,168,243,166, 16, 77,131, 6, 13,214, 13,185, 6, 83, 63,239,189, - 63,242,252,223,252,145, 87, 93,250,198,162, 4, 92, 91, 3,185,161, 44,240, 37,143, 52,147,184,239,241,185,167, 94,247,174,143, -191,227,253,159, 60,245, 95, 1, 60, 12,224,241, 47, 29, 91,248, 34,164, 0, 28,247, 87, 81, 2,208,100,130,183,247,253,246,216, - 77,190,237,197,251,240,207,255,238, 13,248,213,183, 92,131, 23,205,166,200, 66,137, 41,233,240, 29,151,237,194,251,255,245,215, -225, 67,191,248, 58,156, 55,157,143, 62,239,191,252,231, 8,167, 30, 6, 76, 78,109,219, 17, 0,235, 0, 41,240,197, 71, 79, 63, - 2,234,179,238,159, 97,243,188, 82,212,249,179,253,249, 14, 62, 75,199,187, 18, 67,191,233, 25,198,208, 27, 52,104,208, 96,203, - 52,117, 92,181, 39,121,237, 91,175,126,222,245,182,239,129,174, 6, 18, 9, 20, 30,114, 96,161, 59, 18, 31,189,247,201,251,191, -247, 61,159,254,143,167,122,254, 99, 0, 78,128, 26,189,100,127,245,169, 19,119,157,126, 83,241,163,221,118,162,189,103, 59,188, - 0,208,106, 35,124,229, 31,225,103,254, 8,242,202,239, 31,221,231,162, 93, 93,252,242,183,188, 0,183,188,249, 74,156, 94, 28, - 66,107,137,217,118,122,198,243,248,199, 63, 1,247,207,127, 8,228,109,146, 58,164, 66,240, 30,194, 57,184,193, 0, 31,252,135, -123,254, 39,168, 30,253,118, 50,245,205,248, 53,199, 76,168,219, 85,245,236, 44,112,164,246,124,235,234, 62,199,249,219,207,214, -241, 62,155, 24,250,102,131, 24, 27, 52,104,208,104,234,227, 12,255, 5,251,242,203,219,169,129,247,160,232,246, 94, 9, 93, 88, - 32, 5,110,187,243, 11,135,222,244,238,195,255,246, 84,207,255, 13,128,167, 0,204, 1, 40, 0,148, 15, 28, 47,238,250,232,253, - 79,220,171, 52, 16, 56, 21, 77, 72, 50,197,139,246, 52,252, 63,255, 33,220,189,255, 23, 80,140,187,191,141,146,216, 61,157,159, -201,208, 93, 1,255,192, 29,240,119,189, 19, 34,205, 32,148, 34,127,189, 73,129,178,132,146,192, 23,191,120,244,201, 15,126,252, -145, 67,160,218,239,219,194,212, 39, 90,124,110,132,200, 78,166,137,221,244, 12,219, 7,245,231,155,229,114,166,155,213,210,159, - 13,227,125, 86, 48,116, 46,221, 59, 41,124, 53,104,208,160,193,166,152,186,250,196, 3,139, 95, 58, 81,148, 54,105, 75, 36,165, - 71,162,128,129, 10,225,103,239,184,231,143,111,253,127,143,252, 10,128,207, 0, 56,206, 26,122, 12,111, 43, 1, 60,245,159, 62, -252,224, 29,253,210, 67,149, 22, 40, 61,105,235,177, 40, 77,187,139,240,208, 71, 97,255,238,103,224, 31,251, 24,208, 95, 65,137, - 27, 46, 32, 60,117, 47,236,199,126, 1,254,190,219,129, 44, 7,148, 38, 95,186, 0, 32, 52,196,176, 4, 84,192,187,222,255,241, - 15, 2,248, 50,223,127,203,153,122, 45,111,185,142,117,165, 23,113, 26, 82,157, 32,223,178,134,166,123,174,113, 7,198,125,183, -183,172, 99, 46,110,121, 22,143,119, 37,134,126, 24,171,215, 44, 88, 83,232, 11, 33,220, 82,123, 29,156,152,179,141,238,183,122, - 80,230, 41, 52,121,234, 13, 26, 52, 88, 3,171,154,223,159,152,119,159,250,241, 63, 60,124,219,207,190,238,242, 27,102,219,102, -250,254, 19,139,143,253,214, 95, 63,244,225,127,124, 96,241, 47, 0, 60, 1,224, 52,107,231,117, 38,234, 0,244,239,126,108,240, -145,255,251,239, 31, 60,248,182, 55, 95,249, 6,183, 80, 80,241,153, 84, 85, 33,108,173,105,192,206,195,125,234,215,224,147, 14, -176,227, 10,200,153,203, 0,149, 1,161,132,159,127, 4, 56,126, 63, 48, 56, 5,152, 4,104,239,168, 81, 60, 0, 94, 1,133,128, -106, 43,124,228,175, 31,252,252, 31,254,213,151,254, 24,100,122, 47,183, 65, 59, 63,136, 51,251,139,159,194,198, 34,223,111,198, -120,237,245, 59,185,205,232,161,117,220,255, 6,102,150,219, 18,112,198, 81,214,183,213,152,200,193, 16,194,123,150,211, 88,107, - 41, 95,179,207,214,241,174,194,208,223,112,150,110,130,253, 19,140,248,214,154,213,226, 0,215, 58,184,125,173, 92,243, 90, 27, -221,250, 28,223,214,116,111,107,208,160,193,217, 48,245, 18,192,201, 15,221, 51,247,222, 15,221,115,247,157, 0,186, 32,191,249, -147, 32, 83,251, 34,127,102,178,172, 88,236,183,254,228,173,127,244,192,187, 15,156, 63,125,201,245, 47, 61,255,178, 98,110, 0, - 49,157, 1,169, 24, 85,140,131, 49, 16,198, 80, 81,154,147,247,193, 29,251,244,232,114, 66, 42,106,216,210,238, 78, 80, 60, 0, -133, 71,240, 41, 76, 98,112,228,129, 99,167,126,224,215,255,226,215, 89, 75,239, 99,141, 14,109, 43, 16,209,205,180,106,189,121, - 35, 68,150,171,165,221,140,170, 19, 90,100,116,135,152,240, 31,158, 96, 14, 81,152, 56, 80, 99, 16,219,137,219, 49,222, 6,245, - 38,214, 52,111,175, 61,219, 65,102,132,179,172,137,159,194, 10, 62,248,103,242,120,121, 92,203,185, 4, 62,176,129,173,112,199, - 38,114,215, 15,178,192,116,132,231, 96,185,218,239,147,173,114, 1, 42, 3,220,164,178, 53,104,208,224,172,152,186, 99,198,109, -153,137, 75,254,223,144, 95, 14, 43, 55, 77,177, 0, 22, 3,112,223, 13,191,117,207,255,241, 55,111,123,197, 59, 95,122,249,174, -231,149,167, 7,192, 84, 10,145,129,106,189, 71,173, 93, 40, 32,201, 87,207, 67, 11, 0,188, 7,134, 30,126,110,128,228,130,243, -240,248, 19,115,139, 55,252,242,159,221,118,114,161,252, 88, 77,200,216,110, 28,102,134,190,225,160, 37, 33,196,237,181, 2, 54, -179,117, 66,255,116,111, 4,214,214,111,100,237,122,255, 10,154,103,221, 74,113, 35,214,104,132,243, 76, 30,239, 50,216,168,123, -224,208, 89,220,107, 63,214, 31,103,112,251, 57, 16,232, 26, 52,104,240, 28,129, 92,131,141, 90,144,191,252, 20,168,243,217,105, - 0, 61,254,127, 88,227,187, 67, 0,115,167,122,254,239,191,254,215,254,233,237, 31,189,231,137,251, 77,162,161,230,134,240,167, - 45, 48,112,181,171, 8,142,144,159,120,197,154,240, 14, 64,225, 16,230, 28,112,178,143,100,199, 14,124,238,193,249, 39,223,240, -115,127,242,142,123, 30,153,255,115,126,182, 30,182, 47,234,253, 16, 19,215, 27,185, 17,199,217,212,255,190, 29, 84, 94,246,118, -172, 47, 7,249, 14,144, 41,123,219, 43,154,113, 83,152,235,214,184,215, 33, 80,219,211,195,207,246,241,158, 99, 68,127,253,122, -247,206, 29, 32,119,192,205,141,217,189, 65,131, 6,235,166,227,219,124,125, 5,160,197, 90,218,213,191,240, 29, 23,253,248,219, -223,120,213,183,206, 78, 39,218, 15, 61,156,150, 64,174, 33, 98,141,120, 89,123,156, 16, 0, 7, 4, 27,128,190,131, 44, 45,148, -145,232, 59,224, 55, 63,246,228,223,189,253,247,238,126, 79,233,195,167, 80,165,210,217,103,227, 2,176, 41,120, 82, 75, 60, 2, -234,110,118,232,105,124,174,104, 14,175,247, 68, 63,180,206,110,112,207,186,241, 62, 77,235,190, 31,103,198, 38, 28, 6,153,219, - 27, 70,222,160, 65,131,103, 28, 83,143,140, 61, 3, 48, 13, 96,239, 11,246,164,175,255,217,183,236,255,246,239, 58,112,209,203, -119,116,181, 65,144,220, 19, 93,114, 49, 25,126,176, 0,200,224, 71,202,250,226,192,251,143,124,230,241,251,126,251,208, 67, 31, -254,219, 47, 44,252, 37,128,199,216,114,208,127,182, 50,244, 6, 13, 26, 52,104,208,224,217,198,212,227,125, 18, 0,109, 0, 83, - 0,246,238,153, 82, 47,121,211,181,179, 47,127,235,139, 47,122,217,213,207,155, 58,191,157,170,118,166, 69, 34,149,146,222, 33, - 12,157, 45,122,133,239, 61,124,116,225,216, 7, 62,251,232, 61,135,238, 62,117,215, 3,199,139,195, 0, 30, 7, 48, 15,242,161, -111, 91, 78,122,131, 6, 13, 26, 52,104,208, 48,245,213,239, 37, 1,164, 32,147,124, 11, 20, 81,191, 3,192,158, 78, 42,118,182, - 19, 57,149,105,153, 20,206,219,197, 34, 44, 44, 12,252, 9, 0, 71, 65, 38,246,121,144,223,124, 9,107, 7,234, 53,104,208,160, - 65,131, 6, 13, 83, 63,135,204,221,176,246, 30, 95, 26,163,238,235, 0,107,224, 37,191, 10,102,228,182, 97,230, 13, 26, 52,104, -208,160,193, 51,135,169, 79,222, 63, 50,249,248,179,206,212, 67,237,103,195,200, 27, 52,104,208,160, 65,131,103, 48, 83, 95,237, -121, 26, 38,222,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, - 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6, 13, 26, - 52,104,208,160, 65,131, 6, 13, 26, 52,104,208,160, 65,131, 6,219, 4,129, 61,175,217,250, 34, 47, 90, 3, 66, 2,240, 64,105, - 55,247,253, 68, 87,127, 59, 13, 40, 11, 56, 15, 40, 9,244, 6,244,153, 86, 14, 72, 9,168, 4,176, 5,127,216, 3,189, 18, 40, - 7,213,181, 52, 95,107,185,238,241,189,193,248,125, 1,186, 71,150,210, 24,116, 2, 20, 3,160, 40,169, 64,173, 50, 84,212,214, - 6, 64, 11, 42, 96, 11,126,207, 76, 92,111, 43,231, 51,201,232,153, 92, 65,227, 21, 18,232, 47, 0,222, 80,155, 90, 33,168,170, -254,206, 29, 84,131,207,228,128, 49, 72, 18, 9, 59,244,240,197,144,230,212, 91,160, 44,129, 84, 1, 75, 3,154,171, 76, 3,131, -130,202,253,216, 1, 77,148, 0,215,241,243, 52, 7,174,160,255,235, 4,232,247,233,111,239,105,254, 61,207,173,231, 53,175,255, -190,217, 61,240, 92,129,201,128, 96,129,153,157, 64,111,137,246,108,175, 15,180,218,192,226, 28,208,153, 6,138, 30,205,107,111, - 9,176,150, 94, 43,237,131, 73,212, 63,107, 52,144,231, 64,210,162, 53,141,173,140,125, 0, 22,230,105,221,215,187, 63,205, 50, -247,146,146,206, 96, 44, 17,117,182,235,218,158,198,107,191,241,117,176,222,227,227,247,223,143,235,175,123, 57,254,230, 31, 62, - 6, 60,246,200,250,232, 2, 31, 61,132,101,230, 44,158, 25, 7, 58, 27, 40, 1,169,249, 12,243,103,138,193,242,115,189,218, 60, -107, 13, 8, 77,103,221,215,104, 74, 81,123, 6,163,199,207, 5,106,159,117,126,229,245,173,237,153,214,129,203,209, 59,252, 0, -221, 71, 27, 96,215, 14, 32,215, 64,223, 2,143, 62, 85,209,183,205,210, 85,111, 0,215,167,253, 56,183, 64,255,155,234,210,222, - 20,154,126,159, 59, 69,159, 47, 65,115, 39, 4,125,103,106, 22,152, 63, 69, 99,204,114, 96,137,247,181, 45,137, 86,187, 65,228, - 46,213, 62,153,234, 2,195, 33,128,100,252,125, 41,129, 97, 1,100, 93, 32, 12,137,174,197,249,137, 52,200,110, 19,253,168,207, - 71,233,137,214,217,115, 68,171, 76, 2, 76, 79, 3, 89, 66,180,183,215, 7,122,139,244,127, 9,162,245, 58, 3,242, 4, 8,142, -190, 51,112, 21, 95,141,223,243, 30, 24, 12, 1,163,128,114, 8,244, 6, 80,232, 92,244, 43, 91,250,176,173, 12, 72, 83, 32,111, -209,164, 41,193,197, 94, 55,208, 76, 77, 74, 98,172,163,191,249,187, 82,208,228,123, 87, 93, 79, 41,250,124,176,180, 11, 74, 15, - 12,123,213,119,149, 4,181,119,229,131,165, 38,238, 85,127, 54,239,233,149, 26, 98,222, 74, 3,174, 4,116, 74, 19, 8, 0, 90, - 86,125,225, 44, 19,139, 86, 27, 48, 18,232, 15, 55, 54,206,245,194, 51, 69,208,160, 69, 85,154,132,152,164, 69, 4, 36, 53,192, -236, 20,176,107, 6,112, 2, 83,179, 83, 48,105,138, 78,150,224,130,238, 14,120,239, 48, 53,213, 69,174, 13,160, 36, 74, 1,122, - 86, 33,105,141,250, 5,207, 93,159,152, 75,176,192, 48,208,198, 42, 74,154, 56,157,144, 64, 16, 60, 80, 6, 90,131,200, 52, 4, - 63,151,102, 6, 34, 64,189,115, 3,175,153, 16,213,154, 42,201, 4,207,111,236,240,249,103, 97, 51,190, 52, 1,138, 33, 48,187, - 19,152,159, 7,218,109, 34,198,105, 14, 44,205, 19, 67,159,155,163,255,207, 47, 2,153, 33,162,178,220, 88,151, 99, 52,241,172, -196,249, 84, 9, 49,245, 60,161,207, 7,150,215,149,166,125,235, 2, 19,214,117,158, 65, 81, 59, 35, 0, 93, 79, 73,250,185,209, - 51, 61,137,172,139, 29, 47,121, 62,190,233,107, 95,133,139,247, 93,128,151, 92,122, 25,222,255,145, 59,129,175, 60,180,194, 30, -224,113, 56,193,231, 52, 16,109,241,158,247,151, 27,239,215,232, 89,184, 84,138,207,189, 4, 96,121,174, 34, 3, 14,203,143, 65, -202,229,207, 96,100, 2, 44,171,142,209, 20,207,215, 29,209, 28, 81,123, 14, 81,171,149, 25,136,158,173, 50,117, 87,188,225,149, -216, 55,179, 19, 95,125,224, 33,192, 11,192, 50,179, 49, 9,112,252, 36, 80, 22, 27,159,251, 52,161,123, 59, 79,175, 78,155,246, - 66,105,233,119, 47,233,186, 73,198,140, 98, 30, 80, 45, 26,160,183, 68, 19, 58,109, 98,220,253, 62, 48, 51, 75,243, 59, 24, 0, - 42,163, 57, 24, 20, 52,199,176,128,110,211,251,129, 5,127,107,137,150, 8, 79,239, 39, 45,154, 19,239, 42,250, 93,148,145,176, -210,251,170, 70,147,207,246, 28, 74,162,125,240,174,198, 27, 52,205,111,164,175,194,159, 27, 58,211,202,136,191, 24, 3,148,142, -133, 23, 71,124,211,243, 79,193,130,148,117,244, 25,235,129, 86, 90,209,135, 68,211,124, 13,150,104,141, 22,151, 0,153, 1, 58, -217, 98,166,110, 52, 73,110, 83, 93, 98, 52, 89,139, 78,163, 47, 55, 38,213,155,154,150,113,198,225, 18,172, 9,242, 97,142, 31, - 19,146, 25, 78, 1, 56, 55,126, 64, 19,102,196,166, 38,221, 43,150,206,108,121,230, 61, 66,124, 6, 69,247, 25, 70,173,212, 19, - 97, 84,124,128,165, 4, 82,131,233,171, 46,198,174,189,187,177,112,114,142, 62,123, 54,139,109, 50,218, 96,126, 98,190,152, 38, -193, 75, 34,208,146,159, 79, 25, 32,213, 64, 59,199,174,169, 41,116, 59, 57,164, 48, 72,117,130,221,121, 7,222, 58, 76,229, 57, - 4, 72,152,203,146, 20, 62, 4, 20,142, 55,135, 0,109,144,193,128, 54, 84, 96,105, 80, 5,210, 10, 18, 69, 19, 82, 88, 34,144, -195, 33, 63, 27,207, 63,226, 51,241,188, 26, 65,115, 36,248, 64, 11, 65,147,157,112,207, 30, 9, 18,178,228, 58,153, 66,212,140, - 20,191,140, 28, 95,223, 85,133, 0,205, 19, 23,173, 6,231,136,145,107, 69,251, 55, 8,160,219, 2,134,125, 98,220, 11,139, 36, - 0,246, 23,128, 86,151, 24,123,183, 11,204, 47,208,153, 89, 92, 32,162, 90, 22, 43, 11,186, 82, 84, 47, 8, 98,108, 82,240, 61, - 19, 58,119, 73, 77, 8, 82,154, 9,153,160,121,119,229,218,243,183, 18, 99,139,140,125, 76,216, 92, 31,212, 75,175,193,171, 95, -246, 82,156,127,233, 37,208,207,219,137,185, 2,248,142, 87,190, 12, 51, 59,102, 49,232, 15, 48, 59,211,197, 37,187,207,195,103, - 62,243,185, 51,247,126,212,108, 60, 0, 25, 42, 33, 67,177, 42, 39, 88,178,156,124, 30, 33,232,156, 71, 11,159,103,109, 76, 50, - 51, 89, 85, 75,183,227,170,120,156, 15, 85, 19,234, 77,100,232,188,215,189,171,180,244,184,255,227,125,227, 89, 17,188, 47, 86, -153,187, 19, 65,224,171, 95,250, 74, 37, 80, 35, 16,253,156,155, 7,250,131,205, 9,196, 66,208,120,179, 22, 32, 12,208, 63, 13, -136,132,158,211, 6, 32, 55, 76,163, 53,224, 11, 58,115, 66,145,130,212,105, 3,193, 0,253, 69, 64,166, 52,238, 97, 65, 22,132, -194, 3,153, 34, 70,159,104,182,208, 1,240, 3,162, 25, 70, 19,225,113,172, 93, 2, 52,126,103,129,162, 24,127, 95, 37,204,244, - 37,189, 63, 44, 42,165,101,179, 86, 33,147, 1,157, 14, 41,153,138,133, 26, 95, 83, 18, 35,255, 48,252,203,122,206,198,217,162, -228,189,165, 21,208, 50, 52,247,115,139,180, 62,145,127,132, 0, 36,105,197,144,132, 36, 75,155, 43,217,154,225, 1, 59, 4,172, - 2,130,170, 4,131, 16,160,183,216,158, 65,147, 24, 15,134, 7, 61,116,232,210,100,174,151,225, 13, 61,153,146,213, 4, 97, 49, - 41, 49,190,222, 18, 96, 23, 43, 83,165, 94,197,100, 25,255, 63, 50,179,240, 97,140,230,150,149,190,211, 31, 2,166,164, 49, 56, - 95,227, 11, 44,185, 74, 77, 7, 63, 8,132, 16,112,108,105, 0,244,203,179,159, 63, 45,232,103,185,220, 56,226,125,217, 12,158, -101,180, 49,243, 12, 59,186, 57,118,228, 45, 12,221, 16,137,202, 32,132,130, 11, 64,102, 52,156, 4,114,149, 96,105,232, 97,132, -198,206,118, 27, 30, 14,189,185, 5, 58, 88, 96,169, 48, 97,105,189,112,244, 28, 33, 84,204, 48, 75,129,165, 97, 69,192, 38,101, -174,232, 34, 1,152,241,250, 74,147, 49, 44, 17,103,220,183, 39,240, 26,219,117, 16, 36,157,215, 23, 13, 8, 9,216,231,177,242, -119,172, 29,215,108,109,237,255,219,141,200, 7,140, 38,162,215, 27, 18,227, 94, 90,168,126,182,235,140,188, 79,103,100,105, 1, -104,231,116,112, 53,239, 45,187,140,182, 88,103,182, 33, 18, 64, 79, 68,184, 45,201,173, 18,173, 37,245,253, 47, 5,237,219, 44, - 95,223, 57,156,156,195,213,204,254,107,201, 7, 47,185, 18, 95,187,111, 47,174,250,154,125,208,198, 64, 10,133,223, 93,248, 71, -180, 90,109,244,123,125,120, 15, 44, 44, 14,177,184,184, 0,180,103,128,211, 79,158,121,145,200,152, 81,147,209,156,175,230,123, - 37, 39,162,243, 36, 16,148,182,178,210,149,126,229,207,215,199, 85,223, 75, 35,147,176,174,148,131, 58, 61,113,252,249, 96, 1, -175,171,117, 26,185,168,252,184,213, 99, 53, 28,121,164,114, 97,214,233,206, 70,247,175,214,192,142, 61,192,220,177,138, 65, 58, -144,146,165, 88,200,142, 90,184,101,197, 8, 69,181,238,129,191, 19, 21, 31, 33,129, 84, 0,133, 1,100, 73,230, 96,128,172,122, -138,207,169,244, 36, 72,150, 53, 58, 16,215,173,176,149, 18, 81,176,229,161,254,126,152,120, 63, 77,170,239,109,202, 5,204,252, -103,166,195, 22,137, 41,114, 55,198,131,101,249, 30,113, 47,157,141, 66,182, 25,198, 94, 12,137,142, 11,144,176,191,180, 64,252, - 45,142,185,100, 26, 17, 93,174,174, 32, 1,107,169, 79,251,201,150, 68, 3,134, 5,241, 93,222,151, 91,167,169,107, 77,230,129, -118,206, 27, 56, 84, 62,184,192,155, 82,201,117, 74, 92,158,181, 80, 81, 17, 74,161,201, 7,209,105,209,239,118, 88, 73, 85,107, - 73,174,241, 96, 73, 65, 23, 11,108,118, 91,237,144,120, 71,207,106, 45,253, 46, 88, 43,138, 38, 35,207,215, 45, 74, 12,143,158, -130, 59,118,146,124,116,103,101,233,144, 44,233,218,149,205,155,237, 46,155, 1, 19,250,188, 80,232,116, 50,236,105,229, 8, 65, - 32,211, 6, 65, 8, 40, 8,116,187,109, 20, 69,137, 92, 75, 88,235, 96,164, 70,225, 75, 88, 31,224,124,192,208, 89,146,136,123, - 5,141,175, 28, 18,179,141, 82,171,103,198,238, 1, 12, 29, 32,108,181,150,214,146,164,169, 36, 19, 75, 95,249, 15,203,104,170, - 21,100, 85,128,228,107, 50, 69, 43,216, 60,191,218,218,141, 76,157,178,230,152,148, 36, 56, 24,189,242, 62,138,102,210, 51,172, - 28,231,128,161,167,124, 64, 61,107,145,214, 3,121, 70, 26, 87,194,254,208, 84, 1, 69, 77,115,239,228,180,111,146,148,215,193, -144,182, 82,186, 51,173, 87, 62, 48,115,246,164,237, 40, 65,231, 43, 18, 92, 35, 73,106,183,174,102, 45, 96,247, 72,159,199, 63, -236,173, 95,235,153, 20, 34, 54,193,208,209,202,112,222,197,123,112,253,181, 47,133, 84, 18, 40, 61,172,183,184,176,211,193,253, -143, 63,134,233,172, 13,231, 28,250, 75, 61,220,253,224,151,113,242,209,199,136, 67, 78,238,139,145,182, 43,170,222,142,163, 88, - 14, 63,238,243,142, 46, 9,107,137, 70,200,168,197,176,150,166, 4, 9, 79,235,177, 86, 76,154,127,101, 77,217, 40,121, 93, 74, - 95,249, 61, 71,123,149,233,159,175, 53,152,148,172,109,173, 71,211,246,172,249, 59, 55,238,110, 92,139, 6,207,204, 18,109,112, - 14,216,247, 60, 96,182, 5, 28, 63, 77,174, 29, 37,137, 49,200, 26,141,147,129,253,177,108, 5, 17,146,155, 91, 74, 87,209,197, - 0, 0, 32, 0, 73, 68, 65, 84, 91, 64,164, 76,135, 44,157, 99, 33, 88,160,103, 97, 74,176, 98,148,105, 32,176, 63,221, 59,154, -223, 44, 39, 70, 21, 93, 36,142, 77,198,113,191,134, 64, 52,192,242,121,174,191,239,253, 72, 97, 66, 89,174,233,174, 88,214, 85, - 3, 73, 99, 73,216, 21, 21, 45, 36,139,189,113, 75,144, 96,186, 20,194,185,119,241,149, 76, 67, 3,211,222,162, 36, 6, 45, 37, -173,137, 2,209,144, 52,231,253,164,200,162, 42, 68,245,188, 49,158, 42,225, 88, 51,200, 45,212,212,173, 37, 77, 53, 41,136,185, -199,255, 73,150, 6, 53, 7,119,181,176,190, 96,157,178, 32,115,162,103,102, 23,253,231, 0,153,155,149,220,216,243, 45, 43,133, -105,140,205,192,106,196,202, 90, 18, 38, 34,145,140,140,119,181,192,166,141,162, 55, 24,215, 16,150,115, 75, 56, 75,139,108, 12, -187, 9, 36,178,212,160,231, 45, 90, 82, 35,176, 58,210,110,231, 80, 2,104,165, 6, 67,235,160,181,198,192,150,104,235, 12,115, - 69, 31, 74,177, 25, 63,106,124,182,168, 44, 23,253,146,214, 48,176,198, 62, 12,204,208,253,153,166,225,146, 41,171,172,153, 42, - 13, 31,170,210,159, 25,195, 80,128, 2, 13, 97,104, 44,171,238,129, 72, 68,121,190,181, 1,116,151,168,121,137,229,131,133, 38, - 25, 58, 91, 20,105, 78,129,181,205, 3,103, 33,212,250,154,181, 31, 0, 18, 67,218, 76,198, 65, 44,194,144,116,173, 13,249,194, - 90, 6,152,103,159,122, 57,164, 57,239,245,105,223,235, 9, 70, 53, 50, 33, 79,104,161,163,128, 70, 11, 68,119,121,167, 13, 12, -248,187,169,168,108,196,253,254,198,181,158,209, 51,212,230,114,131,152,210, 64, 49, 24,192, 7,192,200, 4,195, 65, 31, 90, 73, - 28,190,235,203, 16, 65,160,103, 45,180, 82,120,224,190, 71, 72,123,145,171,156,109,137, 51, 25,108, 60,219, 90,147,127,119, 4, - 14,132,115,254, 76,237,125, 61,150,155,229,222,183,182, 90, 7, 35,171,253, 20,233, 81,253, 94,206, 87,110, 65, 37,207,124,142, -173,222,127,251,158,135, 23, 92,121, 41,250,118,128,135, 62,241, 89,224,241,199, 89,144, 40,128,192,227,205,178,106, 14,163, 11, - 82,241, 89,106,101,180, 63, 18,205,214,194, 1,187, 18, 88,115, 22,236, 62,163,224, 30,214,204, 19,118,201,241,225, 46, 11, 64, -118, 56,182, 74, 0,105, 27, 56,122,188,178, 52, 90, 0,130,125,240,138, 15,203,136, 31, 88,114, 9,196, 56, 40, 36,213, 26, 70, -235,213,228, 17, 54,186,218, 20,161,224,247,116,165, 28, 14, 88, 27, 78, 21,157, 69,233, 55, 47,160,110,194,240, 10, 68,107, 15, -206,124,118,128,207,100, 89,173,143,201,128,225,128, 20,132, 97, 65,214, 12, 45,136, 38,179,177, 18,185, 33, 75,114, 12,236, 75, - 59, 52,239,173,108, 27, 2,229, 70,129, 41,178,242, 61, 7, 79, 27,194,241,131, 75, 54,189,174, 71,244,138, 82,148,247, 85, 48, -138,102,230, 55,100,191,143, 97, 13, 92, 49, 99, 89,175,251, 84,235, 51,163,225,253, 26, 95,150,158, 36,167,250,207,237, 56,167, - 43, 73,140, 89,194, 17,145, 45, 54,141, 11,200,156,152,119,106, 20, 0,129,194, 23,232,152, 12, 50, 0,105,150, 34, 75,114,136, - 0, 72, 41, 49,180, 14, 18, 2, 65, 6, 72,225,177, 48,191, 68,146,112,105,129,254, 82,229,187, 73, 21,109, 44, 40, 58,216, 90, -179, 84, 30, 38,226, 21,216,159, 43, 88,155,143, 18,111,124, 9,144,214,168,120, 95, 68,134, 94,128,136,247,106,218,146,143, 26, - 0, 7, 57, 6, 73, 17,182,237, 22, 73,223, 74, 2,189, 30, 61, 91,183, 11,236,222,197,153, 10,110,124, 13,235,107,236,183,241, - 0, 75, 89, 89,150, 0, 10,232, 18, 28,116, 89, 14,137,145, 7,102,232,195, 33,141, 97, 56, 4, 90, 45,142, 56,102,243, 90,150, - 80, 20,108,180, 56, 24, 38,160,137,170, 2,212,140,162,117, 80, 81, 19,172,197,130,104,205, 62,182,232, 35, 68, 21, 92, 51,236, -175, 79, 67, 93,201,173,128, 13,134, 38,180, 50, 96,215, 30, 20, 74, 96, 71, 42, 49,219,157, 70,175,223,199,112, 56,196, 35, 39, -158,192, 87,189, 2,144,225,248, 98,129,199, 22, 22, 17,220, 2,176, 56,207, 22, 9,185,178,182, 94,223, 99,117, 31,169,209, 36, -240,107, 65, 86, 38,189,134,185,123,179,154,153, 16,149,229,174,100,171,100, 12, 68, 4,107,159, 49, 6,194,251,241,159,194,173, - 62,135,209, 7,190,209,224, 80,182, 40,236,190,232,124, 60,126,122, 14,229,227,199,198,227,139,226, 53, 11,214, 4, 93,180, 90, - 70,171,130,169, 4,112, 41,232, 25,139,130,246,111, 12,246,147,130,104,133,103, 6, 26,216,109,167, 2,251,231, 29,199, 33,149, - 64,154,209, 61, 74, 14,128, 83,134,232,129,209,116,246,133, 96,166,165,232, 59,153,193, 40,235, 70, 9,122, 30, 25, 5, 83, 67, -180, 57, 97, 6, 30,199,164, 65, 1,117, 41,251,255,163, 79,124,204, 69, 5, 14,238, 27,112,180,184, 59,119, 26,185,172,187, 2, -153,183,248,101, 92,133,214,210,217,215,154, 63,227,121,252,188,215,250,253,138,255, 69,225,220, 59,162, 21,146,227,159,134, 44, - 12,155,214, 22,251,212,173, 37,127,183, 97, 34, 54, 23, 72, 75, 25, 29, 6, 11, 12, 2, 75,253,122,121,173, 73,235, 74, 18,206, - 19,250,136, 97,166,141, 2,152, 31,208,134,105,165,181,168,245, 80,105, 17,253,130, 36,154,224,151,247, 75,174, 37, 89,173,246, -121,187,194,207,115, 5, 15, 34, 30,253, 62,208,109,211,191, 74, 15,159, 1,131,210, 67, 25,137,212,104, 12,220, 0,185,153,169, -132,217, 76,163,191,216, 67, 22, 3, 47,250, 22,214, 7,154,183, 1,175, 89,180, 20,104, 13,244, 44, 75,125,156, 98,177, 82,234, - 79,157, 48, 46,231, 67,140, 38, 80, 37,233,160, 75, 77,218,100,212,250,215, 66, 97, 89,171,103,159,125, 61, 69, 40,254, 34, 52, -208,237,208,181, 91, 25,153,176,173, 29,215,210, 55,169, 97,110, 92,163,173, 91,144, 60, 73, 48,145,161, 23,236,124,237, 15,129, - 60, 37,201, 59, 79, 41, 29,168,157,147,175,207,104,122, 63, 30,246,186,102, 94,122,118,207,248,113,173,189,230,213,128, 4,125, -127,116,222, 98, 90,105, 56, 55,155,181,126,118,101,130,233,107, 46,195,193, 43,246, 99,110,176,132,196,164,120,228,241, 71, 49, - 40, 29, 74,239, 48,191, 20,240,245,151, 92,134,157, 83,211, 72,211, 20,206, 14,241,240,241,199,240,201,197, 62,249, 22, 87,242, -111,174,166, 89, 41, 89, 9,142, 81,120, 92, 78,131,158, 36,170, 27,213,190, 70,230,247,154,149,106,228, 6,169, 89,139,226,255, -198,126,174,131,200,104,156,233,203, 95, 15,230, 23,240,249, 79, 28, 30, 79,233, 93,110,204,206, 87,154,178,226,179, 37, 11,182, -126,121,178, 18, 9, 73, 90, 99,244,141,215,253,225,206, 3, 34, 39,191,186, 47, 57,162,190, 95, 99,218,158,211,109, 65,138, 92, - 89,140, 91,179,226, 62,137,231,101, 56,160,207, 37, 28,135, 98,107,251, 85, 72,122, 62, 88,142, 51,146, 53,134,206, 86, 25, 27, -170,207,198,185, 23, 53,247,137,139,238, 87, 22,114,207, 5,162,101, 65,215,246,173,214,213,218,142, 89,193,106,207, 28, 5,115, -233, 1, 47,145,188,232, 82, 92,123,241,101,248,167, 79,126, 10, 56,122,146,206,115,156,191,222,128,180,244, 98, 80,155,211,114, - 27, 82,218, 60, 75,127,253, 1,105, 42, 34, 0,150,165, 88, 23,216, 68, 51, 65,100, 12,107, 36,210, 0, 45,246,129,228, 44,133, -228,156,171,151,179, 79, 40, 99,115,132,214,100,222, 20,138,222, 51, 28,138,106, 20,249, 41,140, 33,237, 78,196,136,225,154,228, -191, 90, 0,208,102,165,184,115,145,118,165, 36, 77, 91,150,179, 79,209, 67,182, 51,132, 32,209, 74, 21,180,148, 80, 80,200, 84, - 10,201,129, 34, 89,146, 99, 80,150, 48,198, 64, 72, 1, 91,150, 72,147, 20, 71,142, 31, 39,237,188,215, 35, 51,187,117,227,254, -195,232,119, 93, 77,178,141,140,187, 30,225, 43,196,184,176,229,125,165,157,196,148,184, 98,184,126,191,226, 72,152, 9, 64,193, -154,144,240, 64,191,199,254, 39,254, 92, 98,104,147,187, 1, 89,130, 38, 92,241,180,221,182,112,125, 76, 50,158, 30, 19, 5,155, -122,154, 95, 80, 85, 10,149, 49, 52,110,149, 82, 60,136, 76,232,103, 43, 35, 77, 93,165, 36,236, 56, 87, 17,128, 24,157, 27,153, -118,212,202, 3, 11,119, 8,227, 65,113,129,231,167,180,100, 73,114,172, 37, 57, 54, 65,151,229,246,237,205, 52, 33,107,140, 96, -141,238,210,139,241,154,253,251,208,233,182, 48,219,157, 69,112, 30, 15, 28, 63,137, 79,125,238, 49,156, 14, 22,179,173, 14,118, -118,102,113,222,238,243,176,115,231, 44, 90,211, 83,104, 67,195,230, 10,199,164,165, 0,194,141, 70, 34, 7, 94,107,167,136,120, - 75,201,209,242, 28,139, 16,194,230, 77,175, 87, 93,138, 87,188,250,149,120,252,203, 95, 97,203, 17,223, 43,212,180,116,137, 42, -214, 33,132,181,125,245, 43, 9,238, 82, 87,214,192,141, 98, 88,172,108,145,138,231, 91,202,202, 37, 19, 2,113, 58,231,201, 26, - 20,221,114,222,113,160, 91, 12,126, 85,100,253,136,103,200,179,175, 95, 71, 75,105, 66,239, 69, 11,192, 40,138,155,173, 68, 25, -167,202, 37,170,218,139, 49,230,202,123, 32,105,115, 44, 9, 31, 86,193,177, 10, 66, 87,227,137,181, 1, 50, 14,248, 27, 22,108, -253,144,149, 37, 46, 94, 87,240,218, 72, 89,179, 90,249,181,231,127, 43,249,160,175,107,235, 76,136,150,219,115,245,117, 25,101, - 35, 13, 1,239,144, 95,188, 23, 74,120,156,252,194,131, 85,182, 82, 60,235, 49, 35, 75, 73, 10, 34,239,245, 0, 41,183, 73,127, -169, 75, 34,214, 2,105, 12,146, 67,165,161,197,232, 68,112,128, 79, 98,104, 80, 90,147,175, 49, 58,125,234,135,177,157,210, 6, - 44,107, 3, 75,217,228, 34, 2,144, 43,192,114,238,159, 99,194,103,153, 72,150, 49, 10,118,139, 35, 28,235, 38,148,237,198,176, -224, 40,244, 69, 0, 29,192, 8,120, 59,132, 85, 2, 11, 67, 1,151, 2,169, 73, 49,176, 5,218,121, 27,153, 49,176,174,207,177, - 85, 30, 90, 8,132, 52,193,241,185,121,168, 68,193,249, 64,115, 50, 55, 87,153,122, 67, 77,197,181, 27, 12,168,170, 23, 38,169, - 23,141,152,244,101,215, 53,144,181,180,145, 40, 92,148,236, 35, 29, 44,156,185,215,230, 23,232, 85, 87,167,108, 93, 61,183,103, -191,198,209, 55, 42,216, 71, 89, 22,227,207, 30,247,150,224, 98, 51, 66, 2, 97,192, 41,101,236, 75,207, 83, 50,147,165,172,169, -171,148, 35, 94,185,232, 71, 50, 17,185, 63,233,163,143,130,157,243,227,154,123, 56, 71, 62,194,245,104,232,140, 61,179, 93,236, -236,182, 1, 72, 12,122,125, 8,157,226,138, 93, 59,240,249, 47, 62,137,249,185, 30,220,244, 78,204, 78,119,209,233,228, 40, 16, -208, 73, 18,228, 23, 93,136, 52,203,161, 80,226,190,167, 78,110, 60, 26,217, 70,127,112, 89, 17,241,122,116,181,192,250,162,207, -151, 67,223,226,177,147,199,198, 93, 58, 30,103,186,240,228, 50, 86,129,245,222, 55, 42,241,147, 62,228,205,248,114,237,106, 26, - 36, 42,223,178,146,149,191, 28,168, 50, 42,100,140,137,225,224,221,200,220,125, 44,188,227, 41, 47,186,228,232,249,122, 16,109, -116,189,196,115, 27,153,176,170, 69,195, 39,181, 40,239, 52, 97, 87,138,102,193,150,231, 75,129, 76,240,162, 46,160,179,230, 31, -179,153,172, 37, 97, 64,162,218, 47, 49,248,110, 50,142,226, 92,159, 9, 76, 88, 92,244,132,159,125, 57, 30, 98,146, 42,198,192, -104, 44,222,125, 63, 30,168,143,181,174, 4, 71, 1,101, 88, 80,102,209,182,248,212, 87,130,115,149, 47, 38, 6,183, 36,138,136, - 91,154,176, 54,158,210,207, 78, 70, 82, 93,146, 80, 68,112,167, 77,154,122,150,144, 86,158,166, 28,136, 39, 41,114,216,129, 52, -243, 68,115,254,163, 35,255, 76, 2,146,250, 18,195, 26, 61,136,241, 27, 93, 85, 71, 91,205,180,183, 94,205,219,251, 42, 29,218, -215, 14,213,182,237, 33,174,118, 17,163, 84, 11,139,144,103,108,153, 87, 72,165, 66, 98, 12,116,106, 80, 12, 75, 20,195, 1, 68, -224,200, 79, 9, 44, 46, 45, 65, 74, 9,143,128,254,226, 2, 11, 64,156,131, 30, 56, 90, 84,200,113,115,250,122, 24,250,114,154, -201, 74, 69, 84,162,105,172,158,123,189,165,146,115,221, 1,124, 22,215,141,218,120,244,151,135, 64,204, 57,203,106,126, 83,206, -179,245,158,133, 34, 22, 34,149, 34,138,166,162,166,193,133,104,178,148,211, 37, 13,229, 3,231, 45,250, 59, 73,201,135, 89,183, -126,104, 78, 1, 84,130, 52,160, 80,211,204,117,204, 44,169,105,134,246,105,170,220, 23,235, 74, 4, 54,183, 66, 98,169, 44, 48, - 61,211,197, 84,154,194,100, 41,138,126, 15,255,124,236, 73,156, 56, 49, 15,184, 18, 75, 18,184,124,199, 94,152, 36, 67,107,170, -133,150,209, 16, 70,192, 11,131, 86,218,133,106, 39,120,234,248,137,141, 51,246, 80, 99,230,113, 79,202,122,142,120, 88,249,172, -215, 35,231, 39,247,227,233, 57, 44,124,229,171,172,157,170,106, 91, 69,159,180,168, 49,143,229, 74,108,136,117,156, 13, 95,123, -150,141,158,135,250, 24, 48, 49,134,169,221, 85, 65,174,120,109,231,200, 87, 29,159, 57, 97,230, 46,153,134,198, 26, 32,138, 9, -155, 81,100, 1,203,100, 37, 80,186, 88, 72,166, 22,189, 30,239,233, 10,218,251,157, 46,237,113, 25,200,130,162,216,106,226, 60, -199,219,200, 90, 96, 28, 75, 69, 90, 18, 51, 15,181,245, 84,236,231, 87,158,252,243, 96, 33,210, 22, 85,150,192,164, 53, 36,106, -235,126,157,180,105,171, 53,117, 41, 43,139, 75,100,220, 30,203,199,138,140,206, 18, 91,187, 12, 71,236,151, 37,205, 65, 89,146, - 59, 68, 49,115,137,149, 9,227,184,173, 37, 30,155,118,206, 17, 83,143,155, 78,178,223, 67, 73, 98,206,221,156, 24,238, 84,135, - 24,181, 49, 80, 51, 83, 8, 82, 35,105,231,208,105,138, 60, 53,208,218,160,155,182,144,167, 41,188,210,104, 39, 57, 84,150,192, -123, 9,145, 39, 8, 38,173, 22, 50,230, 54, 6, 80,192,151,102, 63, 81,158,112, 0,142, 34, 98,109,125,149, 86,101,237,120,144, -156,201,200,156,148,242,225, 88,206, 12,168,107,135, 16,190,242,219, 70, 62,178, 93,140, 61, 10, 17, 14, 52, 22,235,128,225, 0, -161,221, 6,124,128,215, 64,110, 52, 92,225,144,153, 4, 74, 25, 88, 81,194, 59,135, 65,105,225,157, 71,225, 28,158, 56,117,154, -221, 36,108, 10, 86,160,181,136,135,204,121,170, 78,182,158,192,146, 72, 40, 70,102,164, 85, 76,135,145, 97,197,234,100,145,216, - 10,241,204,170, 26,167, 57, 63, 55,237, 96, 20,188, 34, 36, 9,140,165, 37, 33,211,113,174,104, 12,228,209, 76,120, 50,195, 65, -115,108, 41, 50,138,136,143,228, 50,191, 50,173,254, 14, 37,125,182,232, 85,135, 63, 30,110,128,138,126, 4, 22,226, 66, 32,226, - 56,202,215,230,128, 48,241, 52,165,228,140, 24,150,160,241, 75, 84,197, 67,164,196, 87, 37,112,225,142, 14,230, 22,231,113,124, -241, 20, 62,251,232, 81,224,216, 34, 48, 40, 81,218, 18,143,244,150,176,167,221,198,212, 84, 23,202, 72,244, 22, 29,164, 1,118, - 77,207, 32, 19, 45, 12, 18,133,147, 39, 87, 96,236,145, 1,215,199, 60,242, 77,178,107, 34,254,172, 7,214, 45, 87,177, 47, 22, -154,138,230,231,181, 82,111, 99,208, 88,168,107,237,126,252,250,171, 69,240,175,154, 74,235, 55,185, 87,107, 26, 97,140,101,137, -140,254,188, 61,180,215, 6, 75,227, 2, 64, 20,198,227, 94, 83,181,160,227,193,144,246,117, 97, 57,232,149, 43,174, 41,158, 83, -235, 72, 16,136,174,174, 24,180, 8, 84, 1,109, 49,157, 44, 97,166,109,251,204,240, 57, 61, 51,225,243,161,146, 90,234, 28, 11, - 16, 37,187,173,130,160,152,170,146,105,170, 54,236, 94, 77, 86,175, 56,183,234, 26,216,237,175, 69, 85,103,226,245,245, 89,203, -244, 31, 3,253,226,126,205,146, 42,200, 50,102, 41,197,191, 77,139,232, 73, 43,163,201,145,150,178,126,207,154,169,155,140,152, -179, 72, 43,226,183,156, 36, 47, 88, 59,207, 18, 96,166, 77,149,182, 50,174,246,147, 25,116,186, 29,228,173, 14,114, 99,176, 51, -107, 97, 42, 75,208,209, 6,157, 36,195, 76,146, 34,209, 6,221, 36,135, 16,192,174,164,141, 60, 49,112,240,152, 78,114,104,101, - 16,180,132,206, 18, 56,161, 72,147,213,236,207,148,236,103,151,236,227, 28,153,255, 85,149, 11,238,107, 26,157,166,234,108, 84, - 25,140, 75,163, 46,119,192, 71, 49, 47,190,182,112,181,107,216,237, 76, 95, 81, 76,200, 11, 10, 18,113, 14,232,247,225,124, 64, -222,201, 81, 6,139,174, 78, 33, 37,112,122,176,132, 84,165,152, 31,246,161, 4,105,232,167,250, 75,176,206,195, 45, 46,144,134, - 88,122, 46,183, 91,115,119,104,205,230,102, 93,229,247,110, 84, 81, 94, 73,171,243,126, 60, 37, 49,154,228,156,123,230, 48,116, -128,181,236,146,230, 58,106,206, 46, 70,168, 70, 77,198,208, 70,208, 44, 61,199,207, 12,122,148,122, 40,234, 46,132, 1,205,113, -209,103,237, 62,212,222,175,229, 68,143, 42, 42,178, 85, 35,136, 42, 71, 56, 75,168,138, 84, 98,232, 25,158,183, 7,152, 91,170, -245, 62,136,230,240,132,204,158,144,103,250,254,183, 67,208,204,116,205,204, 44, 1, 55, 64,120,226, 36,190,252,197, 35,120,232, - 75,143,224,241,135,143, 1, 39,231,200, 26, 81,246,129,211,115, 40,150, 22,240,144,243,152,209, 41,132, 76, 32,181, 66,158, 25, - 12,134, 5,138,210, 98, 74,165,184,127,176, 72,197, 54,234,193, 86, 53, 98, 45,164,164,151,247, 16, 35, 66, 30,234,106,116, 37, - 68, 46,199, 52, 71, 74,128,172,162,191, 29, 87,251, 90,105, 63,142,238, 17, 42, 97, 52,230,164, 79, 6,142, 46,251,253, 45,204, -154,169, 51, 12, 37, 43,237, 91,212,202,212,206,159,174, 24,122,125, 14,116, 45, 98,220,203,170,250, 94, 96,229,199, 57, 14,238, -146, 20, 35,101,244,184,245, 35,230,154,199,223,163,198, 62,138,223,224, 10,135, 78,208, 30, 44,152, 94,106, 95, 41, 63,138,149, -147, 80,144,165,214, 59, 18, 20,180,167,136,122,237,171, 2, 63,224,115,161, 76,229,215,183, 88, 61,134, 96,108, 29,248,156,217, -115, 32,252,142,197,111, 69, 43,181, 92,159, 53,205,232, 42, 54, 32, 86, 51,141,213,248,164, 98, 43, 96,168, 2,228, 98, 28, 69, -214, 1,236, 86, 4,202,237,216, 9, 76,119, 41,221, 40, 36, 36,225,141, 24, 36,251, 64, 4, 7,190,181,217,148,222,105,115, 4, -123, 11, 59,166,167,208, 54, 45,116, 76,130, 78,146, 99, 38, 75,161, 32,161,165,161, 84, 45,157,162,163, 83,104,109, 0, 8,236, -109,205,162, 95, 14,161,164,196,116,210,130,112, 64, 46, 53,118,152, 22, 44, 60,114,147,194, 9, 1,167, 98,105, 82, 84,126,161, - 36,154,149, 5, 73,122,193,115,128, 29,170, 3, 28, 43,129, 73,206,135,177, 97,101, 63,124, 93, 35,151, 53,230,190,221,146, 96, - 12,166,138,229, 6, 93, 73, 11,172, 12,250, 58, 65,158, 26,204, 23, 3,180,148,129, 86, 26,189,114, 0, 5,137, 94, 89,160,231, - 10, 44, 21, 67,244, 23, 22,105,124, 67, 75, 25, 10, 69, 96,169, 56,169, 2,208, 16,106,105, 44,203,104, 55, 70, 19, 97,208,106, -109, 77,123,100,218, 20,227,129, 43, 81,235,113,254,220, 4,176,172, 7, 89,194, 37, 43, 89,160, 41, 89, 27, 47,125,165, 45,107, - 54,123,167, 6,163,200,220,140, 45, 64,142,211,134,162,115, 83,166,156, 26, 8,210, 76,226, 26,198, 26,225, 10,227, 65,108,130, - 53,126, 17, 53,164,218, 30, 11, 92,200,135,215,235, 5,215, 93,133, 99, 71, 30, 27, 39,108, 74,146,245, 37,112,160,216,185, 48, -203,199,234,129, 34, 84, 65, 84, 49,101, 42,112,122, 31, 64,251, 52,174,243,176,128, 91, 42,241, 72,217,199, 46,157,161,213,202, -160,180,198, 82,111, 8, 95, 6,244,122, 61, 40, 25,112,162, 4,196, 96, 8,161, 0, 17, 2,164,146, 16, 33,140,106,208, 8,128, -152,122,252, 41, 37, 4,107,233,228,117, 11, 92, 90,194, 46, 47, 32,123, 89, 85,153, 68,168, 52,214,114, 29, 1,103,129,131,126, -203, 9,139,214,106,154,226, 86, 50, 21, 89,115,149,229, 25,144,228, 36,168, 7,199,251,112, 21, 55,162, 99, 87, 66, 81,210,254, - 81,156, 50, 26,216,106, 81, 63,247,169,161, 57,137,150,167, 1, 23,255,138,166,124,239,171,207,215, 83,173, 6,158,175, 63,172, -138,214, 40, 78,145, 21,204, 27,130, 37,174,237, 74,178, 76,105, 95,179,160,138, 42, 64, 46,240,254, 23, 92,156,204, 59,122,238, -213,148,129, 49,235, 33,206, 61,125,241,126, 92, 91, 95, 47,125,143,138, 69,228, 97, 81,216,178,101,149,206, 22,106,244, 42, 6, -133, 58,191, 5, 76,189,213, 33,205, 91,176,201,182,224,218,224, 58,214,234,230, 42,115,218,144,223,124,231, 12,144,166, 72, 59, - 45,156,223,238,192, 8,137,110,146, 34, 55, 41,140,148,104,233, 12,146, 37,200,110,210,230, 30, 38, 26,137,212, 80, 8, 24,122, -135,220,228, 16,193,195, 7,143,204,164,240,206,194,134,128,142, 74, 49,116, 5,164, 18,104,155, 20, 94,122, 40,149, 0,218, 32, -128, 55, 99, 96,139,193,192, 81, 64, 94, 97,163,184, 72,230,139,210,113, 78,101, 96, 45,189, 88, 99,211, 76,254,244,235,207,147, -223,138, 13, 86, 39, 30, 37,231, 63, 39, 25, 16, 2,250,174, 68,233,135, 8,222, 99,161, 28, 32,192, 97, 97, 80, 96, 97, 56, 36, - 63,186,141, 1,140, 49,135, 54,208,239, 41, 91, 86, 60, 7,124,197,138,122,117,233,243,140,226, 63,107,152,127, 71,121,186, 98, -156,153,215,115,143,183, 58, 66,125,179,126,116, 37, 40,146, 52,145, 92,222, 54,106,238,204,128, 99, 99,161,161,163,130, 50,129, -173, 28, 14,180,151, 2,184,172,227,160,202,227,183,150, 53,255, 58,225,231,235, 21, 19,190,255,232,195,143,213,184,130, 39, 95, -162,136,101,132,121,203, 42,224,216,163, 79,156,217,224, 67,178,214, 21, 3,136,206, 69,151,188,229, 42,160,197,255,201, 9, 70, - 24,159,209,147, 0,228,150, 22,241, 21,111,209,129, 66,162, 83,244,150,122, 8,176, 56, 49,127, 18, 11,189, 1, 78, 91,143,144, -119, 32,134, 22,162, 28, 64, 72, 49,122, 73, 41,136,105,243,245, 4,107,239,145,161,143,121, 9,150,211,210,163, 63, 57,174,111, -244,191, 23,182, 86, 55,127, 45,183,211, 42, 12,215,218,202, 29,229,183,161, 97, 72,156,211, 68, 83,161,151, 86, 74,123, 68,112, -115,160,181, 50, 30,132, 32, 51,174,240, 84,239,161,197, 85,228,138,126,213, 56,100,224, 88,177, 97, 11,100,108,210, 18,215,208, -232,138,201,196, 98, 64,162, 86,237, 80,123,162,255, 49,122,219,250,170, 96, 82,180, 10, 38,130,178,164, 60,151,243, 45, 81, 53, - 3, 27,197,165,112,238,186,103,179,189,183, 85,214,206,102,172,135,171,197, 80,172,228,234, 25,197, 46, 76, 92, 51, 77,206,204, -178,218,140, 91, 37,242, 77, 37,198,104,170,186,230, 50,132,175, 30,165,251, 68,183, 72, 93, 80, 21,213,222, 61,123,166,238,184, - 48,134, 11,192,226, 0, 40,123, 76,192,121,161,179,188, 98,230,211, 93, 36, 89,134,243,167,103,177, 43,109, 33, 55, 9,180, 86, -200, 84,130, 76, 39,200,149,193, 16, 14, 45,147,195, 57, 7, 37, 37, 82,147,142, 36,146,118,154, 51,251, 8,208, 82,195, 8,129, -194,123,164, 73, 11, 1, 30, 66, 0,221,172, 5, 3, 9, 31, 60,140,144, 16, 74, 82,133, 72,163, 16, 98, 1, 4, 1,210,118,162, -143, 29,156,214,225, 37,117,123, 26, 22, 85,112,223,118,164, 1,181, 58,188,112,114,107,180,168, 72, 44, 4, 53, 74, 40, 3,241, -155, 97,240, 40,217,135,238,124,192,124, 49, 68,111,200, 18,118,212,246, 69,189, 46, 53,167,229, 32, 22,248,240, 92, 40,168, 86, -132,166,206,156, 39,137,195, 90,218,186,247, 85,249,210,200,216,227,117, 66,216,222,226, 48,235,133, 98,181, 32, 30, 28,149,208, -254, 94,236, 85,154, 89,146, 0, 94, 81,230,133,141, 37,141,107, 62,111, 88, 98,228,154,171, 98, 5,174, 2, 56, 28,156, 73,105, - 98, 77,246,186,144, 87,111, 0,130, 48,206, 36,141, 38, 51,102, 76,211, 42,202, 51,153, 69, 36,158,177,248,207,118,105, 39,102, - 29, 68,113,181,244,209,200,140,188,128,155, 63,141,135, 79, 44, 32,203,128,133,197, 37,244,251, 67, 44,245,135,152, 31, 20,104, -167, 9,140, 78,208, 23, 30,194,164, 16,101, 9, 17, 28,100,212,210,163,214, 30, 25, 59,207,199,228,207,101, 53, 34,163,137,118, -197,174,111,229, 68, 7,184,201, 0,186,141, 88,147,234, 41,153,103, 35,100,118, 90, 20,131,180,146,175, 95,114, 90, 87,154,178, - 73,157,211,135,203,114,109,250,194,130, 21,188, 7,242, 54, 51,116, 71,110,167, 97,193,193, 87, 28,180, 21, 75,125,219, 48, 94, -122, 57,106,233,178,150, 66, 44,216, 5, 36,185,225, 72, 52,179, 59, 69, 76, 94,161, 54,207,150,127,175,237,219, 24,241, 46, 80, - 5,154,122, 27,205, 50,164,148, 72,177,185,122,237, 41, 23,202, 81, 92,222, 54,210,192,216,140,201, 57,242, 83,151,182,150,165, -101, 43,154, 45, 5,119, 62,228,207,154,140,221,161,220, 88,101, 61,129,191,186,102,233,140,116, 83,131, 43,234, 49, 93,212, 28, - 55, 48, 44, 16,142,159,102, 75,160, 27, 55,201,199, 40,248, 88, 94,118, 88,108, 5, 83, 47,128,165, 30,181,126, 43, 57, 16, 66, - 37, 64, 59,161,158,222,173, 20,216, 57,133,206,244, 52,178, 44, 69, 87,167,232, 38, 41, 50,147, 67, 74,137, 41,221,130,148, 52, - 48, 41, 53, 49,226,224,145, 39, 45,100, 90,163,180, 14,173, 52,135,117,142,138, 68, 41, 67,210, 57, 4,148, 74, 32, 1, 20,174, - 64,162, 12, 32, 4,202,162, 68,146, 24,216, 96, 73, 40, 80, 10, 66, 8,100, 38, 65, 97, 29,164, 54,100, 49, 83,181,154,191, 73, -108, 52,226, 41,101,195,219,237,145,170, 35, 33, 84,172,113,197,110,101,103,227, 75,142, 27, 81, 43,178,138, 72,238,146, 6,135, -208, 31,160,148,192,176,223,135,133, 64,185,216,227,195,200,121,233,129,115,190, 77,204,139,101,109, 57,250,200, 60,119,118, 82, -182,170, 91, 61, 74, 95,242,227,126,187, 16,198, 53,176,213, 52, 3,132, 51,125,234,246,105,102,232, 38,163,136, 94, 45,184, 63, - 49,143, 51, 88,170,171, 16, 15,174, 16,156, 2,228,136,208,116,218, 68, 76, 3,155, 40, 53,215, 71, 8,174,106, 17, 42, 66,213, - 93,108, 50,176,107, 20,224, 52, 65,253,163, 0, 84, 23,152, 2,215,118, 79, 81,105,148, 43,105, 99,117,179,104,100, 14, 59,118, - 0,123,119, 3,211, 51, 85,247,193,179,217,199,134,107,243,199,186,243, 35,226,164,199,219, 39, 43,185,114,222,118,140,174,246, - 14,232,207,225,241, 99,115,120,180, 40,112,122,176,132,133,225, 0, 18, 2,109,163,209, 74, 52, 90,173, 54, 10,163,225, 77, 10, - 57,112, 16,190,224,216, 91,214,214,173, 29,211,206,151,251,253,140,192,116, 41, 42, 55, 83,204, 57, 7, 87, 72,180,181,253, 14, - 69,116, 66,201,229,251, 50, 76,106,125,235, 9,138, 90, 15,186, 45, 96,122,138,253,213, 43,180,206,141, 66,156, 20,180, 63, 28, -168, 6,194, 96,131,173,160,133, 39,173, 60, 12,170,184,130,148,179,135, 44,170,156,116,205,241, 37,134,115,180, 36, 11,191, 8, - 85, 30,186, 98,115,146, 16, 28,220,201, 46,190,148, 45,127, 49, 63,125,180, 48, 9,251,245, 61,247,122,183, 36, 96,143,178, 76, - 38,155,247,132,205, 9,172,154,221,170,130, 99, 5,134,182, 50,113, 7,206,163, 51,178,138, 43,136, 12, 86,230, 84, 71,133,106, - 29,211,239,150,235,210, 11,206,188, 50,168,170, 74,174, 69,211,235, 53, 45, 98,159, 0,165,201,194, 18,115,239, 53, 7,160,198, -114,176,147,110,208,146,255,231,220,216, 61,183, 38,250,221,215,122,156,171, 90,161,152,110, 14,116,186,152,218,177, 3, 70,105, - 76,155, 12, 59, 59,211,200, 37,249,122, 91, 38, 67,240, 30, 82, 10, 24,109, 70,231, 43, 51, 9, 9, 67,138, 11,170, 8,133,118, -222, 98, 95,187,130,150,128,226,180, 44, 13,133,196, 80,158, 99, 34, 52,188, 36, 13, 83, 11, 5,107, 29,180, 20,200,149,129, 4, - 73,133,198, 72, 4, 37,224,164,170, 77,172,224,224,140,104,246,148,219,103,178,148,177, 30, 52,155,154,214,219,223,122,197, 13, -202,196, 94, 11,210, 30, 29,232,144, 57, 54,221,244, 11, 64,120, 4, 71,145,145,228, 30,113, 24,165,189,136, 88, 20, 72,212, 90, -165,214,162, 93, 61, 63,223, 96, 56,190, 25,133, 24, 47, 56,179, 92,170,208, 74,155,185, 94,229, 43, 6,132,156, 99, 95,215, 25, -196, 93,233, 81,221,113,161, 21,132, 52, 16,165,135, 16, 6, 66, 88, 8, 17, 42,205, 65, 9, 98,232, 50, 80,217, 94,173, 72,178, -215,146, 8, 87, 89,176,182,207, 62,118, 45, 40,247, 52, 70,171,166, 73,197,112, 71,190,182,101, 74, 20,199,212,162,184,198, 38, -250, 99,125,213, 99,123,189,140, 57, 49,192,142, 89,114, 37,120, 22,224,138,226, 76, 33, 99,221,237,112,101,229,142,240,168, 10, -229, 8, 62, 63, 74,241,121,170, 69,242,174,184, 39,106,171, 81,244,129,185, 62,134,172, 57,181,181,129, 48, 10,237,180,141, 86, -150, 33, 75, 53,160, 20,138, 36,133, 76, 50,200, 2,180, 62,206, 87,126,117, 44,159, 85,182,236,218, 71,235,199,104,206, 67,173, -136, 13,199, 61,196, 20, 54, 53,177, 54,117,193, 26,162, 10,206,141,218,221, 86,100, 36,180,187, 85,160,177, 7, 91, 66, 87,177, - 10,148, 69,197,208,215, 43, 40,143, 4, 16,126,230,204,208,152, 90,121,197,240,118,119,137,201,117, 50,170, 23,162, 12,151,107, - 6,249,240, 71, 93, 48, 61, 23, 4,227,250,238, 54,140, 12,161,180, 15,202,106,205,135,190, 10,180, 19,172,169, 59, 77,110, 43, -173,216,239,206,116, 41,250,218, 71,230,123, 57, 30, 28,186,110,211, 54, 87,183,140,238,129, 81,116,185,170,210,234, 52,199, 14, - 8, 85, 21,176,241, 69, 85,242,222,130, 54,136,137,174, 1, 22,200,125,205, 93,182,214,186,203, 90, 42,239,168,149,176,226, 46, -139,241, 25, 56,118, 39,146, 7,201,252, 85,214, 82,222,150,161,157, 91,220, 79, 61,161,138,112,121, 70, 18,222,206, 25,236,216, -185, 11, 90, 40,236, 48, 57,102, 91, 93,120, 27,144, 37, 25,180, 84, 40,202, 18, 74, 10, 24,165,169, 71,188, 81,232, 36, 41, 32, - 21, 18,165,160,133,132, 54, 25, 20,183,235, 84, 82, 66, 9, 1, 37,104,118, 5, 2,130,144,144, 66, 82, 32, 88,209, 71, 38, 21, -213, 61,113, 37, 18,109,160,160,224,225,225, 3,208, 73, 18,142, 90,150, 48, 90,192, 10,201, 5,149, 56,215,210,163, 74, 41,112, -219,164,169,199, 75,186,179,180, 6, 68,194,106,106,229, 66, 19, 85,229, 54,123,238,192,230, 75,146, 34, 11, 46,208, 19,106,218, -114,172,108, 18,205,202, 81, 50, 44,216,124,220,227,224,150,122, 3,158, 88, 33, 78,170,113, 19,252,122,243,164,147,132,210,196, -178,156,152,194,176,120, 90,131,227, 4, 0,145,101,220, 62, 90, 67,176, 95, 85, 56, 91, 49,244,216,157, 79,164, 53,225, 53, 0, -221, 89,218,239,117,179,163, 97, 77,160,224, 28, 94,112, 68,112,198,205,120, 50,110,242, 2, 63,174,169, 71,194, 48,201, 88, 71, - 57,242, 76, 0,140, 24, 39,226,235,205,241, 23,172, 93,104, 78, 39, 90, 90,170, 58,134,153,132, 52, 66, 99,214, 39,208, 74,234, - 14, 56, 98,232,145,216,185, 80, 9,197, 1, 68,136,189,172,250, 88, 47,135, 50, 84, 25, 41,129,180, 47,161, 28, 80,120,148, 62, - 96, 40, 20,118,117, 58, 48, 38, 67,170, 20, 90, 38,197, 84,158,163,147,166, 8,137, 65,217,105, 65,232, 12,162, 95, 64,216, 98, - 77,134,190,252,220, 56,154,223,192,154,102,204,251,143,217, 32, 82,140, 51,244,122, 15, 4,205,117, 10,192,213, 45, 17,131,204, -216, 10,182, 81,147,253, 36, 2,107,149,206, 81,161,162,213, 26,242,212, 3,104,215,123, 63,195,245, 63,218,204,152,103,219,244, -179,149,144, 5, 74, 2,152,206,137,225,181, 51,170,179, 96,120, 78,178,132,198,110, 12, 87,242,228,159, 35, 33,137,173,125, 35, -225, 71, 80,170, 90, 44,171,235,202,154, 98, 21, 42, 77, 57, 6,247,169,104,134, 55, 20, 29, 31, 99, 89,234,110,169,141,210,203, -152,177,162,229,120,147, 29,231,120,227,136, 42, 11, 64,129, 4,223, 68,211, 92,248, 90,187,232,224, 73,171,246,178, 42,123,173, - 88,185, 90,143,160, 29,233,104, 61,214, 34,209,148,217, 98,106, 12, 61,222, 43,128,133,140,168, 20,214,232,248,196,254,218,186, -138,114,134, 35,220,211,100, 20,233,158,182, 58, 48,208,216,145,183, 96,180, 65, 97, 75,180,116,134,224, 28,188, 22,232,102,173, - 17,141,128,118, 72,148,129, 84, 10,109, 45,225, 3, 16,156,131, 82, 18,158,219,119, 90, 87, 2, 65,193,123, 7, 3, 1, 45,104, -113,134,101,129,160, 21,218,105, 11,165,181, 16, 10, 48, 72, 96,157,131,144, 2,218, 75,100,121,130, 65, 97,145,105,137, 12, 9, -150, 44,160, 82,133,190, 18, 40,130,175,124,232,177, 59, 78,146, 97,212, 33,104,171,177, 21,215,140,103,101,212,207,185,214,153, -104,136,170,102,122,220, 64,185,226, 40, 83,214,232, 5, 72, 32,136,145,184,138,183,131, 31,208,255, 23,123, 84,219,185, 92,134, - 56, 88, 84, 4,107,100,126, 95,175,101,193,144, 5, 71, 41, 0, 45,234, 0, 55, 92,220, 82, 38, 29, 0,224,242, 43,113,224,178, - 93,184,252,130,125,216,189,235, 60,180,119,207, 32, 72,133,188,149, 64, 35, 64,166, 9,140,214,200,164, 68, 57, 28, 98,105, 88, - 98,105,105,128,165,197, 62, 6, 11,139, 56,245,212, 81, 60,240,212, 19,248,220,157,159, 64,216,181, 27,232, 45, 64,216, 62,241, -159, 36, 39,193, 53,212,246,126, 12,172, 10,220, 21,170,237,169,174,190,178, 44, 96,113,191, 99, 87,144, 9,114,136,113,211,251, -114,149,166,226,128, 98,228,123,180,110,248,154, 98, 47,215,217,173,176, 44,128,197, 57,206,135, 15,244, 28,245,106,120,102,162, -187,217,154,231, 29, 85,101,199, 72, 91, 99, 55, 69,167,153,225,115,241, 29,167, 89, 11, 91,142,209,112,127, 6, 59,113, 62,180, -133, 40, 10, 20, 58,193, 92,111, 10,121,218, 70, 42, 91, 80, 90, 32,216, 2,153, 84,216, 51,179, 3, 30, 30, 51,137,196,233,222, - 9,244,237, 28,190,112,231,221, 85, 85,221,138,252,175,188, 79,226,126,134,173, 2,231, 70,194, 11,198, 43,210,141,206, 26, 11, - 66, 18, 92,223,130,199, 27,175, 56, 4,119,210, 66,173,210,218, 38, 49, 24,208,107, 43,161, 57,234, 92,129,220,163, 57, 19,139, - 52,229, 88, 16,238,236,167, 64,153, 27,113,189,235,139,223, 54,220,191,128,203,115,219, 90,159,134, 0, 96,177,168,252,196, 75, -220,192, 37,214,116,176, 19,238, 39,139,170,154,165,176, 53, 13,152,203, 27, 27, 91,149,130, 5,187,196,236, 38,186, 13,234,218, -222,140, 5, 6, 98,230, 67, 61, 3,162,240, 85, 79,119,205,189,225,203, 33,231,134,199,231, 2,209,199,184,255, 67,109,191,104, -189, 62, 58, 63,249,118,201, 65,130,182, 22, 16, 43,226,245,121, 31, 42, 93,197, 47,196,150,228, 19,117,254, 5,246,188, 38,108, -217, 38,105, 27, 74,137,104,117,144,236,154,198,121,217, 52,242, 52,129,145, 6, 10, 64,170, 18,104, 67, 62, 23,173, 12, 82,149, - 32,225, 46,107,153, 78, 32,133,131,230, 20, 51, 37, 2,172,245,112,142, 76,233,193, 59,104, 0,169,176,112, 90, 99, 56,164, 86, -161, 54, 0,131,194,162,103, 75,148, 46,192,122,135,158, 29, 2, 66, 34, 56, 7, 27, 44,140, 50, 40, 93,229,119, 28,148, 14,198, - 8,204,245,151, 0, 33,112,188, 63,128, 91, 90, 36,255,202,176,199, 11, 91, 80, 16, 82,105,207, 77,244,240,134,205,238,168, 76, - 94,145,144, 10, 49,206,204, 5,170,195,160,147,170,185,142,228,180,189,232,211, 44,107, 41,120,131, 33, 29,190,222, 18,109,210, -222, 96,107,159,123,106,150, 2,127, 98,106,202,137,211,192,112,105,211,130, 78, 93, 43, 75, 95,242, 34,124,215, 43, 95,138, 11, - 47,223,143,217,217, 22, 10, 33, 96, 2,176, 35, 85, 88,130,132, 81, 18,137, 54,232, 21, 5, 10,206,156, 8,182, 24,149,128,245, -222, 67,115, 52,110,139, 9,252,176,180,176, 46,224,171, 71, 79,227,200,103, 63,143, 15,220,125, 31,240,224, 17, 4,149, 2, 51, - 93,210, 34,132,172,122, 31,107,110,180, 48, 55, 79,135,222,121, 46, 11, 59,172, 24,133,224, 88,138,158,173,180,121,189, 12, 17, -168, 87,223, 27, 99,228, 24, 47, 81,186,158,152,132, 52, 33, 45, 75,103,212,238,181,158,166,153,178, 86, 6, 80,179,160,114,157, -185,180,117,157,192,212, 5,142,132,153, 89,204, 26,224, 50,205, 97,125,109, 47, 71,110, 86,173, 33,166,119, 66,236,189, 4,151, -159,191, 11, 59,179,105, 76,183, 58,164, 40, 74,141,139,206,111, 99,207,238, 41, 76, 79,105,124,245,196, 0, 15,125,233,126,124, -242,225, 47,224,201,143,127,102,148, 6, 29,106, 63,235,175,149,152, 61,213,176,151, 85,190,117, 61, 7, 28, 53, 38,175,184, 7, - 69,212,146,108,237,106,209,116, 26,153, 82,120, 6,196,140,212,215, 77, 74,218, 11,221,140, 54, 81, 82,211,176,235, 13,144, 44, -184,194,153,156, 8,131,208,112,174,168,180,200,250,216, 35, 45,113,142, 44, 66,139,220,205,173,223, 39,173, 93,150,228, 51, 15, -195, 51, 53,218,122,249,211,186,144, 6,216,113, 0, 0, 32, 0, 73, 68, 65, 84, 0,139,122,202,161,223, 56, 61,142,252, 41,182, -151, 45, 49, 94, 43, 32, 90, 59, 39, 91,228,198,204,160,224,171,226,105,158,153,172,225,235,153, 90,163,169,222,160,170,123,176, -217,120, 21,147,212,138, 75,213, 27,217,248,106,190, 99,138,118, 61,245,170, 54, 39, 91,163,169, 43,174,180,165,217,236, 62,213, -193,108,154,195,104,133, 76,167, 72, 36, 7,171,169, 28,131,178,143,110,214,130,132, 68,146, 72,164, 58, 65,154, 26, 40, 37,224, -172, 68,150,164, 8,193, 98, 88, 90,104, 37,161,133, 7,134, 67, 8, 37,144, 7, 18,137,212,192,162, 3,137, 69, 0, 93, 91,194, -106,129,167,132,128,242, 1, 46,145, 8, 33, 33,215,152, 4,132, 80, 8,214, 66,139,170,213,170,225, 26,197,211,121, 27,189,178, -143,118,106,176,132, 14,156, 92, 36,237,209,198,116, 38,253,204, 99,232,192,120,125,240, 51, 76,117,156, 6, 82,128, 2,170,130, - 39, 45, 44,101,223,160,228,239,229, 92, 72,162, 12,120,213, 85,251,241,137, 47, 28,225,198, 98,138, 3, 64, 98, 57,221, 45,126, -238,193, 2,153, 53, 91, 41, 9, 16, 97,194,247, 23, 53,198,104,238, 28, 88,172, 84,200, 58, 18,255, 55,127,207, 91,240,194, 87, - 30,192,174,221, 51,152,205,115,216,178, 68,175, 40,209, 27, 20, 16, 74,194, 14, 45, 78, 23, 20,229,154, 40, 9,167, 4,148, 20, - 80, 16,112, 69, 9, 64,160, 95, 18, 3, 30,246, 11,244, 11,139,233,233, 22, 90,173, 4, 45,157,160,173, 37, 94,122,197, 62,188, -241,234,139,240,198,111,250, 58, 60,122,114, 30,159,250,135,187,240, 63, 62,254,105, 98,226,129,245, 62,205, 53,178,157, 3,220, -176, 98,110,145, 81,106, 77, 81,240,182,172, 74,108,214, 25,250,100, 46,171,101,237,177,206,192, 39,127,174, 23,121, 14,236,217, - 81, 77,220,241, 99,213,189,157, 7,230,251,216, 80,173,241,210,210,158, 26,249,194,107,227, 81, 53, 33, 81,216,241,158, 15, 27, -221, 47, 39,158, 2,116, 23,253,221,187,176,100, 75,100,101,129, 52,105, 99,255,197,187,113,209,222, 54, 46,185,160,131, 68, 43, - 92,176,219,162,149,103, 80, 42,197,135, 30, 89, 4, 30,125,112,164,173,111,168,228,187,171, 89, 20,198,122, 88,212,153, 68, 70, -204, 78,233,138,254, 97,192,140, 92,144,245, 73,213,253,109,207, 0, 26, 18, 45, 65, 74, 19,173,158,153,162,137,153,206,128,190, -165,244, 94, 33, 33,181,132,105, 27, 4,142,179,233,232, 4, 82, 8,248, 16,144, 43,141,190,243,112,240, 48, 34, 67,233, 61, 20, -103, 32,149,214,193,194,195,141, 10, 45,113, 0,167,209,196,236, 68, 78,130,228,128, 11, 58, 45,183, 31,202,149,172, 26,158,232, -217,102,173,156,245,126,230,163, 66, 87,204, 20, 85,189,236,237,132,155, 52, 90, 51, 29,187, 75, 29,215,189,119,224,186, 32, 53, -225, 79,112,151, 72, 55,209, 52,108,163,207, 27,226,254,139, 41,214,190,178, 8, 25, 0, 46, 33,255,254,232,128,177,130, 80,163, - 29,103,239, 83,215, 20,184,130,118, 14,180, 53, 48,179, 3,157, 60, 71, 91,165,232, 36, 25,100, 80, 80, 2, 48, 58,133,115, 67, -180,211, 28, 74, 8, 36, 70, 33, 75, 82,164,121,134,196,208,198,161,121,160, 96, 8, 45, 61,130, 43,161,157,131, 48, 2, 29, 87, - 32,241, 14,137,247,112,174, 4, 66,137,204,121, 4,239,224,189, 69, 22,128,129,176, 84,117, 19, 64,225, 73, 62, 79,117, 2,129, - 0, 47,128, 84, 25,248, 16,160, 37,157, 56,163, 12,156, 35,159, 94,128, 64, 33, 20,249, 57,202,146,203,126,114,202,194,114,209, -174,107, 5,157,108,119,240,215,168,186, 19,251,123, 37,119, 64, 26, 6,242,201,104, 54, 3, 26,174,170,231, 56, 31, 52,213, 64, -170, 32,131,128,145, 26, 78, 6, 60,122,124, 14,111,126,245,245, 40,243, 33,230, 78,204,211, 70,178,150, 11, 88,184,179,219, 27, -245, 84,160, 24,171, 80, 14,168,226, 90,191, 87, 5,224, 69,134,222,158,166, 42,131,105,139, 59,151,197,210,147, 45,110,208, 67, - 27, 55,189,250,133,248,190,239,126, 11,190,235,166,239,193,203, 15,188, 16,211,221, 54,180, 36,166,122,186, 95, 96,169,176,208, -165,133,245, 30,169,243,120,252,196, 60,156, 23, 80, 70, 33, 88,135, 76, 27, 88,239, 49,149, 24,204,245, 10,164, 30, 72,148, 68, -123,166, 3, 47, 4,164, 13,200,179, 4,157,118,142, 32, 4, 84, 16,176,165,133,128, 64,146, 37,184,238,192, 53,248,186,175, 63, -128,125,187,166,241,240,201,163,232,159,236,209, 33, 95,232,147,191, 90,114, 81,141,216,235, 32,176,169,172,223,227, 52, 42, 81, - 69,219,151, 92, 3,115,185,148,190,216,183,187, 78,104,162, 86,161, 57,144,103, 61,105,151,173, 14,249, 77,181, 4,230, 22,104, -222,181, 28, 55, 53,111,116,191,198,212,200, 24,244, 23,235, 90,199,234,106, 58, 84, 65,180,214,158, 89, 78,120, 13,235,203, 40, -232,109,233, 36, 22,145,163, 61,211, 69, 75,165,216,217,157,193,215, 92,216,198,229, 23,239,128,145, 10,157, 86,138, 78,150, 64, - 36, 6,189,178,131,153,233, 93,120,176, 95, 34, 56,143,160, 13,194,249,251, 16, 46,216, 3,236,217, 75,193,144,171, 5,167,174, -227,249,144,232, 42, 0,176,157, 98,223, 11, 46,193,252,177, 57, 14,174,170, 9, 92,214, 82, 96,152,125, 6, 48,244,200,116,102, -218,180, 15, 90, 9, 55,200, 18, 72,186,109,164,105,130, 60, 33, 5,108,214,100,152, 54, 57,118,230,109, 36, 74, 97, 58,237,160, -107,114,104, 41, 49,155,117,208,209, 25,218,105,134, 92, 25, 76,165, 45,180,141,198,180, 54, 72,181, 70, 43, 77, 97,125, 64, 80, - 26,193,212, 44, 77,136,133, 99,120, 47,216,114,237,249, 95,238,181,153,177,123,112, 69,182,216,203,157,179,125,130,175,250, 40, -148,190, 58, 15,178, 86, 35, 34, 6, 28, 39,186,242,181,143,130,251,184, 10,166,224,130, 80, 37,151,181, 45,106, 41,103, 27, 85, - 10, 71,221,218, 98,156, 65,140, 97,137,149, 20, 45,231,252,151,213, 9, 9, 28,203,178,101,209,239,138,125,233, 83, 25, 96,218, - 72,167,167,176, 35,201,161,133,129, 81, 64,110, 50,164, 73,138,224, 45,140, 78,144,232, 12, 64,137, 86,218, 66,154,103,208, 34, - 64,170, 0, 33, 2,197,107,129, 34,181, 69, 8, 16, 92, 79,184, 35, 45,108, 0,210,224, 96,157, 67, 34, 5,242,210,162,112, 5, -116,172,168, 6,139,196,121,244, 80, 98, 80, 82, 62,163,210, 9,156, 45, 96,116,194, 38,252, 0,165, 53,164, 15, 48, 74,161,240, - 1, 90, 8, 24, 24, 20,176, 16, 82,160, 28,198, 98, 25,174,146,186,214, 27,120,162,107,121,140,114,139,234,153, 27,206,247, 84, - 19, 68, 55, 54,100,168,219,159,173,162, 96,148,152,199,108,248, 25,114, 14, 12,145, 18, 48, 10,137,210, 20,179, 0, 64, 10,129, - 32,129, 47,127,245, 97,204,205, 47, 49,243,103,109,127,104, 89, 82, 93,157,177,167, 47,191, 22,238,212,169,202,124, 86,214, 44, - 9,245,249,136,105, 67,101, 57,158,138, 17,209,153,229,142,125,117, 19,148,164, 74,132,211, 93, 96,122, 10, 47,122,249, 53,184, -241,187,223,138,239,249,174,215,227, 37, 87,237,199,190,110, 27,139, 46,160, 37, 4,130, 15, 24,148, 22, 67,235, 96,135, 22,139, - 3,139, 97,127,136,194, 5,180, 90, 57,102,167, 91,112,150, 52, 14, 93,150, 72, 76, 2, 39,128,254,176,128,148, 10,221,196, 64, - 6,129,118,158,227,210, 29,211,104, 75,133, 2, 2, 83,153, 65, 30, 4,230,188,195,233,162,192,210, 82, 15, 39, 7,125,188,237, -199,126, 9,223,247,147,223,139, 87, 92,123, 13,186,193,227,254,207,124,153, 36,250,165,211,212,108,168, 44,137,121, 42, 93, 69, -175, 71,255,123, 76,157, 26,153,233, 86,107,111, 43,170, 6, 27, 35,135,112, 45, 53, 80,202,181,247,154,229,146,154,243, 92,118, -213,139,101, 58,140,201,241,168,218,205,150, 51,117,174,202, 33,118, 27, 79, 59, 58,131,169,107, 13, 49,127, 12,243, 34, 71,123, -170,133,169, 36,199,243,206,159,198, 84, 59,193,244, 84,134, 32, 20,180, 81,200,140,134,208, 10, 58,107, 97,110,161,192,241,249, - 5,132, 52,197,215, 29,184, 12,215,126,205,126, 92,188,179, 11,209,206,112,226,244,252,217,165,243, 1, 68, 88,133, 64,114,241, - 5,216, 59, 53,139,227,115,115, 19,174, 42,206,189,198, 51,160,167,129,226,134, 89,221,156,220, 44,237,156,203,118, 27,164,105, -138,221, 89, 11,185,210,152, 77,186,152,201, 58,104, 39, 45,236,200,167, 97,164, 70, 55,233, 80, 77, 16,165,145, 40,131, 84, 39, - 80, 82, 32,145, 18, 25,167,121,182, 76,130, 34, 0,185, 73,209, 50, 25,114, 45,209, 54, 26, 66,105, 40,163, 81,218,192,101,132, -201, 50, 72, 76,239, 28,149,132,150, 53,215,137, 8,128,206, 41,138,222, 58, 78, 19,100, 41, 57,186,205,192,129,169,165,173,206, -156,228,134, 74,138,207, 17,184, 76,119, 44, 30, 21,107,119,184,130, 92, 25,145, 17, 59,191,241, 51, 20,121,200,168,153, 78,160, -116, 63, 97,185,200, 21,107,241,177, 65, 89, 96,103,126, 8, 20, 0,232,237, 89, 50,117,173, 73, 59,108,229,164, 89, 77,181, 49, -157,102,152, 78,219,208, 74, 66, 10, 32, 81, 26,214, 89,116,210, 46,188,119, 80, 10,152,106, 77, 35, 73, 21, 50, 99, 32,132,135, - 18, 20,196, 21, 64,233,109, 74, 10, 88, 91, 82,219,116, 9,104,231,144,115,161,142,196,123, 40,231, 49, 12,142,252,159,222, 66, -120, 65,193,119,222,195,133,152,173, 16,224,189, 67, 16, 26,130,163,180,165, 16, 80, 66, 64, 10, 9, 15,138, 34,148, 66,192, 33, -160,165, 19,244,157, 69, 16, 18, 46,148, 44, 40,176,100, 22, 56,204,119,173,195, 89,247, 7,249, 45,170,103,222,105, 19, 83, 83, -226,204,136,252,232, 48,140,154,156,229,102, 8, 14, 85,148,116, 44,138,144,155,209, 6,117, 66,192, 40,201, 21, 60, 5, 66, 16, - 72,210,148, 2,128, 53, 71,238,198, 90,195, 67,187, 70, 81, 24, 13,119,234, 4, 17, 57,203,117,246,235, 13, 71,226, 28,198,130, - 51, 43,205, 73, 43, 35,109, 60, 75, 43, 38,100,200, 84,184,235,162, 61,232, 25,131,239,127,195,155,241,154,131, 47,199,133, 23, -238,134,181, 1,137, 45,113,186, 95,224,177, 19,115,120,234,212, 34, 78,205,247,113,106,110, 17,110, 88,114,141,131,128,211,167, -230, 81, 14, 75,244, 22,250, 88, 90,234,195, 46,245,176, 48,116, 40, 29, 96, 18,131,197,133, 1,188,243,112, 11, 75,152, 31, 20, -152, 31, 20, 40,157, 69,191, 44,112,122, 48,196,209,165, 30, 22, 6, 67, 28,239,245,240,212,194, 18, 22,251, 67, 12, 6, 5,190, -242,200, 28,238,253,220,231,240,215, 31,254, 27,124,195, 55,126, 3, 46,191,106, 63, 46,127,254, 37,184,255,232, 49, 12,231,230, -184,108, 40,103, 33, 36,154,155,190,248, 42,168,170,180,220,184, 98, 29,146,252,168, 28,233, 4, 99,175,207,243, 90, 81,235,158, -250, 3,252,255,212,189, 89,175,165,217,121,223,247, 91,227, 59,236,225, 76, 85,213, 85,213, 35,217, 77,138,162, 72,145, 14,101, -201, 84, 36, 69, 52, 36, 68,146, 45, 89,138,146, 72,182,128, 36,178,157,139, 36,128,131, 0,185,200,167,200,125,130, 92,229, 19, -228,194,128, 1, 33,130,156,196,144, 5, 77, 16, 35,155,180, 40,138, 17,201,158,187,171,206,176,167,247, 93, 99, 46,214,122,207, -222, 85,221, 93,221, 93, 85,164,232, 13,116,215,116,234,212, 57,239, 94,107, 61,235,249, 63,255, 97,202,105,190,134,237, 30, 30, -163, 77,159, 79, 30, 48,238, 31,231,245,216,133, 76, 35,234, 41,120, 93,212,165, 44, 63,250, 53,231, 88,142,231, 75, 12, 45, 55, - 78, 58,132, 80,244,157,198, 85, 2,251,224, 64, 41,193,229,229,142,111, 94, 93,112,231,153, 57, 47,156,158,210,216,150, 59,207, -220,226,246,233, 13,210, 92,241,214, 59,231,143, 95,216,175,187,198, 76,124,231,138,243,222,146,191,243,106,189,252, 79,142,122, - 85,159, 45,197,223, 92,166,129,166, 16,126, 59, 3,167,179,170, 78,106,192, 42,230,139, 25,115,221,114,214,244,180,182,101,217, - 46,232,181,165, 55, 29,125,211,131,144,244,166,197, 40, 77,202,137,222,116, 52,198, 98,148, 70, 73,137, 20, 26, 37, 21,173,105, - 32,103,150,237,156, 86, 53, 12,209,177,108, 58,230,182,165,211, 22,131,132, 70, 50,230,234,217, 64,220,135,191,124,175, 47, 59, - 83,164, 43,236,173,158,135,109,229, 17,168,253, 62, 74,113, 79,130, 27,199,242,224,114,133,197,242, 52, 94, 43, 99,224,194, 59, - 16,123,153,166,115,251, 44,121,204, 1,115,126,178, 26,142, 31,127,109, 73,117,144,199, 46, 15,172,113, 15,228,149, 19, 74, 48, -133,233,152,138,134,196,248,132, 69, 93, 85,194, 69,223,194,124,129,109,123, 90, 85,230,227,173,214,244,182,131,148,232,154,150, -144, 35,139,182, 69, 43,141,181,170,214,161, 88,116,227,120,148,200, 8,161, 16, 49, 66,244, 88,107,209, 49, 96,115, 68, 74,133, - 26, 29, 34,102, 68, 76,200,148,138, 65, 13, 18,153, 33, 9, 65,139,192,147,174, 27,152, 84,187, 25,173, 12,141,212, 8, 33,105, -149,193, 87,196, 64, 0, 62, 39,172, 50,196, 28,112, 62,178,176, 13,187,232,113, 76, 27,113,178, 58,172,249,213, 31,118,187, 20, - 7,214,167, 79, 75, 22,215,117, 5, 9,201,234,189, 5,118,234,226,174,173, 42,171, 87,253,181,100,164,218, 51,118, 53, 4, 64, -234,122,115, 21,104,163,138, 60, 29, 48, 82,161,181,194,133, 88,173, 79,171, 6, 52,139,162, 25,125,212,248, 65,203, 34,245,154, - 24,165, 74,236, 3, 47, 14,195, 31,166,185,147,200,239,223, 85,154,106,188, 32, 4, 88,203,231,191,240, 89,126,250, 71, 94,230, -159,252,151,191,202,223,255,202,151,249,212, 39, 95,225,159,255,235,127,201, 43,207,127,146,182, 51, 92,109,183,188,123,185,229, -237,203, 45,126,181,101,179, 25,136, 49,193,206,115,113,239,138,203,149,195,111, 3,195,106,195,226,248, 6,166,233, 89,159,175, - 24, 99, 34,141, 25,219,247, 40,165,121,245,219,111,240,206, 91,247,216, 93, 94,241,238,189,251,140,227,136,219, 6,222,124,231, -156, 55,222,190,199,110, 53,178,189, 88,115,117,181,101,187,218,178,186, 92,225,199,196,255,246,191,252,239,165,198,238, 60,159, -249,194,223,162,233, 37,203,227, 57,127,235,179,159,194, 37,207,107, 95,251,102,121,175,142, 22,181,216,214,131, 76, 30,132,140, -184,240,160,245,228,135, 65,114,248,114, 72,136, 3,228,227,129,121,220,199, 41,166, 15,217,182, 10,234,184,169, 22,243, 28, 15, - 72,122,223,207, 78, 51, 61,216,169,107,189,151,169,165,136,216, 57,118, 77,203,172, 49,164,220,112,181,139, 88, 45, 81, 82,113, -111,200, 24, 37,240, 62,112,185, 9,124,245,219,175,242,236,145,226,206,242,152,110,185,224,232,120, 65,211, 24,206,102,115,222, - 22, 35, 87,111,220,127,252,142,113,114, 81,243,142,124,255, 98,127, 89, 74, 21,165,176, 7,177,185,153,167,255, 12,167,209,150, -209,251, 16,151,201, 3,220,244,245,223,111, 11,121,121, 94,213, 26,139, 14,180,164,209, 45,167, 77,203, 51,253, 49,203,238,136, -153,233, 56,153, 29, 99,164,162,181, 51,148,208,244,186, 69,203, 50, 91,159, 53,165,179, 23, 73,160,148, 70,203, 98, 0,102,165, -162,211, 13, 90,107,122,221,163,180,230,180, 61, 42,205,147,212, 8, 4,189,177,232, 36, 9, 42, 49,162,246, 55,181,244,125, 40, -236,147, 99,160, 81, 7, 17,174,213, 95, 34,196,125, 76,174, 86,133,247, 33,216,123,209, 91,189,151,185,169,170,163,215,106,159, -214,168,170, 35,169,169, 35,176, 92, 27, 41, 23,246,223,223,227,162,181, 82, 84,137,117,172, 30, 36,213,128,102,242,190,135,194, - 79, 48,146,235, 67,252, 0,245,123,178,162,110,171, 15,173,109, 97,121, 68, 99, 13,167, 93,135, 17, 10, 37, 37, 70,106,180,210, -228,156,105,180,194, 84,200,202, 72,137,212, 10, 69,164,209, 18, 5,152, 4, 70, 73,148,200,104, 4, 50, 70, 98,206, 68, 63, 34, - 83,198,198, 84,237, 33, 51, 58, 37,154, 92,228,175, 1,129, 65,224, 99, 64, 11,137, 65,178,145, 2, 41, 37, 93, 83, 24,170,141, -178, 52, 90, 97,109, 71,171, 45, 41, 7,180, 54, 24, 33,217, 69, 95,141,110,202,215,185, 9,158, 44, 4, 49, 30, 6,166, 76, 15, -244, 67,130, 90,230, 51,232,151, 37,172,198,213,226,250,164, 16,188,172,139, 39,248,247,122,124, 79, 93,220,212,145, 95,187, 98, - 29, 26, 22,136,122,131, 84,133, 1,111, 5,141,181,132,152, 17, 72, 4, 2, 41, 96, 8,161,106,217,107, 23, 57, 49,180,169,112, -241, 7,117,235,114,210, 63,203,125,242, 82, 22,251, 27,249,225,247, 33, 14,139,124,124, 47, 73, 70, 73,154, 79, 62,207,111,253, -252,127,200,207,124,229, 75,124,246, 71, 63, 69, 99, 53, 43, 23,136,110,228, 19,207,188,192,239,255,225,159,240,226,179,183,217, -109, 3,235,171, 45,171,171, 43,214, 23, 87,172,214,107,194,198,147,145,108, 86,107,118,155, 45, 18,133,146, 13,198,118, 28,205, - 23, 72,105,202,179, 8, 96,173, 37, 68,137,214, 13, 82, 25, 98, 16,196, 24,105,250, 5,218,182,220,127,251,109,182,155, 53,227, -118,195,119,222,120,157,113,179, 97,187, 90,115,113,255, 62,227,176,227,107, 95,255, 43,126,245, 63,249, 13,254,221, 87,255,140, - 63,254,163, 63,226, 19, 47, 61,207,118,181,197,246, 45,159,249,236,167,232,143,150,124,243,254, 5,108, 15, 66, 39,166, 27,248, - 4,249,153,154, 57, 16,252, 71, 43, 34,135,249, 2,211,129,117, 72,240,122, 28, 75,227, 67,251,217, 9, 98,156,230,144, 31,228, - 61,240,180,114, 11, 30, 9,191,107,132,150, 15,232,206,203,254,119,184, 97, 71,238,103, 56, 23,185, 90,101,118, 14,130, 20,215, -145, 5,231, 91,207,235,175, 95,112,255,254, 59, 12,126,199,243,103,183,184,243,236, 45, 82, 74,184,224,112,110, 96,166, 52,127, -121,255, 10,174, 86, 79,167,120, 60,188, 39,174,121, 20, 60,221,226,213,183,229,243, 47,142,203,251,117,116, 90,201,111, 51,184, -253, 12,156,157, 21,147,161,163,101, 41,226,203,234, 7,223, 22, 34,220,141,217,130, 59,139, 37,203,118,201,162, 91,208,105,203, -178, 93,160,132,196, 40, 67,111,122,180,212,100, 18, 74,234, 18,164,149, 5, 70,153,122,102, 75,140,178, 40,161, 48,186,197,167, -192,162,153,209,180, 29,173,105,139, 97,101,202,104,109,104,109, 91, 1, 37, 65,175, 44, 86,103,182, 89,145,235, 94,191, 30,195, -125,175, 94,125, 91, 57, 59, 21, 29,155, 28, 3, 83, 44,197,219,202,189,183,194,228, 27, 34,168,126, 3,149,221,174,204, 62,114, - 54, 23,120, 27, 87, 25,253,147, 68, 47,198,125,231, 31,211, 62,145,116,202,139,143,177,134,155,241,209,160,248, 73, 34, 60,241, - 54, 68,174,193,104,114,111, 46,150,170,181,177, 60,216, 32, 79, 60, 83, 55,186, 22,137,182, 46, 26,203,173,126,137,200, 18,173, - 21, 51,211,225, 98,196,106,141, 68,162,133, 64,107,115,173,249, 47,158, 5,138,150,128, 17, 5,114,215,201,163,132, 66, 40,208, -209, 49,134, 84,102,241,131, 67,121, 7,174, 16,154, 92,240,216, 84, 66, 28, 76, 40,100,185,136, 64, 86,110, 88, 6,180,182, 72, -173, 17, 82,163,165,164,237,218,194,184,111, 13, 50,107, 20, 2, 33, 50, 90,154,242,177, 64,204,137,153,177, 92,142, 59, 98,168, -115,151, 88,175,112,206,191,127,192,253,225,107,113, 82, 28,151, 76,117, 45, 10,225,201,225, 55, 31,202,194,252, 32,147,150,247, - 36, 70,213, 27,176,152,136, 41,213, 53,174, 47, 68, 51, 89, 9, 98, 5,177, 17,244,214,178,157,146,127, 66,222, 91,155, 78, 69, - 60,171,154,158,244,136,220, 98, 43, 15,228, 75,105, 47,231, 57, 36,119, 29, 90,133,190,207, 33,247,236, 79,253, 56,191,244,243, - 63,205,127,252,149, 47,115,124,251, 20,173, 52, 62, 70,222,190,191,226,106,189, 67,187,192,110, 28,121,241,238, 29, 82,148,228, - 0, 42,105,136, 18,163,151, 24,213,113,122,251, 46,253,108,142, 53, 11,158,123,225, 37,186,249, 17, 93,219,161,181,197,197,145, -101,219,210,216,150,147, 27,199,220,185,121,140,182,134,229,124,206,217,141, 19, 78,206, 78,232,102, 75,186,121,203, 75, 47,220, - 70, 53,115,220,214,177,217,238,208,210,178,243, 37, 14,116,189,219, 17,131,231,199,190,248, 89,180,142, 60,255,169, 23,249,194, - 23, 62, 13, 73,112,121,113,206,230, 98,133,178, 45,207,125,242, 5,238,206,123,254,237,159,254,121,217, 39, 20,130, 98,185, 81, - 15,229,178, 55, 62,225,108, 49, 31,204,203,159,212,189, 76, 86,167,143,107,187, 3,177,119,236,154,210, 22,167,206, 48,231,239, - 77, 7, 95,187, 79, 33,229,251,178,251,133,146,101, 31,134,145,171,203,115, 94,195, 51,134,129,232, 10,169,209,197,200,232, 18, -175,189,181, 98,189, 26, 73,110,197,189,237, 37,103,179, 25, 70, 25,150,199, 51, 46,206, 47,217, 12,107, 98, 12,252,197, 95,124, -183, 72, 55,159, 58,216,144, 14,230,156,226,201,231,247,211,179, 49, 61, 44, 79,232,111,158,225,219, 22,110, 28,151, 98,189,152, -195,141, 83, 88, 44,225,228,102, 65,247, 78, 78,145,203, 37,207,158,157,241,204, 98, 65,167, 37, 55,250, 57, 71,109, 79,163, 44, - 55,103,199, 72, 4,139,110, 9, 66, 32,208,116, 77, 15, 57,163,181, 68, 25,131,210, 10,211, 40, 76,211,144, 66, 68,106, 73,219, - 53, 4, 31,177, 74,145, 50,116,218,148,130,222,119, 36, 95, 81, 10,153, 17, 41,227,130, 43, 57, 30,169,228,114, 52,186,101, 23, - 29,163,172,233,144,168,247,111, 84,158, 22,244, 62, 21,236,107,219, 87, 81,214,181,119,101,198,191, 29,202,243,155,144,179,209, -149, 34, 46, 83, 57,191, 91,187,175,194,177,186,225,217,202, 25, 50,125, 81,127,184, 80,205,129,194,254, 74, 58, 65,226, 19,146, - 38, 68,205,136,248, 24,151,225,233, 60, 23, 7, 17,183, 83,108,173, 47, 40,247, 3, 72,221,193, 26,123,252,162,174,116,121, 48, - 71, 61,204,143, 88,206,103,197,214, 85, 40,230,141, 37,198, 72,111,139, 65,135, 86, 10, 37, 4, 90,107,140, 84, 24, 35,145, 57, -210,202,132,170, 51,111, 43, 51, 17,129, 16, 9,225, 67,209,219,239,182,164,209, 49,250, 1,181,115,164, 24, 81, 62,176,168,218, - 69, 19, 83, 33,211,145,145, 66,225,144, 8, 20,201, 88,178,148,196,156, 48,141, 69,169,210,169,182,125,139,214, 10, 35, 13, 34, -231, 50, 75,182,150,144,139,148, 66,107,195, 24, 28, 33, 69,118,185,186,126,185,106,197, 41,100,121,152,143,154, 47,247,243,125, -134,245,118, 91,160, 82, 45,159,112,198,200, 71, 95, 4,147, 79,242,244,163,168,173,243,236,164,228, 33,207,123,178,216,123,180, -199,148, 24,199,128,146,150, 60,214, 46,111,234,214,199,218, 13, 90, 9, 27, 87, 36, 28,143, 42, 46, 42,215,220,100, 81, 46, 1, -211,191,115,109,111,124, 16,105,121,120,200,125,238, 11,252, 23,191,241,203,252,204, 87,126,130,126,185,192,121,143,243, 17,231, - 60, 23,247,175,184,186,119,137,219, 5,118,187,128,209,134, 97,231,217, 92,174,105,237, 12,107, 91, 78,206, 78,185,253,204, 41, -207, 62,123,131,227,101, 79,223,181,156,157, 30,209,180,150, 89,215,114,227,198, 49,243,229, 12,221, 54, 44,143, 22,204,250,150, -166, 85,244,125,195,115,103,115, 60, 18,163, 52,125,219,112,251,198,146,101, 59,195,199,204,243,183,142,121,225,133,187,220,123, -103, 68, 36,193,201,226,148,179, 27,119,184,188,186,207, 59,235, 13,110,116, 44,151, 75, 86,171, 11,134,209, 49,155,205, 32, 11, - 86,235, 13,113, 28,145, 82,241,210,167, 63, 65,219, 89,190,249,245,111,212,141,239,247, 35,147,137, 72,248, 36,235,226,208,223, -253, 73,215,215,100,243, 58,133,154,240,144,111,252,196,149,184,134, 36,229,211, 33,130,190, 31,234,244,126,100,185,131,143, 17, - 57, 67,242,228,119,207,185, 60,191,226,117, 55,242,206,249, 37,140,150,139, 11,199,229,249, 21,227,120,133, 22,153,222, 24,214, -195,192,189,203,203, 18,111,224, 71, 82, 30,249, 63,254,252,235,228, 55,239,125,112,172,242, 19, 23,246, 10,197, 63,141, 78,180, -111,203,136,235,229,231, 65,105,210,201, 49,185, 81,208,245,229,178, 62,155, 21,255, 7, 91, 83, 49,151,199, 60,183, 56,225,133, -197, 49,187, 80, 72,201,119,251, 37,119, 23,167,144, 21, 39,179, 19, 0,206,102,167,136, 44,233,219, 25,182,111,216, 14, 27, 22, -199, 75, 80, 10,171, 45,109,107,201, 66, 33, 99,198,244,197,111, 68, 8,129,170,190, 33,182,209,116,179, 57, 57,229,154,178, 43, - 73, 41,149,166, 33, 69,180,212, 4, 18, 70, 27, 98,136,236,188,167,215,150, 44, 5,187, 84, 27,166, 41,161,240,105,159,143,241, -161,162,151, 38, 43,237, 84, 10,121,172,161, 77,219, 97, 79, 94,157,230,229,136,253,185, 29, 15, 18, 42,167,188,120, 33,246,190, - 12,178,169,112,125, 85, 24,201,131, 70, 38,214, 17,166,146,123,247,184,143,179,183,205,228,172, 55,133,143,229, 3,203,101,181, - 15,221,114, 15, 34,116,143, 87,212,117, 77,151,233, 42,137,171, 43,190,215,183,154, 25,141, 86,164, 84, 34, 79,203,108, 69, 34, -165,196, 42,131, 18,178,160,186,201, 51, 83, 2,171, 36, 86, 22, 35,215, 32, 5, 45, 16, 93, 33, 42,177, 25,112,110,100,187,219, - 18, 71,143,242,129,185,139,100, 33, 8, 46,211,139,253,244, 77, 10, 67, 20, 18, 33, 53,209, 90,132,182, 72,221,208,216,134, 36, - 20,166,181, 24, 85, 50,150,149,210, 8, 5, 50,171,218, 13, 58,164,208,248, 88,194, 32,124, 12,228, 12, 67,240,196,213,102, 47, - 33, 10, 97,127,107,123,212,124, 57,228,210, 89,239, 66,145,244, 76, 11, 74,126,143, 10,251, 52, 91, 59,156,189, 78,133, 61,213, -188,120, 97, 75,172,226,102, 87, 96,248, 41, 87,184, 46,178,236,253,126, 33, 6, 95, 55, 89,173,214, 62, 21,199,183, 71, 29,224, -211,124, 49,186,210,221, 77,112,243, 52,251, 61,244,255,158, 66, 24, 62,245, 57,126,253, 87,190,194, 47,255,226,207,240,220, 43, -119, 73, 33, 97, 26, 69, 74, 2,183, 26,217, 94,109,217, 94,108, 8, 33,145,178, 68,209,208,181,115,102,253,146,103,158,185, 69, -107, 27,148, 52,244,139,142, 69,219,209,181,134, 70, 25,206,142,103,220, 60,233,121,241,108,198,173,147,158,190, 85,204, 91,201, -173,163,150,121,219, 48,159,181,196, 44,232,117, 25, 17,205,172, 34,132,132, 16, 18,171, 20,243, 89, 67,107, 13,202,104,110, 46, - 58, 62,249,210, 29,206,135, 68, 51, 91,240, 35, 63,244, 50,219,171,128, 74,158,191,190,119,159,133, 49,204,218,142,221,176, 67, - 37,201,108, 62, 71,105, 93,247, 90, 66, 54,150, 23, 63,245, 18, 9,193,119,190,241, 87,213, 86, 50, 87,253,122, 53, 56,250, 65, -121, 29,242, 51,200,251, 98,212,204, 75, 39,104,186,253, 40, 74, 60, 20, 68,241, 52,214,245, 67,190, 11, 31,106,245, 58,113, 52, -142,230,132,113,203, 16, 70, 98, 26, 9,126,133,206,146,171,225, 62, 34,134, 2,185,103,135, 79, 9,231, 6,190,254,250,119,249, - 55,111,191,201,230, 91,247,224,242,252,233,146,210,228, 83, 30, 75, 52,182,140,182,142,142,225,249,103,160,237,120,246,238, 93, -152,117, 4,221, 34,102, 11,178, 52,165,144, 43, 1,205, 81, 57, 15,155, 5,167,182, 65,234,150,147,217, 17,183,250, 30,135,161, - 21,154,174,105,176,202, 50,107, 58,180,212,232,166, 67, 55, 10, 25, 5,203,147, 35,226,224,104,154,166, 20,110, 18, 70, 20, 8, - 62, 19, 80, 20,254,147,212,178, 4,107, 41, 10,177,217,104, 16,145,228, 35,155,113, 75, 14,129, 32, 18, 42, 75, 92,116,197,206, - 59,102,124,114,168,154,131, 30,181,192,249,186,158,198,167,200,134,159,210,207, 38, 98,170,213,251,117,173,196, 94,213,100,212, - 30,113,158,136,188,215,166, 57,105,207,121, 17,178,156,159,147,183,123,206, 5,158,143, 53, 54, 86, 86,200,126, 24,203, 30,137, -190,120,225, 7, 95, 57, 70,149, 91,165,244,199,191, 4, 79, 35,182,148,246, 36,217,107, 53, 76,222,171, 96, 30,122,118,143, 87, -212,167,194, 97,139, 55,240,252,236,132, 83, 59, 35,103,129, 84,146, 70,119, 24, 89,188,217, 5,146, 70,149, 25,186, 36,161,100, -198, 2, 70,100, 90,163,201, 34,161, 82, 66,229,140, 27, 7,164,143,228,209,179, 27, 7,196, 48, 96,119, 1,231, 10,244,174,146, - 64,103,232,180, 66, 43,131, 82,154,166,159,163,219, 30,154, 30,219,206, 80, 77,139,210, 6,217, 54, 8,107, 16,170, 28,222,212, - 57,187,136,197, 59, 62,196, 2, 9,133,156,137, 41, 33, 37, 92, 13,107,148,210,132, 16, 56, 31, 6,178,168, 93,167,243, 92,167, - 2, 61,106, 62, 22, 83,185,249,143,110, 95,208, 15, 33,104, 25,247, 48,230,211,218,252,211,141, 78,214, 64,137,201,207,123, 90, -176,153, 98,107,170, 39,248,169,118, 91,177,194, 66, 62,148, 13,144,235,101, 68,169, 26,180, 80, 25,150,155,243, 42,135, 10,143, -247,181, 77, 48,243, 4, 35, 29,189,200, 47,252,202, 79,243, 15,126,249,103,121,233, 51,159,192, 54,138,237,214,177, 27, 60,227, -214, 51,108, 71,220, 48, 18,156,199, 59,143, 18,150,229,226,132,179,179, 19,102,125, 75,223,155, 26,234,163,176,157,162,177,138, - 89,103, 88, 54,134,219, 39, 45, 39,139,158,190,105,144,170, 32, 38,157,149, 44, 91,141,150, 2, 37, 10,145, 42, 35,171,202,162, - 32, 8, 82,194,141,133,165,111, 20,189,213,228,148,139,188, 13, 73,215,104,158,187,125, 66,210,154,148, 51,139,229, 49,199,167, -183,136,235,129,111,191,243, 22, 86, 75,164, 84,188,179, 94,209, 40,193, 48, 14,228, 24,177,218,144,147, 68,104,205, 75,159,124, -129,115, 63,240,206,119, 94, 43, 93,194,118, 34,211, 72, 30,116,188,248, 1, 40,236,135, 23, 67, 83,209,184,190,169, 7,159, 46, -107, 68,240,224,200,231, 73,215,242, 7,196,179,126, 96,178,218,100,137,125,243, 6,159,249,212, 43,124,254,149, 31, 98,217, 88, -132,202, 92,172, 46, 25,253,150,139,221,134,215, 46,239,145,200, 24,101, 24, 82,224,171,175,191,205,155, 95,255, 14,187,111,125, - 7,214,171,167, 88,208,167,129, 41, 79,199,163, 98,130,218,103,115,184,123, 11,158,191, 13, 55,110,243,195, 55,158,229,164,233, - 72, 8, 62, 57, 63, 98,200,176, 52, 13, 27,219, 86, 6,182, 0, 59,227,110, 55, 99,214, 20,227, 36,163, 53, 74,104, 22, 77,139, -233,122, 22,182,135, 20,176,218, 34,164,161,237,117, 33,189,117,109, 49, 8,155,119, 53,147, 71,163,107,231, 77, 74, 72, 36, 89, - 56,132,148,165, 54,250, 34,215,146,178, 36, 18,134, 24,137, 68,164,128,221,232, 17, 66, 34, 73,228, 36, 24,115,153, 1,207,187, - 25, 91, 55,208, 54, 13, 90, 40,118, 58, 19, 69, 77,134, 20, 21, 9, 18,117,205, 61, 14,194,209,216,154, 36, 57,117,205,181,169, -240,149,196, 54, 89, 11, 78,222, 15,177,234,208,243, 4,207,219,189, 29,110,136,181,121,173, 99, 40, 37,106,167, 47,170,172,172, - 6,206,104, 85,246, 68,223, 22,102,189,209,133,100, 42,171,213,110, 62,200, 13,120,156,189,114,120,129,158,198,151,249,176, 99, -127,239,231,124, 60, 71,185,201, 54,112,110, 97, 54,199,231,140,173,118,121, 11, 91,102,233,160, 80,178,204,174, 11,153, 60,160, -149, 32,197, 68,223,154,226,176, 56, 56,176,170,100,159,123,200, 33,226,134, 1,225, 60,202,143,196,171, 13, 73,104,244, 54, 16, - 20, 12, 10, 90,161,217, 24,133, 54, 22,213,119, 68,221,210, 88,131, 64, 18,117,233,250, 11,244, 92,159,171, 12, 56, 38,213,151, - 32,235,162, 3,179,157, 98,220, 66,171, 52, 49, 6,182,206,211,155,134,149,171,198, 20,147,233, 73,160,204,100, 92,101, 41,199, -244,225,102, 18, 70, 86,143,225,201, 91,187,158,221,170,125,240, 25, 62,169,125,228,161, 22,252,240,247, 66,216,235,197, 1,220, - 37,232,227, 98, 60,147,124,149,172,181,123, 7,167,139, 77,249,179,144,247, 30,206, 91,247, 24,201, 24,239,243, 58,112,229,250, -185,255,252, 87,248,210, 79,253, 24,167,167,115, 98, 74, 92, 93,142,172,175,174, 72, 41,145, 35, 24,221, 18,182, 1,163, 91, 8, - 13,253,201, 13, 78, 79,230, 88,107,232, 27,203,124,102, 9, 33,147, 17,228, 36, 80,141,100,102, 44, 11,107, 80,100,156,139, 8, - 60, 66, 42, 92,128,139, 77, 34,101,207,172, 73,116, 86,178, 13,133, 21, 93,136,183,138,227,121, 33, 77, 22,133, 77, 66, 43,113, -157,227, 81, 87, 11,222, 39,122,107,248,210, 75, 55,216,141,129,123,219,200, 38, 30,211,205,231, 12,191,251, 59,136,148,137, 34, - 50,134,192,197,234,138, 69,191,100,244,145,198, 59,210,213, 21,110,216, 50, 63, 57,226, 23,126,254, 43, 92, 13,142, 87,255,228, -223, 61,232,155,126,237,199,249, 3,242,234,219,253,177, 48,173,143,113,138,118,116,149, 91,193,131,133, 75,235, 39, 91,199, 47, -127,178,116, 84, 95,255,198,251, 79,119,106,164,106,174, 26,222,137,127,214, 62,115,131,163,217, 18, 45, 21, 39,203, 99,186,174, - 33,249,196, 27,151,111,113,181,115,220,219,236,120,103,187, 99, 27, 61,241,254, 21,249,114, 11,227,138,252, 52, 45, 91, 63, 40, - 47,254,113, 29,197,160, 6,170,204,225,185,103,224,248, 4, 22, 55,144, 41, 51,235,231,184,221,154,231, 23, 55,184, 55,172,249, -100,211, 48, 2, 23,227,200,168,138,177, 80,223, 52,244, 70,163,133,198, 54,246, 90,154, 37,181,166,207,145,224, 29,182,233, 49, - 66, 33,165, 68, 38,137,238, 44, 70, 78,254, 4,245,172, 84, 16,115,192,200, 76, 96, 36,185,128, 18,153,156, 51, 46, 4,148, 46, -197,114, 28,124,149, 84, 41, 98, 40,157,173,173,166, 72, 67, 8,100,114,137,191,214,154, 24, 35,103,179, 35, 6, 63, 98,103, 22, - 45, 19,219,214,242,154, 53,165,136,174,135,114,238, 68, 87,214,216, 48,124,188,181, 53,186,125,231, 45,168, 49,218,181,171,138, - 53,143, 93,213,220,249,105, 29,155,154,111,161, 36, 12,235,178,254,213,129, 45,179, 79,251,153,121,116,160,230, 69, 17,116,237, - 70, 23, 10,154, 69,216, 59,202, 77,254,239,147, 10, 73,233, 58,210, 10, 31,127,191, 60,198,250,209,143,189,136,219,166, 20,170, -182,199,100,129,243,129,163,118,142,139, 17, 33,202, 77, 38,166,128, 50,134,144, 19,173,210,132,156,232, 40, 48, 88,223,116,104, - 50,209,121,164,146,248,237, 64,151, 33,248,192, 48, 12,100, 23,138,174, 63,120,140,173,174,117,141, 33, 54,179, 66, 24, 94, 30, - 99,154, 22,225, 61,169, 53, 40, 36,194,103, 98,215,209,166, 64,142,137, 36, 5, 86, 52,100, 34, 49, 70, 50, 9, 33, 53,201,101, -132, 40,209,167, 46,122, 2, 17,169, 5, 4, 69, 78, 1,143,195, 40,205,104,106, 96,193,218,239, 31,112, 76, 31,242, 6, 76,179, -210,112, 45, 93,188,246, 48,158,126, 93,174,244,213,204,224, 9, 11,166,169,129, 3,138, 7,201, 69,215,240,169, 45,115, 35, 29, -247,213,170,213,133, 32,212,232, 10, 37,197,226,209, 28, 14, 32, 97,107, 97, 92,237, 55,200, 19, 28,222,127,231,151,127,142, 47, -255,228,151,185,243,252, 41, 66, 10,134,157,103,125,181, 99,115,181, 65, 90, 89, 70,143,187, 17, 47, 18, 18,205, 51, 55,158, 69, -105, 75, 99, 53, 90, 9,140,209,204,122, 91, 46,216, 25,130,243,180, 70,176,104,203, 72, 39,230,196, 16, 51,110, 40, 12,126, 37, - 5,163,203,220,219, 4, 66,138, 88, 85, 51,134,180,198,167,196,213,170,100, 3, 68, 41, 8, 49,211,233, 4, 99, 66, 38,104,218, -226,182, 55, 84,114,103,204, 25, 25, 50,198, 20, 68,160,239, 90, 98, 18, 60,183,236, 80,252, 60,175,126,251,187, 12,155, 21, 62, -254, 53, 62, 58,180,182,164, 48,226,130, 39,196, 64, 8, 22, 55, 6,110,189,112,155,223,252,213, 95,226,127,221, 69,174,190,250, -141, 18, 82,225, 63, 42, 29,246,251,244,106,108, 53, 85,169, 95,151,169,135,223,122,245, 96,184,201,212,209,103,158,138,167,249, -115,119, 79, 57,233,230,252,249, 67, 69,189,228,123,132,253,207,107, 65,159, 32,205,219,139, 25,183,207,110,113,111,125,206, 11, -183,110, 35,141, 33, 69,143,209,207,208,154,134,119,183,107, 86,247,207,201,110,132,243,119,159,110,142,193,163, 10,250, 7,125, -172,109, 11, 55,229,131,158, 89, 99,203,236,252,198, 41, 60,247, 44,116,115,152, 29,131, 53,204,133,102,235, 29, 11,211, 50,132, -128,160,152,141,188,189, 94,177,176,109,137,170,165, 40, 57, 0,146,146, 92,121,207, 51, 77, 71,163,138,103,135,167, 40,128,112, - 35,130,140,214,138,182,107,139,202, 32,101,180,149,132,209, 87,115, 67,135, 38,144,180, 71,187,128, 19,174,120,128,120,143, 68, - 16,125,198, 79,173,111,146,196, 93,177, 97,142, 42,161,133,100, 23, 71, 90, 93, 28, 33,165, 44, 73,153, 90, 40,148, 46,210, 10, - 33, 51,164,142, 16, 2, 47,158,157,114, 62,236,216,180,150,232, 28, 92, 14,123,203,241,237,199,136,166,158, 26,153,107,187,214, -169,177, 58,144,109, 74,189,183,168,181,128, 59,184, 97,247,237, 62, 5,239,176,176,167, 74,134,155, 92, 31,175,155, 40, 11,210, - 85,219, 86,246,204,119,113,112, 78, 78,249, 28, 57,237, 77,196,198,239,237,216, 77, 63, 86, 33,105,219,186,233, 45, 56,199,209, - 98, 73,175, 53,224, 17,162,197, 84,200, 64, 73,141,243,158,214,180,196,232, 81,253,131,246, 16, 0, 0, 32, 0, 73, 68, 65, 84, -100,108, 83,158,174,115, 35, 70, 74, 84,202,152, 4, 94, 25,216,172, 8, 33, 96, 98, 68,133,132, 19, 13, 93, 83, 35, 82,173,102, -222, 22,189,228,242,228, 4, 21, 50, 62, 38,236,124, 86,130,128, 98, 66,180, 22, 81,137,108, 66,107, 76,166, 44, 38,138,214, 47, -186, 18, 50, 32,200,120,231, 16, 82,144,210, 30, 82,119, 57, 20,163,154, 12,173, 86,140, 94,237, 45, 14,145, 31,173, 83,159, 10, -187, 72,251, 91,227,245,162,227,193,159,123,249,228, 93,206,132,239, 75,185,191,113, 30,190,173, 74,150,247, 43,172, 96, 88,192, -162,169,193, 3,166,116,230,187,117,245,231, 30,203,223,247,169,166,136,141, 15, 6,133, 60,198,215,217,255,248,151,248,205,175, -252, 36,175,124,246, 69,180, 16, 12,206,227,198,192,250,114,139,119, 14,100, 41,232,243,126,129, 93,156,210,116, 45,120,137, 66, -211, 46, 12, 90, 72, 78,102, 22, 99, 20, 18, 65, 99, 52, 33, 43,206,179,192, 71,207,189,181,195, 84,147,157, 88, 67, 37,118,222, - 19, 66, 68, 68, 65,200,137, 97, 72, 12,163,103,116,145,229, 92, 23,232,190,149,184,109, 96,187, 13,132,172,104,231,134, 35,147, -203,218, 89, 11,180,146,244,141, 37,228, 98, 78,180,146, 30,163, 36,125,163, 88,180, 2,107, 53,214,104, 62,247,210, 13,142,102, - 13,247,239, 95,113,118,235, 22,171,139, 43, 94,191,255, 29, 70, 31, 72, 49, 34,149,192,168,128,237,122, 46,238,157,243,236, 75, -119,249,167,255,217, 47,241, 63,255,241,215, 14,230, 50, 63, 64,175, 36, 31, 66,146,216, 75, 27,167,174, 93, 60,253,127,246,213, -223,251, 3, 94, 61, 44,126, 7,200, 83, 70,151,194,174,245,117, 65, 23, 49,145,149,228, 91,111,190,195,173,217,155,220, 62,189, -137, 80,146, 24, 61, 57,192, 24, 2, 55,150, 71, 44,187,150,203, 55,222, 46, 33, 34,181,160,231,167,253,197,219, 26,142,180, 27, -247,197,226, 48, 20,228,250,251,234, 42,130,215, 66,120, 40,149,208,216, 2,253,206, 58, 56, 89,194,209,188,116,119,214, 22, 18, -150,131,165, 21, 32, 21, 66, 55,100,183,229,184,155,227,134, 45,207,119, 45,247,124,224,221,114,147, 39,137,140, 53,134,133,181, -116, 82,179, 11,142, 99,219, 97,155, 6, 17, 18,222,121,164, 84, 28,213,156,116,165, 37, 90,203, 98,171,225, 3, 86, 11,162,247, -228, 16,144, 58, 34, 6, 79, 34,163,165,160,217, 57, 6,145, 49, 25, 84,140, 5, 89, 22,130, 81,149,102,167,164,149, 54, 64, 98, -209,204, 8, 57,162, 77,195,224, 6, 90,101, 65, 39,134, 16, 88,116,115,188,223,146, 77, 67, 59,151, 92,185, 45,189,130, 43,173, - 88, 55,154, 75, 20,116,177,248,196,115, 5,222,194,246, 67,146, 28,141, 45,163,207, 41, 43, 33, 38, 16,110, 47, 3,155, 80,211, - 36, 30,156,233,216,218, 88,185,170, 77, 23,178,188, 23,227,186, 28,163,186,173,118,178,117,180,106,218,189, 95,188, 60,104,208, -166,189,108, 38,127, 18,185,255,185,146,123,118,253,211, 64,182, 62,228,245,241,103,234,186, 90, 94,246, 51,232, 91,154,147, 37, -189,210, 88,109,144, 66, 32, 69, 38,229, 76, 66, 84,189,122, 33, 7,168, 12,157, 76,184, 16,233,148,196, 20, 80, 8, 13, 40,165, - 80,126, 68,198,132,218,185, 50,178, 72, 96,148, 38, 26,141,233,122,218,182, 67,219,134,182,159, 97,140, 65, 90,131,182,134, 76, -174,188, 7, 77, 32,147, 83, 38, 73, 93, 33, 39, 73,200,165, 99, 79, 66,236, 51,147,153,204,190, 34, 57, 70,198,228,240, 62, 16, -115,172,235, 33,177,141, 99,241, 94,113,174,144,155,166,212,182,195, 44,229, 15,155, 77, 78, 86,131,217, 23,164, 97,210, 1,123, -246,176, 80,240,143,121, 29,211, 7, 26, 99, 5, 97, 44, 24,191, 63, 96, 67, 47,102, 69,191,106,155,114,156,185, 80, 14, 55, 31, -202,247, 18,135,242,119,198,106,103, 56, 86, 61,101, 13,122, 33,133,247, 18,241, 62,162, 70,249,215,127,251,183,248, 79,127,237, -239,114,231,185,155,184, 49,224,124, 32,250, 92,127,140,215,211, 7,133,225,120,126,196,114, 54,227,246,209,146,153,109,144,173, -194, 72,197,162, 49,204, 90, 85,227,196, 19,228,204,106,235, 24,221, 8, 34,147,125, 34, 10,193,213,182,132,183,196,152, 89,175, - 2,171,171, 29,231,235, 45,187,221,136, 15, 30, 31, 18, 82, 72,238,189,189,226,222,102, 7, 17,108,149,151,197,224, 8, 89,113, -113,233, 25,131, 99,244, 17, 55, 70, 92,242, 16, 51, 65, 8, 4,146,205,224,184,220, 56, 70,159,153, 55,146,209,121,180,146, 44, -250,134,219, 55, 23, 28,157,206,249,196, 11,183, 16,237, 2,171, 90,124,101,192,175,118, 91, 72,145, 70, 23,111,128,103,159,191, -193, 23,126,234,111,243,175,127,231,255,225, 7, 38,236,227,129,179, 73, 87,230,239,100,184, 84, 11,162, 76,188, 71,103,246, 81, - 15, 38,253, 1,247,151,135,127,127, 42,232,170,234,135,167,249,103,101, 49,139,201,135,161, 22, 77,177,139, 92,244,130,190,230, -141,183,166, 97,181,185, 66, 10, 88,239,182,252,233, 95,125, 23,222,126,245, 26,181,122,234, 5, 93,214,180,182,182,219, 95,124, -212,193, 65,158,115,189, 40, 85,207,110,161, 32, 12,251,125,212, 90, 80, 29, 28, 31,149,196,191,163,121,209,149,119,109, 41, 38, - 85, 1,137,110,176,148, 68,202,165, 44,137,131, 34,122,174,124,160,201,145,123,110,199,102,220,128,223, 33,117,135,147,154, 59, - 93,135,149,130,101, 99, 48,213, 67, 66,213,128, 43,163,138,217,212,188,183,215,130, 20, 50, 37, 60, 43, 71,114, 12, 5,132,168, -118,221,132,136, 30, 35, 65, 75,172,143,200,154,149, 33, 43,129, 75,138,124,205,229, 82, 70, 99,164, 68, 91, 67,219, 24, 18,169, -152,125, 9, 16, 66, 48,239, 91,156, 27,232,172, 45,102, 66,100,230,182, 37,166, 80, 56,181, 89,149, 99,218, 10, 98, 18,251,140, -243,198, 22,136,254,144,179,112,152, 45, 17,124,173, 77,121,111,216,162,197, 94, 58,145, 39,130,167,170,103,220,193,251, 56,212, -226, 63,233,190, 85,174,246,220,186,202,200, 84, 33,185, 54,181, 97,138,197,116,168,196, 40,155,242,107,217, 84, 50,221, 52,163, -143,229,189,119, 99,181,205, 86,149, 53,175, 31,207, 79,226,123, 90,212,219,190,232,109,251, 6,164, 70,181, 13,141,177,204,141, - 65,203,150,156, 34,141,105,176, 82, 19,146, 71,150,119,147,148, 2,141,132,133,166,116, 49, 66, 98,115, 70, 33,203, 51,244, 9, -147, 37, 42,122,162, 75, 88,109,112,198, 34,155, 14,211,207,104,141, 69, 89, 75, 59,235,137, 62,162,171,183,176, 8,177, 20,108, -169,145,100, 66, 77,132,147, 2, 54,209,163,108, 49, 70,201, 57, 18, 67, 66, 8, 65,140,169, 64, 72, 57,227, 98, 32, 36, 79, 68, -144,147,199,167,226, 74, 23, 83, 34,196,136,159,152,141, 83,210,148,143,133,240,246,145,141,187,210,158, 85,169, 38, 39,162,218, -169,167,248,152, 33, 5, 15,221,244, 98,253,122,140,173, 70, 7,213, 47,190, 95,212,244,188, 74,216,112,187,253, 92, 52,135,122, - 1,136, 48, 78, 58,244,176, 95,116,250, 33, 22,253, 20,245,247, 33, 68,160,230, 63,248, 18,255,245, 63,254,135,124,241,203,159, -195, 24,205,110, 44, 33, 7, 41,102,178,200,164,148,137, 33,145,131,164,177, 29, 55, 79,110,240,220,233, 41,203,197,140,227, 69, -139, 80,146,155,139,142,219,199, 29,157, 45,220, 8, 33, 96, 51, 68, 86,131, 99,227, 28,187,157,199,187,192,198,123,214,235, 29, -219,245,200,229,197,150,132, 33,197,196,118, 51,224,119,142,113, 23,217,173, 71,132, 78,197,215,223, 39,148, 22, 8, 13,227,110, - 96,116,158,205,122,139, 31, 28, 62, 10,182,155,145, 97, 28, 9, 33, 51, 14,129,245,214,177, 25, 60, 46, 41,114, 78, 4,239, 25, - 35,228,156,104,173, 40,121, 29, 25,122,173, 88,180,154,101,111, 89,246, 51,238, 62,123, 11, 59, 59,226,232,228,140,123,111,191, - 77, 12,145,166,177, 37, 60,207, 71, 94,120,225, 25, 62,255,147, 63,198,239,255,206,239,253,128,117,234, 53,255,122,146, 25,197, -176, 15,220, 73, 60,126,184,134,212,123,183, 51, 93,198,104,197,146, 51,188, 23, 62,133,189, 52, 72,215,131, 86,213,208, 27, 33, - 30, 44,236,126,196,125,231, 77, 94,253,206, 95,241,141,237, 21, 89, 57,122,107,113,206,241,199,175,127,135,237, 55,191, 5,126, -252,224, 98,254,137,151,249,244, 79,124,145,123,127,245,215,143,184,121,124,200,243,154, 46, 67,227,184,151, 80, 93,187,140,229, - 3,195,160, 90, 8,164, 44,207,162,105,192,206, 74,103,222,218, 18,176,210, 54, 85, 45,162,202,254, 77, 19, 81, 42, 17,108,203, - 11, 77,135,200,145,224, 7,124,138,164, 48,144,220,142,239,110, 86,228,113,139, 80,154,185, 2, 77, 65,152,132,182,180, 53, 23, -192, 72, 69,140,137,166, 51, 52, 2,102,115, 83,199,203,213,252,171,250, 83,229,148,209, 58, 33, 82,113,238, 36,102, 68, 12,228, - 24, 80, 49, 34,114,177,162,176, 2,180, 80, 64, 68, 8,137,110, 44, 70, 91, 76,107,208,141, 65, 27, 77, 22,208, 54, 77, 33, 76, - 75,129, 49,138, 24, 35, 93, 91, 96,247,242, 22, 75,188, 31, 49, 82,145,115,105,150, 78,187,142,251,195,128,106, 44, 81,203, 26, - 21, 61,141, 53,171, 23,186,182,149,116, 60, 49,217, 15, 50,237,179,219,155,183,196, 74, 98,156,194, 46,114,189,156, 38,202,179, - 14,126,239,177, 46,155, 82,208,175,199, 52,182,172,215,144, 10,154,137, 40,223,188, 16,123,189, 58,147,180,211,151,117,234,170, -211,155,169,121,244,166, 58,212, 81,211, 47,197,247, 62, 11,224,227, 21,245,190,173, 48,146, 41, 55,167, 89,143,178,134,179,174, - 47,129, 43, 74,208,155,142,148, 19,137, 92,154, 84, 33,144,100,218, 28,208, 57,128,200,180, 82, 33, 82, 36, 42, 69,147, 74, 97, -143,128, 30, 74, 81,237, 81,120,173, 80,243, 57,182,105,208,198, 18,148, 98,214,119,228, 24,209,173, 37,197, 90,144,116,177,129, -117,209,147,140, 33,121,143, 19,137, 49, 6,100,134, 40, 37,161,250,121,103, 37,137, 62, 84, 87,191,120, 93,184, 5,144,235,131, -207, 41,226, 98, 66,145,145, 66,176,217,212, 52,171,237, 88,180,222, 34,215, 91,216,227,220,236, 15,108,103,227, 19,144,228, 14, -217,237,135, 63,159,244,138,105,138, 91,181,101,145, 42, 85, 10,248,110, 40,139, 55, 84,134,168,171,172,244, 84, 11,119, 99,247, - 16,209,116,112, 79,183,225, 84,103, 85,227, 7,155, 69,156,254,228, 79,240, 63,252,246,175,242,210, 75,119, 42,241,180,204,187, -189,247,140, 33,226,118,129, 97,240,108, 46,183, 24,221,115,243,198, 45,158, 61, 61,225,232,168,165, 51,166,146, 67, 51,179, 70, - 33,165,192,197,200, 16, 51, 99,130,245,198,115,126, 57,176,221,121,134,209,179, 90, 13, 92, 93,110,217,172, 6,182,187, 1, 63, -122, 98, 78,108,199, 80,188,222, 47, 7,156, 27, 8,209, 17,125,201, 5,200, 62,161,148, 34, 69,201,102,181, 69, 74, 65, 74, 25, -183, 29, 24, 54, 35,155,203, 17,183,113,184,113, 96,231, 29, 41, 4,182,155,145,113, 44, 23, 9,171, 4,189,145,236,198,136,208, -146,152,114,229, 33, 85,243, 36, 37,105,172, 98,222, 27, 94,188,121, 68, 63,155, 33,237,156, 20, 5, 73, 4, 4,138,144, 18,219, -209,113,231,217, 51, 62,247, 19, 63,206, 31,252,159,255,247, 15, 86, 97,143,213, 1,239,253, 2,119, 30,231,101,236, 62,170, 52, - 85,130,230, 24,203, 33, 60,107,246,100, 35,173,247,178, 34,216, 39,103, 77, 45,182,172,126,245,213,212, 67, 92, 27,238,212,175, -115,181,227, 45,231,249,230,219,111,241,205,183,222,100,251,221, 55,201,227,250,209,223,195,122,197,223,254, 59,255, 17,183, 62, -253, 9,190,251,141,111, 60, 30,107, 93, 86, 5,201,244,181,235,135,252,248,167,203,178,214,165,136,207, 23,176, 60, 65, 30, 31, -145,151,179,131, 44,123, 85,138,130, 82,251,142, 51,133,210, 68, 9, 65,204,137, 24, 60, 97, 92,211,165, 76,218, 94,208, 4,199, -184,189,226,221,237, 10,198, 1,225, 7,192,243, 66, 51, 99,214, 47, 57,178, 13, 90, 74, 66,202,215, 33, 44,157, 22,116,115,195, -220, 42,218, 70,162,165,160,111, 37,186,122,150, 79,118, 4,201, 23,110, 74,218, 13,197,139,127, 8,197,162, 59, 23,200, 93, 9, -137,105, 12,198,180,216,182,197, 54, 22,213, 53, 40, 99,139, 47,137,181, 40,169,200,185,204,238,181, 42,132,232,198, 54,196,224, -209, 82,212, 16,180,132,175,239, 81, 18,197,253,115, 32,176,108, 91,132, 20, 8,163,112, 86, 22,228,176,235, 10,218, 41,227,158, -137, 46,170, 13,172, 72,117, 92,193, 94, 97, 20, 40, 5, 53,199,189, 93,175,212,165,232, 83, 73,193,147,235,219, 48, 22, 79, 14, - 95, 47, 9,186,202,214, 68,222, 7,124, 9, 91, 85, 32, 84, 51, 25, 81,244,233,169,218, 2, 79,151, 58,173,170, 11,103,189,236, -153, 74, 88,252, 62,116,233, 31,175,168,107, 93, 61,190, 21,204,106,234,143,214,204,103, 51, 52,146,185,181, 37,214, 84,148,141, - 55,201, 34,148,128,144, 3, 46, 7, 22,178, 60,160, 46,139,210, 77,231,140,164,108, 36,149,138,180,204, 38, 81,162,110,109,135, -237, 59,178,178,100, 37,209,198, 48,166, 64, 86,229, 96,148, 36,164, 54,136, 24,217,230,136, 82, 18,231,194,117,198,201,232, 61, - 89, 22,214,189,203, 9,157, 82,129,226, 67, 34,197, 2, 31,249, 80,224, 31,159, 28, 32, 8, 49, 17,115,192, 42, 69, 22,153,115, - 63, 98, 90,131, 27,171, 94,209,213,212, 41,255, 4,126,209, 79, 18, 35,120,248, 94, 72,249,224,165,224,176,184, 79, 9, 91, 50, - 23,107, 67, 31, 96,187,131,113,183, 47,212,147, 43,216,195, 29,255, 3,159, 99,234,212, 39, 56,182,182,108,215, 16,252,190,187, -249,217, 95,255, 69,126,235, 31,253,125,142,230, 61, 87,155, 29,219,245,192,110,112,108,119,158, 24, 51,195,102,100,183, 25,136, - 46,161,153,243,204,157,103,248,220, 39,110,114,231,164,165,181, 6,231, 19,177,118, 96, 62,129, 71,178,118,137, 55,223, 90,113, -117,185,101, 61, 4,134,144,216, 14,158,205,122,199,230,202,177, 91, 15,248,224, 24,183, 3,193, 7,198,113, 32,120, 71,116,129, - 24, 3, 57,149,241, 71,172, 58,252,148, 34,195,110,199,118,189, 99,216,141,172,207, 47, 16, 66,225,156, 35,249,177, 34, 53,144, -115,196,143, 14,165, 53,195,232, 10, 23, 67, 70,164, 80,180,179, 98,173,235,198, 72,211,106, 6, 95, 80, 39,170, 92,174,240,199, - 4,141, 49, 40,173,137,178,229,153,219, 55,217,110, 3,110,216,161,219,134, 97,189, 97, 12,137,231, 94,184,201,115,159,248, 36, -127,246,251,127,244, 24,216,245,191, 7,175,105, 86,220,170, 50,119,182,109,145,136,118,179,122, 24, 86,242,230, 4, 89,155,169, -176,137,125, 65,159, 58,225, 44,246,168,209,251, 25,238, 72,138,229,235,197,101,249,111, 28, 74, 33,248,160,103,167, 75, 44,232, - 55,183,107, 94,190,243, 44,127,253,245,175,239, 33,245, 71,237,205,198,150,175,185, 53,123,100, 97,114, 15,211, 15,141, 39, 38, -253,179, 86,165, 11,188,121,198,252,120,206,252,120,206,216, 88,178,177,213,209, 44,214, 17,218, 65, 54,192,100, 87,154, 98, 41, - 60,227,134,237,184, 97,117,117,159,221,246,156,215,238, 95,225, 55, 87,188,182,170, 5,189, 85, 28,205, 58,110,182, 61,199,205, -156,214,182, 40, 37, 64, 89,186,156,176, 82,211,181,146,229,204,208,181,197, 0,108,222, 42,186, 86, 33, 98,194, 54,170, 18,147, - 51,209, 7, 68, 78,196,245, 72,206,137,184,222,146, 71, 71,118, 30, 65, 46,231,182,110,139,153,152,209,116,205,140, 44, 21,221, -172, 67,100,133,181, 6, 41,101, 97,190, 91, 83,198,108, 85, 94,155, 98,192, 24, 75,162,132,112, 73, 81,124, 78, 93, 8,180,198, - 18,115, 44, 6, 98, 82, 18, 98, 36, 9, 73, 18,130,104,234, 57,118,212,150, 11,144,243,165,176,235, 41,173,208, 20,107,110,171, - 32,200,178,230,144, 85, 55,174,246, 50, 76,125,224,149,129,170,217, 21, 19,201,174, 22,236,209,213, 5, 85, 47,101, 82,148,130, -158,134, 18, 7,157, 43,220,126, 77,134, 22,251, 28, 7,228, 1,121,234,192,202,217,249, 3, 31,136, 39,100,193, 77,126, 8, 19, -195, 62, 61,110, 81,159,236, 64,219,190, 44,236,190, 41, 48,154, 82,220,232,122, 50, 25,171,219, 58,151,206, 40, 33,201, 57, 33, - 40,208,187,200, 25,159,224,140,200, 32, 51, 45, 18, 35, 4, 89, 42, 68,150,200,148, 17, 8, 68,206, 36,211,208,204,122,178,181, - 37,232, 72, 27,178,132, 70, 75, 92,138,164,156, 80,218, 20,233, 92,142, 32, 20,131,247,132, 84, 50,197,163, 47,182,177, 33, 38, -140, 16,101,159, 8,144, 46, 34,140, 4,153,241, 46,144,114, 34, 11, 73,240,158, 24, 2, 62, 7,132,144,164, 84, 82,186,102,178, - 33,228,196, 54, 87,150,231, 24,107, 30,111,252,155, 61,103, 31,238,162,141,222, 23,228,233,207, 38,184,127,136,101,118, 30,195, - 30,154, 63,204,182,126,212,231,152, 22, 96, 83,229, 46,170,250, 38, 95, 31,124,165,216,255,226,111,254, 26,191,240,107, 63, 71, -223, 88,222, 61, 95,177, 94,237, 24,135,192,118, 23,240, 99, 49, 0, 73, 49, 99,245, 12, 35, 91,142,143, 79,121,246,230, 9, 77, - 53,126,241, 46, 17, 66, 98, 12,153,213, 48, 18, 92, 34,184,200,253,203,129,119,207,215,220, 59, 95,179,190,220, 49, 12, 35,171, -243, 29,187,237,192,110,189,102,231, 6, 98,240,184,193,177,219,108, 9,163, 71, 32, 24,135, 13,227,110, 64, 25,197,176,217,162, -141, 41, 69,158, 76, 8,158, 97, 59,224,221, 64, 76, 9,231,119, 56, 55, 34, 20,228,236, 9, 99, 64,217,150, 97,187, 37,231, 76, - 38,147, 92,194,246,134,172, 45, 41, 22,109,104,132,162,121,175,227, 37,137, 68,107, 81,221,118, 51,179, 89,195,113,223,176,114, -208, 88,195,141,211, 37,235,130,221,227,189,195, 15, 35,194, 24, 94,124,249, 46,119,238, 62,199, 87,255,240, 79, 63,160,144,255, -123, 84,208, 31,190,127, 88, 83, 70,117,218, 20,173,175,148,229,240,173, 9,137,165,123,105, 74, 1,166, 66,213,147,167,245,225, - 75,240,225, 29,142,148, 31,192, 17, 72, 31,204, 90, 23,192,253,243, 82,208, 39, 8,246, 81,133, 93,235,253,197, 3, 30,204,224, -158,138,251, 84,224, 39,178,148, 22, 37, 11,226,248, 8,121, 60,227,120,214,211,118, 45, 94, 75, 22,198, 20,103, 53, 33,247,172, -107,113,192, 68,140,161, 60,155,213, 21, 92, 94,192, 59,239,146,175,118,140,111,190, 11,171, 53,187,243,251,229, 18,208,104,132, - 41, 49,167, 47, 46,207,138, 23,187,208, 72,105,145, 57,209, 91, 75,171, 4,139,185,165, 49,154,227,153,102,209,149, 46,189, 53, -146, 89,171, 17, 33,151,112,172, 92,208, 39,191, 29, 32, 38,194,197, 21, 41,248,242,252, 67,177,127, 45, 53,180, 65,182, 6,221, -244,101,162,208, 55,228,148,153, 29,117,228, 92,164,161, 77, 99,137, 41, 34,170,155,232,148,182, 23, 67,198, 71,143,182, 22,239, - 35, 81, 36,180, 82,248,148,208, 82,145, 36,140, 62,208, 24,197,152, 34, 43,239, 49, 82, 18,173,134, 93, 93, 7, 93, 91,189, 54, -100,121,206, 34,237,253, 54, 52,101,124, 17,198,130,130,140,245,207,146, 42, 90,114,101,107,224, 77, 61, 39,167,247, 74,230,234, -219, 94,211,218, 38,227, 26, 89,223,139, 41,187, 60,213,116, 52,217, 20,216,125, 50,234,210, 83, 8, 75, 40,159,127,116,123,111, -248,244,148, 92,243,100,253,223,245,122,127,239, 90,253,120,240,187,172, 29,122,215, 94,207,134,111, 44,230,164, 36,153,155,134, -144, 60,173, 52, 52,218,144, 43, 33, 45, 19,203, 27,149, 2, 22, 24,114,230,148, 18,119,106,116,131, 77, 32,132, 36, 10, 48, 33, - 35,173,161,233, 58,178,212,133,140, 97, 52, 57,197,210, 36, 42, 81, 50,235, 41, 40, 76, 36,145,133, 64,145, 25, 70,135,212,130, -113, 61, 16,157,135,152,104,164, 38,133,128,212, 18,124, 68, 24, 69,172, 51,110, 41, 51, 62,100,198,232,200, 41,225, 83, 68, 85, -253,253, 54,184, 98, 73, 26, 61,107,231, 56,110, 91, 54, 87,219,178,241,220,184,223,128,127,163, 7,168,126,176,115, 57,132,227, -167, 66, 29, 83, 9, 37,152,110,138,135, 7,214, 33,209,238, 81,159, 35,213,219,238, 68, 70, 65,215,195,178,144,127,126,241, 31, -254, 26, 63,251,247,126, 26,107, 13,171,237,192,213,197,142,171,119, 46,137, 41,163, 26, 77, 12, 17,239, 60,182,233,152, 47,122, -180,208,104, 97,144,141,194,214,113,105, 78, 5, 54,223,121,207,224, 3,195, 16,185, 28, 6,238, 95,172,216,238, 70,220,206,177, -217, 57, 86, 23, 23,236, 86, 27,114,242, 4,225,233,218, 6,211, 25,148, 82, 52,125,135,247,174, 54, 71,153,209, 5, 66,130, 76, - 70, 41,141,247, 99,185,249,167,200,224,118, 72, 36, 99,204,196, 16,112, 33, 32, 19,120, 95, 46,122,214, 26,164, 82, 12,219, 29, -237,220,226, 93, 68,106,139, 54, 18,211, 88,178, 47,198, 69,227,152,104,172, 38,102,232, 26, 67,170, 70, 70, 25,129, 86,154,163, -206, 50,107, 20,111, 94, 12,197,173,110,222,178, 25, 2,227,118,131, 27, 6,114,200, 36, 41,120,233,229,187,156,156,221,226,223, -254,233,255,123,176,115, 63,134,220,205,216, 58,135, 85,223,191,156,234, 7, 10, 93,189,244, 77, 14, 90,211,248, 71, 83,138,248, -196,241,152, 8, 75, 91, 87,153,198,149, 56,102,108,233,170,115,117, 33, 52,242,193,194,254, 97, 7,226,163,164,101,239, 87,160, -223,239, 2,192,161,173,241,251, 4, 55, 77, 36,190,195, 56,225,105, 68,160,229, 62, 76, 73, 29,252,158, 48,197,143,125, 62,135, -229,156,103,231, 61, 95, 60,157,113,199, 26,238, 52,150, 99,149,105, 51,220,167,186,130,229, 10,243,250, 88,216,244,155, 29, 92, - 92,193,197, 10,222, 57,135,221, 21,220,187, 40,138, 21, 95,231,198,203, 57,116,182, 56, 32,246, 51, 26,213,176,108,150, 88,163, -209, 90,161,132,102,222, 54,156,206, 52,243, 86,115,107, 97, 56,157, 25, 58,163, 88,106, 65,171,196,117,152,156,212, 16, 92,100, -112, 35,164,204,112, 85, 52,253,121,231,136,187, 1,157, 32,197,132,210, 22,221,119, 24,221, 96,186,242,115,178,160, 93,180, 4, -151,200, 6,172, 46,238,137, 82, 10,132,144,228, 92, 8,212,185, 74,100, 75,100,121,172, 1,118, 5,193,141, 41,225, 40,242, 59, - 41,139,171,103,202,153, 31, 62, 94,242,134, 27,137, 33,150,139,162, 82,123,155, 87, 33,106, 86,123,141, 36,213,166, 32, 41,209, - 23,162, 27, 53, 73, 45,248, 82,108,141, 41,235,210,135,242,113,162, 42, 12,130, 43,191,214,162,204,225,117,165,197,171,106, 94, -211,217,162, 22,162, 94, 24,162,171, 94, 38,234,192,190,117,202,218,144,149, 60, 39, 31,140,155,126, 82,208, 77,195,123, 4,107, - 85, 25,114,184,198, 63,122, 81,175,217,214,232,174,124,179,141,133,182, 45,100, 8, 93,216,202, 66, 10,172,178, 69, 38, 6,248, - 28, 81, 8,114,206,136, 92, 10,231, 82,137, 98, 9, 91,195,221,149,177,184,148,104,178, 36, 40, 73, 86, 6,169, 53, 65, 22,141, -114,204, 5,186,153, 76, 15,144,146, 44,192,199, 88,158,169,139,236,182, 91,116,134, 97,181,194,185, 1,157, 18,109,130, 93,112, - 36, 81,100,115,187,156, 80,185,104, 40, 99, 42, 8, 66,164, 72, 44, 38, 19,126, 23, 2, 62,122,172,182,184, 24,112, 49, 96,132, -228,254,110, 44,208,112,240, 48,248,239,157, 95,244,199, 38, 53, 29,192,228,135, 80,250,161, 51,216,225,143,215,142, 75,122,191, - 24, 14,255,254,251,125, 14, 45, 31,180,185,109,116,133, 53, 3,255,232,191,251,199,124,249,239,254, 56, 66, 10, 54,187, 66, 86, - 27,182, 3,126, 24,201, 72,114, 44,207,217,152,150,174,233, 88,118, 45,243,206, 98,149,162, 81,138,163,185, 65, 74,216,140,137, -139,157, 99,181, 25, 89,173, 70, 46, 87, 27, 46,175,182,172, 47, 55,108,174, 54,184,193,179,189,218,144,114, 68, 91, 73,215,105, -206, 78, 79,233,230, 45,177,118,118, 66, 64, 59,111, 57, 57, 91,114,116,180,164,157,245,204,231,109,153, 26, 12, 1,173, 53, 82, -105, 98, 8, 12,110,192,104, 67, 72,133,149, 47,201,104, 83,102,143, 46, 56,146,143, 8,138, 89, 70, 99, 53, 57,129,181, 13,218, - 74, 36, 26,219,107,132, 79, 56, 37,233,181, 70, 72, 65,240, 48,239, 20, 86,203,234,107, 81,160,206,222, 42,146,144,172,118,129, -227, 70,113,231,236,152,171,144,185,255,238, 91,144, 50,209, 39,146, 16,188,240,242, 93,222,220, 57,222,249,214,183,247,108,233, -143, 4,193,235,125,231, 8,223,223,162,174,171, 4, 72,176,119,239,210, 53,230,178,111,202, 33, 89, 52,172, 7,116, 99, 81,214, - 80, 78,229,224, 53, 77, 37,140, 86,222,134,154,172, 56,217, 67,159,143,114,226, 58, 52, 96,202,249,209, 28,148,235, 51, 81, 62, -136, 2,168,131, 75,132,170,249,217, 15,195,154,178,146,159,174, 61, 33,234, 97,207,164,104,169,123, 37, 86, 71, 52, 59, 43,185, - 24,198,150, 70,168,111,249,212,188, 71,137,204,204, 88, 82,246, 52, 82, 35, 85,226,237,161,100, 93, 20, 31, 12, 15,155, 17,214, - 99,201,143,184,218, 20,121,213,184,171, 69, 63,236,207,227,163, 57, 52, 6,161, 53, 89,107,110,206,102,156,205,110, 16,210,200, -113,115,132,209, 22,169, 5, 51, 93,236,143,159, 59,110, 57,158, 91,140,148, 28,155, 34,101,235,141, 66, 2,214, 8,198,173, 39, -164, 76, 10, 17,191,243,132,237,142, 52, 56,198, 97, 68,134, 88,209, 77,176,179, 35,162,177, 36,219, 32,109,131,182,229,204,110, -109,233,198, 91,107,241,201,151, 44,246,144, 48, 74, 21, 46, 19,144, 66, 32,167, 72, 8,190,102, 71, 21, 62, 66, 8, 1, 41, 36, - 46, 38,100,149, 52,134,156, 80,202,240,218,110, 75,206,133,100, 25, 99,220, 39, 82,198,253, 24, 5, 68, 33, 26,250, 58, 7, 23, -170, 92, 18,109, 83, 81,230,118,127,182,249,176, 39,186,201,138, 22, 73, 91,160,121, 79, 33,197, 37, 15,186, 50,218, 85,157,161, - 79,219, 48,109,235,252,190, 94, 68,115,101,243, 78,113,197, 70,236, 35, 90, 39, 39,184, 84, 77,104,158, 40,116,105,154,229,203, -247, 94, 80, 31,171,168,203, 26, 61,215,232,253, 28,204, 40,140, 49, 44,218, 2,187, 47, 77,143, 39,160,165,194, 5, 71,163, 44, - 46,249, 50, 43,215, 18,153, 18, 67, 10, 52, 74, 32, 16,180,218, 84, 41, 69,177, 50,148,202, 64,215,147,148,169, 4, 69, 65,174, - 10,176,156, 19, 89, 9,156,243, 36, 4,113, 44,249,217, 97,220,161,115, 34,143,174, 4,105, 92,173,200,162,232,209,149, 44, 76, -247, 40,192,202,140,143,153, 4,168, 92,179,215,115, 66, 10, 69, 8, 14, 41, 36, 57, 11, 16,146, 49, 12, 40, 33, 42, 11, 62,178, -114,190,220, 18,165,132,203, 45, 79, 53,128,224, 73,110,111,239, 55,163, 63,156,135, 79, 29,199,244,107,127,208,173, 79,139,225, - 48, 4,230, 3, 47, 10,245,192,189, 38,210, 37,126,227,191,249,175,248,209,159,248, 17, 66,202,108, 54, 35,187,173, 99,125,185, -197, 13, 1, 33, 53,255,226,143,255,128,119,223, 57,231,135, 63,253,105, 22,221,156,190,109, 49, 70, 49,111,123,158,191,187,228, -185,211, 25,173,149,196, 12, 87, 99,145,164, 93, 94, 14,236,134,145,113, 40,196,183, 68, 34,134,140,180,144,146,231,228,228,152, - 91,183, 79, 56,154,247,244,199, 29,179,101, 83, 58,145,197,140,174,181,156, 30,207,120,249,165, 27,116,179,134,101,107, 56, 58, -233, 11, 60,158, 18,253,172,229,232,104,198,209,217, 12, 55,122,198,113,192, 42, 77, 74,169, 92,242, 83,113,170, 75, 33, 21, 84, - 47,103,140,153,149,176, 10,153, 11,226, 36, 20,136,140,115,158,119,222,190,224,237, 55,222,229,106, 53,224, 83, 38,136,204,209, -172,225,116, 97,136, 49,179,113,153,182,209, 24, 45, 9,185,232,106, 82, 12,156, 44, 13, 74,181,172,119,153,205,230, 28,211, 52, -108,215, 91,186,174,229,243,159,255, 33,254,229, 63,255,221,131, 46,189, 50,119, 77,133,173,229, 65,183,152, 14,224,121,165,190, -255, 69,125,234, 92,197,193,148, 32, 79,197, 91,149,116,191,147,101, 41,242, 70,213,228,190,218,137,231,202,172,159, 58, 41, 57, - 29,176,149,215,225,253, 30,178,140,241,195,179,230,167,162,124, 8,161,127, 80, 81, 79, 15,117,234, 83,246,245,117,114, 76,189, - 68, 60, 28,190, 49,217, 49, 43,246,182,207,141, 41,228, 45,219,195,141, 19, 56, 62, 46, 68, 64, 91,207, 73,219, 66, 95,212, 39, -243,198,114,167,147, 44,148,193,103, 95,145,118,141,206,153, 83, 5,175, 93,108, 97,189, 43,251,107, 51,192,246,162, 64,239,163, -175, 73,145, 60,232,224,135, 42,235, 98,209, 35, 90, 67,163, 45,103,221, 17,173, 50,156,204, 78, 24,220, 64,163, 20,198, 52, 44, -187,150,103,142, 59,218,185,161,183,146,165, 41, 16,247, 92, 74,148, 20, 52,178,176,222,165, 20,236, 86, 14, 23, 60,195,213,134, -205,214, 49,120,199,214,121, 6,169, 25,141,197,156,156,225,108,139,154,117,228,166, 37,117, 22,165, 53,170, 83, 4,169, 42, 87, - 2, 68, 46, 36, 89,109, 4,110, 12,229,222,153, 50, 41, 70,114,202, 40,169, 74,209,206, 16,146, 32, 2,161,252, 69, 66,206,132, - 24,105, 85,203, 16, 35, 89,150,224, 18, 7,133,111, 21, 42,249, 55, 86,168, 61, 76, 5,180,114, 52, 76,253, 51,165,247, 73,103, -162,194,235,218, 20,251,221,209,237, 17,150,237,118,191,246, 38,235, 87,106, 55, 62, 93,152, 51,133,148, 39, 42,193,120, 74, 43, -204,106,210,204,213,200,214,184, 39,203, 77,232,231, 97,163,244,164,208,187,156, 28, 40,167, 53, 28,222, 3,193,127,188,153,186, -168, 80,159, 85,213,160, 62, 35, 91,203,210, 22,155,193,148, 18,141,148,236,188,163,179, 45, 57, 7, 20,162, 24, 20,196,136, 20, - 25,133,192,133,132,210, 26, 89, 18, 1,208, 82,145,149, 70,154, 14, 45, 21,194, 20,232, 93, 40, 81,185, 35, 69,170, 22, 98, 34, -231, 2,153,198,156,241,187, 21,126,181, 34, 12,142,148, 2,140, 59,178, 20, 52, 66,213,247, 81,128, 44,198, 10, 8,139, 34,151, - 46,159,140, 76, 25,169, 21, 49, 59,188, 80,197, 9, 79, 21,205, 37, 66, 16, 83, 36,231,204,214, 7,146,148,120, 41,201,209, 23, -104, 44,135,167,151, 3,156,158,194,225,122, 8, 49, 30,118,233,106, 10, 54,168,238,117, 66, 92, 91,232, 62, 80,196, 15, 97,202, -135,255, 51, 21,110, 55,250,154, 25,255,219,255,227,127,203,103,191,244, 67, 92,173, 71, 54,235,129,213,197,154,148, 5, 74, 42, - 84,107,144, 82,240,202,157, 23,249,230,171,175,146,183,129,231,238,222, 45,145,186, 73,208, 26,195,209,204,160, 43,187,125,187, -243,108,182, 35,187,109, 96,179,219,177, 93, 13,108,215, 35,227,206, 21,196, 71,102,194,224,153, 45,123,218,206,210,116, 37, 41, - 74, 27, 69,215,106,150, 71, 29, 71,203,134,227,147,142,211,101, 87,235, 76, 70, 40, 65,219,232,107,216,207,206, 12,183,110,204, -217,236, 28,141, 53,164, 24, 73, 89, 16,146, 39, 71,129, 79, 1,171,245,181,242, 65, 43, 69, 22, 1,173, 5,198, 42,114, 76,172, - 55, 87,188,251,246, 61,190,249,173,111,241,246,189,123,228,112,194, 91,239,188,197,159,126,237,235,188,253,250, 57,175,223,119, -108,178, 36,250,132,209, 2, 45, 4,179, 70,145,144,164, 44, 88,111,182, 40, 45,240, 94,208,205,122,238,223,187,143, 54, 6,101, - 20,155,213,142,211,103,142,249,161, 31,253, 2,127,244,127,253, 43,246,246,177,178, 22,109,189,191,249,139,135,138,247,148, 8, -246,253,236,210,101, 13,114,158, 12,105,186,166, 88,155,202, 50,234, 98, 57, 43,135,175,150, 48, 4,104,106,252,100,161, 32,215, -206,190,126,142, 48,148,143,203, 31,115,246, 56, 17,133,166, 3, 46,231,247,118,237,239,167, 48,121, 95,248,253, 96, 46,254, 65, -170,148,154, 33,129,109,144,207,222,166,187,115, 27,223, 26,154,231,239,194,209, 17,185,179,176, 92,148, 75, 75,219, 86, 8,190, -224,218,109,163,184, 99, 13, 89,148,144,148,153,180,196,228,232,114,102,244, 35,223,121,103, 5,235, 45,172,214, 69,165, 50,214, -174,157, 15,136, 59,158,183,112, 60, 3,173, 17, 89, 48, 95, 44, 48, 18,230,166,167, 51, 22,171, 91,250,166,101,222,180,156, 29, -181, 52,109,153,165,207, 91, 93,117,233, 25, 35, 36,173, 46,170,141, 20, 34, 97,240,116, 22,214,219,200,102, 53,176, 14,130,181, -208,140,237,130,173, 49,168,126, 78,104, 90,152,207, 8,214,208,245,229,188,110,122,139,208, 6,137, 2,161, 11, 74, 39, 36,126, -140, 68, 23,145, 58, 17,171,127,134,172,218,251, 12,136, 84, 26,174,152,203, 94,156,124, 66,114,245, 24,145, 90,178,245, 14,159, - 35, 57, 73, 86,222,145,195,193, 37,110, 74, 41,203, 83, 84,111,229,253,200,154,138, 54,249,146,200,122,145, 84, 21,154,207, 19, -131, 93,149, 61,213, 53,251,172,245,201,106, 54,184, 66,138,147,169,102,213,223, 42,163, 14, 83, 59,125, 65,105,114, 69, 40,144, -189,154, 52,241,182, 94, 48,235, 91, 55,233,231,159, 70, 19, 56,201, 74,165,126,176,210, 63,180, 94, 63,222, 76, 61,197,242, 64, -250,190,108,192,166, 72,219,140,144,180, 66, 35,117, 33, 59,204,108, 91,152,199,128, 86,250,186,227,141,117,163,105, 33,200, 34, - 35,181,166, 81,229,176,210, 82,161,108,131,208,117, 6, 83, 97,246,156, 33,107, 73, 16,133,185, 78,206, 36,191, 35, 58,135,173, - 49,151, 54,130,202, 69, 83,169,100,137,122, 53,186, 41, 35, 19, 99,105,148,197, 42, 89,200, 24, 33, 34,201, 36, 37, 25,221,128, -150,138,157, 47,238, 95, 69,108, 86, 72, 30, 84,205,186, 32,179,137,177,248,133, 79,190,240, 62,214,195, 85, 60, 26, 22,252, 94, -100, 78,127, 80,183, 62,253,155, 83,161,158, 76, 60,168,112, 97,245,103,102,116, 15,126, 93,239,215,165,191,223,204,189,126,175, -255,244,127,250,103,124,250,243,159, 96,189, 30, 73, 49,226,199,186, 17,115,198, 13,142,236, 51, 82,106,218,166,229,243,159,126, -133, 23,158,123, 14, 66,145,192, 44, 22, 45,199, 39, 61,189, 53, 37,216,200, 71, 46, 86,158,213,214,115,181, 29,217,108, 11,219, -118,216,248, 98,235, 43, 50, 74, 26,186,182, 65, 73,141,109, 53,243, 69,135,212, 69, 54, 54,235, 44,243, 70,179,104, 45,173,214, - 88,163,144,162, 16,216,250,198, 96,132,160,107, 45, 93,163,177, 82, 18, 98, 98,183,246, 88, 93,180,180, 41, 70, 82,200, 37,164, - 66, 89,150,139, 14, 55, 56,208,138, 93,220,210, 74,193, 56,236,248,235, 55,223,224, 27,175,189,137,115,130, 69,119, 74,202,146, -174,189,205,167,190,248, 57,140,232,145, 33, 51,140, 27,190,246,221,111,242,187,127,242, 85,126,255,207,254,156,215,190,253, 6, -139,155, 55,121,246,230,172,192,138, 62, 17,114, 96,240,137,243, 33,112,121,190, 41,132, 66,183, 37,230,178,158,118, 59,199,237, - 23,111, 50, 34,248,238, 95,252,101, 41,228, 90, 87,139, 74, 14, 32,121,177, 55, 47,250,155,122, 77,136, 65,174,157,205,209,178, -204, 43,115,101, 15, 55, 13,180,245, 18, 98,106, 71, 62,133, 8, 81,101, 94,162, 30,176, 57,215, 61,149,246,100,177,143,178,111, - 30, 62,224,166, 78, 61, 61,162,160, 95,255, 61,249,232,207,251,190,204,119, 3,243, 99,110,188,242, 9,126,248,246, 29,190,253, -181,191, 68,157, 29, 97,206,110,115, 98, 12, 27,219,151,238,124, 54, 47, 5,162,105,234,104, 66, 50,102,193, 12, 74,151,156, 18, -131, 27,145, 49,114,127,183,225,254,118,203,187,111, 92,130, 91,151, 46, 48,184, 71,191,183,198, 22,248,184,235,160,179, 8,171, -104,141,229, 70,183,224,164, 91,128, 16, 44,154,158,152, 50,243,217,156, 89,103, 48,189,229,120,102,174, 57,138,157, 81,104, 45, -208, 82, 48,207,165, 46,249, 16, 89,173, 3,110, 72, 92, 37, 73,150,134,119,101,135, 71, 34,186, 35,180,106, 80,182,193,152, 6, -219,245, 88,163,176,189, 98,244,133, 79, 33,148, 98, 76, 25,159, 5, 57, 39, 92,134,232,227, 53, 7, 69,146, 10, 89,174, 18, 34, -179, 20, 72, 41,138, 71, 72, 44,235, 33,231, 72,111, 90, 20, 10,153, 18, 46,197,194,127, 9,129,148, 51,126,234,188, 75,128, 67, - 69,125,234,154, 17,236,139,182,210,101, 77,181,213, 57,179,179,229,158, 28,235,154,149,170, 20,126,165, 10,107, 94,202, 2, 3, - 52, 85,195,158, 37,184,109,121,198,119,110,208,156, 29,163,250,134, 72, 53,230, 26,134,253, 40,114, 28, 10,223, 44, 85, 19,175, - 92,247,166,148,251, 11,166, 60,224,155, 60, 41,178,251,136, 46,253,227, 23,245,105,227,236,226,245, 77, 56, 91,195, 38, 68, 78, -251, 89, 97,192, 43,137,150, 26,159, 3,173,178,236,130, 43,146, 77, 33,137,169, 20, 0, 45, 96,222, 90,178,200,104,101, 48,218, -146, 84, 49,143,209,182, 33, 27,133, 20, 5, 34, 79, 90,144,124, 42,186,116, 9,195,232, 72, 34,209,110, 86,140,163,195, 8,129, -161, 28,204,198, 40,230, 82,146,234,173, 75, 26, 75,175, 13, 66,168, 66, 48,205, 25,165, 37,129,196, 38, 4, 58,165,217,166, 29, - 99, 40,183,185,109, 8,200, 20,113,201,177, 75,197,168, 38,196, 64,204,137,171,177,134, 11,140,190,220, 0,121,136, 96,118, 88, -200, 31,158,121,124,148,228,166,199,133,225, 15,217,235,135,240,250,196, 70, 57,212,211, 78, 48,210,225, 60,253,240,224,123,224, -123, 50,176,163, 0, 0, 32, 0, 73, 68, 65, 84,115,164,189,222, 83, 38,248,220, 23,249,103,255,253, 63,225,211,159,121,158,221, - 24, 73, 49,177,219, 56,164,148,104,173, 8, 46,224, 6,143,214,154,228, 19, 90, 27,218,166,132,237,100, 47, 88, 44, 91,238,156, -206, 57,154,183,180, 86,147, 82,102,179,173, 5,125, 28,217,237, 60,209, 21,166,188,146, 18,221, 72,154,214,150,204,230,222,114, -122, 54,199, 52,134,174,211,116,173, 98,217, 55,180, 70, 23,251, 86,171, 80,170,216, 65, 42, 41, 74,144,146, 16, 52, 74,161,180, -160,109,202,218, 72,128,214,138,221,232,203,104, 50,102, 98,246,164,144,241, 62,150, 28,247, 52,178,176, 13,243,126,198,253,213, -134,251,235,129,147,238, 22,183, 78,239,114, 60, 63, 99, 27, 50,175,159,191,198,215,223,254,255,184,120,253, 93,222,125,247, 91, - 52,218,224,162,103,227,182,133,212,233, 19,111, 93,173,184,247,250,134,175,191, 49,114, 30,203,220,178,213,162,192,156, 72, 98, - 18,196, 44,216, 92, 92,177,186, 56, 39,231,116,205,156,127,229, 51, 47,243,175,254,197,239,213, 53, 38,139,215,192,195,228,185, -148,254,102,139,186,148, 92, 7, 14, 40,138, 76,200,214, 20, 55,226, 30,134, 55,166,116,234,145,194, 70, 86,213,152,101,242,224, - 14,110,111,179, 58,249, 55,124, 20,168,242,208,233,112, 26, 33, 61, 60, 83,127,148, 3,226, 7, 21,246,135, 47, 2,147,243, 91, -215,193,236, 4, 94,121,158,159,121,238,121,250,254, 6,183, 94,254, 52,179,179, 51,190,112,242, 28,255, 38, 9,100, 63, 47, 35, - 60,211, 66,183, 4,219,178,180, 13,163,105,120, 70, 41,206,133,228,118,142,136,228,233, 1,233, 70, 24, 29,127,248,237,243, 82, -208,183, 97, 63, 51,127,228, 25, 44, 96, 62, 43,207, 91, 73,116,215,209, 41, 77,171, 13,141,180,204,236, 2,165, 36, 77,219, 50, -239,123,148, 81,180,141,166,239, 53, 86, 23,189,122, 57, 11, 4,115, 9,207, 14,130,185,147,156,135,192,189,181,227,124,204,140, - 89,178,217, 70, 92,130, 17,129,145, 2,221, 25,154,121,135, 54,154,153, 81, 72, 83,116,226,178,178,177, 99, 76, 24,163,113, 57, - 19, 82, 38,250,226,200, 72,206,252,255,196,189,105,143,100, 89,122,223,247, 59,219,221, 34, 34, 35,183, 90,123,157,238,153,238, -153,158,149,228,144,179,144,166,104,120,100,137,180, 32,201,162, 12,193,134, 97, 24,134, 13, 88,111,253, 9,244, 73,252,206, 48, -224, 55,130, 0, 3,150, 44,195, 16, 8,129, 34, 9,209,195,197,163, 25,206,210, 51,189, 86, 87, 85, 86, 85,102, 70,196, 93,206, -234, 23,231,220,140,172,154,154,149, 51,102, 2,133,206,174,206,234,138,136,123,239,121,158,231,255,252,151,228, 35, 9, 89, 12, -110, 60, 41, 41,164,150, 8,161, 80, 36, 98,146,196, 20,209, 82,150, 59, 39,226,136,136, 40,217, 20, 82,154, 75,146, 84,242, 24, - 50, 99,189, 92,239,144,178, 27,206,140, 28,201,217,174,178,236,186, 67, 89,205, 76,229, 62,104,171,178, 35,175,138, 29,111,217, -191, 27, 85,238, 99, 83, 28,232,138,163, 92,101, 8, 77, 69, 24,166, 76, 92,156,166,108,208,100, 10,212, 95,215,121,143,222,180, - 89,233,160, 18, 52,203,146, 98, 90,216,244,198,228, 95, 84,217,159,225,106,199,254, 51,162,107, 79,153, 64,205, 60,167, 37,167, -191,245, 25,250,119,238,253,156, 69, 61,148,142,218,134, 43,198,173,234, 26, 98,140,172,234, 38,239, 37, 83, 96, 97, 58,156,183, -153, 9, 95,170,137, 86, 57,142, 47, 23,118,141,198,160,181, 34,206,246,130,166, 34,136, 12,125,250,148,167,233,148, 98,182,116, - 77, 96,221,148,189,159, 99, 68, 90, 71,155, 66,209, 3, 43,144,217, 0, 36, 20,153, 81, 43, 21,149,169,152,164,192,200, 60,249, - 67, 98, 12, 62,243, 96,100,162,119, 3, 83, 76,196, 24,153, 98, 32,132,132,141,150, 62, 70, 76,138, 76,209, 51,134,192, 16, 2, -202, 72,236, 80,144,138, 84,178,117, 67,202,123,173,217, 60,227,122,227,243, 60,210,206,143, 43,236,241,175, 49, 49,137,178,195, -153, 95,135,247, 69,255,250,188,235, 23,159, 62,208,174, 31,124,115,131,162,203,205, 92,138,124,247, 27,191,206, 63,253,253,223, -229,213, 87,110,176,157, 44,206,102, 66,141,181, 33,155,196,184,128, 27, 61,206,122,188,139,153,232, 41, 43,110,223, 62, 98,217, -214,220, 57, 57,224, 83, 47, 31,113,247,176, 99,213, 86, 24, 35,241, 46,107,206,123,231,217,246, 19,211,224, 8, 4,170, 90,114, -124,208,113,120,188,100,213, 54,180,139,154,170,169, 88, 46, 27,218, 54,103,149, 47,154,108, 65, 89, 75, 73, 91,101, 98,150, 20, -100,199, 58,178, 44,199,199,116,245,207,148, 18, 74, 73, 92,202,122,220, 36, 4, 55,110, 46,104,186,134, 36, 53,253, 48,224,220, -136,212,146,187,119, 94,198,232, 21, 62,118,172,218, 99, 22,102,137,199,210, 79,151,188,247,248, 61,254,223,143,126,192,187,247, - 31,209, 15, 35,247,238,221,227,131,113,203, 73, 91,113,105,123, 98,176, 24, 41,176, 62,112,208,180, 28, 47,150,132,221,200,238, -177,231,157,119, 31,240,120, 28,240, 94,224, 37, 56, 23, 48, 90,242,240,163,135, 36,161,184,127,118,159,182,174,112,253, 68,187, -236, 88,159, 28,243,221,111,253,160,200,111, 74,150,121,186,122,170, 51,145,231,111,226,235, 11,159,132,143,206,246, 89,213, 93, - 57,184,116,225, 91,164,184, 55,174,145,101,234,105,230,103,164,202,174,134, 37,116,228,106, 29,180,219,100,114,211,245,103, 67, - 21, 11, 86,165,139,135,118,120, 26,141,146,215,166, 21,249, 12,249,109, 46,242,215, 73,162,215, 81,172,231,173,170, 4,249,253, -164,107, 13,133,169,242,158,188,238,224,228, 24, 78,143, 57, 61,121,129,170, 94,160,214, 71, 44,186, 53,178, 90, 50, 24,195, 74, - 26, 30, 8, 9,205,138,165,174,248,120,189,224,139,221,146, 94,213,124,177,169, 9,186,230,213, 74,209,187,145,102,154, 16,253, -200, 69, 63, 18,156,229,221,179,199,185,160,255,180,150,193, 85, 38, 41,179,168, 65,231,251,249,184,109, 57, 48, 45,135,221, 10, -173, 53,181,106,105,154, 6,105, 26,132,145, 28, 29, 54,212, 38,123, 64, 84,149,196,250, 64, 83, 41, 54, 54,176, 35,112,223, 89, - 30, 91, 71,232, 35,155, 33, 48,133,196,214,131,143,129,160, 52,149,150,212,117, 69, 85, 86, 83,149,206, 69, 84, 75,208, 85,222, - 97, 71, 37, 81, 41, 18, 18,244, 54,159,179,169,164, 60, 75, 41,179,147,238, 24,144, 74, 35, 34, 8,153,175,107, 76, 16, 9,120, - 60, 85,146,196, 96, 73, 34, 19,172, 31,185, 33,155, 28,134,148, 67,107, 36, 56,239,247, 92,142,124,216,228,243, 42,196, 61, 12, - 62, 35, 90, 41,229, 34, 77,218,123, 31,204, 16,126, 73,176,203,135, 74, 93,172, 96,155,252,123,166,202,223,155, 18, 29,237, 3, - 60,217,230,130,158,128,182,219, 19, 73,108,145,216,205, 8,147,174,243,253, 28,108, 81,166, 20,117,138, 44,197, 61,149,220,148, -168,178,244, 45,253, 53,247,237,193,210, 47,187,172,144,224,231,141, 94,245, 62,239, 22,188,133,113, 36,132, 37, 65, 64,239, 28, -139,170, 34,132,132, 19, 19, 66,234,171,152, 86, 23, 60,157,174,217, 57, 87,194, 95,242,244, 24, 72, 40, 41,137,192, 32, 2,141, - 82, 76, 50, 91,181,202, 36,136, 66, 34, 69,200, 77,127, 83,227,167,128, 84,134,169,105, 88, 41,137, 68, 96,129, 6,129, 39, 17, -241,212, 42,199, 52, 70, 60,141,212,108,253, 72, 74, 25,206,247, 5, 98,151, 82, 93,173,248, 34,137,232, 92,113,226,206,222,238, - 54,134,210, 0, 10, 90, 45,217,217, 80,172, 93, 21, 76,133,120,209,212,121, 10,121, 38,132,226, 41,232,123, 46,164,115,218,217, - 47,210,204,255,250, 62,252,122, 99,161,245, 62,160, 0,160, 57,129,221,195,189,139,157, 46,176,174, 44, 7,153,245, 79,191,174, - 57, 20,102,178,168, 47,126,145,255,241, 31,255, 46,183,110, 29,211, 91,135, 31, 61,206, 39,198,126,194,109, 39,188,145, 89, 87, -238, 28,166,174,233,218,142,174,109,185,113,178,230,112,209,112,220, 54, 28, 30,212, 84,198,224, 17,232, 4, 33,228, 6,175,173, - 53,245,168, 88, 24, 67,106, 34, 82, 24,186, 78,113,184,108, 56,232, 42,170, 42,223, 23,143,183, 83, 38,186, 10,129, 79, 9, 37, -196, 21,225, 73, 37, 24, 93,196,151, 38, 42,164,132, 15, 57,128, 66,144,208, 10, 34, 57, 37,106, 33, 12, 34,102, 78, 7, 73,178, - 88,100,120,116,220, 14,128,160, 94,156,114,121, 25,248,193,135,223,195, 37, 79,171, 12, 67,152, 24,253,196,197, 48, 50, 78,150, -139,209, 33,107,145,107,234,144, 96, 51,240,199, 37,142,164,171, 37,175, 30, 30,210,153,200,163,161,231,160,223,112, 99,169,177, -253,134, 16, 3, 15, 63,122,159,147,211,155, 44,215, 45, 71, 39, 43,142,150, 53,175,189,241, 49,254,236, 79,191,206,217,118,160, - 86,231,172,143, 15,120,116,239, 33, 47,188,246, 42, 44, 86,215,238,169, 6,252,144, 15, 16,255, 55,167,190,248,242,107,111,242, - 71,147,135,239,191, 95,228, 69,213,158,112, 38,202,247,190,248,197,171,178, 95, 79,117, 46,186,253, 46, 79,188,233,218, 1,182, -155,138,186, 34, 62, 69,144, 71,181, 80,207,200, 82,202,223,135,248,195, 58,243,164,159,150,246,120,255,252,103,172, 42,191,231, -125,222,253,247,219, 60, 81,167,107,140,104,231,243,239, 25,153,247,169, 55,215,121, 71,174,117,126,214, 23,199,124,242,228, 22, -232, 5, 13,138,164, 36, 71,109, 67,116,142,229,201, 9, 63,216,238,192, 77,156, 52, 29,199, 4, 30,122,248,213,229,154, 71,231, -231,188,209, 5,166,237, 19,190,149, 22,156,125,244, 4, 30,220,135,116, 93, 30,251, 51,156, 9,215, 87, 14,149,161,110,115,147, - 84,107,197,110, 26,169, 85,139,234,114, 51, 99, 67,160,211, 13,227, 20,193, 68, 78, 90,201,118, 8, 44, 59,205,217,214, 34, 36, -156, 91,143,177,158,225,194, 33, 82, 34,197,136,221,141,224, 5, 3,130, 86, 37,164, 49,180, 2,164, 20,200, 20,144, 8,132,203, -164, 82, 69, 64, 36,129, 10,185,216,134,148,168, 67,246,114, 8, 33,103,174, 11,153, 16, 73, 99,234,116, 69,171,240,110,142,185, - 78,153,199, 18, 21, 99, 24, 73, 72, 70, 63,224, 98, 66,167,196, 24, 2, 74, 64,171, 5, 27, 79,153,112,109,201, 97,151,215,140, -104, 10, 33, 83,139,189, 98,231,202,122, 88,194, 82, 61, 93,195, 18, 48, 21,109,250, 52, 27, 21,201,226,156, 90,238, 23, 89, 84, - 28,222,103,196,102,188, 78,208, 44, 50,205,249,114,212, 42,163, 83, 83,202,223, 55,203,226,102,167,247,168,130, 20, 16,171, 60, - 20,155,194, 9,208, 99,110, 22,254, 58,233,109,223,248,222, 95, 3,126,191,186,177, 34, 56,145, 59,117,109,168,171, 42, 59,168, -198, 72, 91, 25, 34,146, 74,202,236,170, 21, 34,181,174,112,193,210,152, 6, 37, 36,149,210, 24,153, 77,238, 43, 93,161,234,138, -170,174, 89, 29,174,243,218,195, 39, 98, 97, 54,134,152,163, 6,133,200,123, 32, 59,246, 28,232, 12,185, 10, 37,105,141, 38,200, -108, 21,216,153,154,136, 32,170,132, 84, 21, 3,145,182,105,114, 20, 38, 17, 97, 20, 46,192, 24, 29,117,221,112, 49, 58,108, 74, -136, 18,152,224,163, 39, 10,193, 24, 61, 62, 5, 42, 45, 56,159, 60,131,143, 25, 90,179,182, 72, 24, 10, 67, 86,215,249,230, 8, -101, 92, 84,197,107, 93,170, 61, 17, 67,166,253, 77, 38,197, 47,198,126,243, 58, 35,247,106,234, 41, 30,217,215, 39, 16, 31,224, -181,151,242,129,187,219,236,225,160, 84, 8,116,149,218, 19,152,230, 73,198, 21, 93,250, 39, 63,203,255,244,223,252,125,222,120, -229, 22,219,201,114,254,100,199,102, 51,144, 98, 66, 8,129,115,142,177,183,217,117,202, 71,218,166,227,244,198, 33, 55,142, 15, -184,181, 94,210, 40,157,225,240, 36, 24, 93, 98,103, 35,151,147,103,231, 60,155,237,196,102,176,236,172, 99,176,158,182, 82, 44, - 91, 67,215, 24, 26,147,239,157, 32, 4,181,145,116,181, 46,171, 89, 73,165, 36, 54,228,132,190,209, 7, 6, 31,136, 41, 49,249, -128, 43,228,153, 16, 83,118, 7,140,241, 74, 7, 79,177,165,204,134, 67,130, 85,173,185,232, 39, 36,112,180,108,232, 7,199,135, -247,222,225,223,189,243, 29,222,254,206, 7,220,127,231, 17, 31,220, 59,227,254, 59,143,120,244,131, 75,118,214,194,162,202, 16, -163,214,220, 94,118,156,222, 58, 64,174, 27,218,198,208,214, 13,151, 59,203,165,155,232, 83,226,114,178, 36, 2,147, 79, 52,166, -102,189, 62,101,177, 56, 98,185, 62,166, 58, 48,216,205,150,203,161,231,248,112,193,119,223,126,143,203,113,224,201, 56,176, 50, - 21, 70,107,218,174, 69, 25,248,224,131,179, 61,180, 28, 67,201,154,254,155,131,221,223,255,230, 95,101, 8, 82, 74,168,219, 92, - 89,175,152,227, 51,251,188,192,163,243,228,110,195,222,174,184,183, 25,134,119,236, 11, 90,138, 79,195,144, 66, 67, 91,158,157, -217,172,230, 89,119,184,121, 26,191,126, 30, 81,154, 3,127,173,248, 95, 73,151,100, 49, 39,161, 48,239,175,165,104,205,251,233, -122,149, 15,244,155,167,121,242, 58, 88,102, 79,246,118,149, 27,172,170,229,172, 90,240,198,106, 9, 70,163,144, 44, 5,168,174, -163, 50,146,203, 32,120,189,169,121,185,170,145,149,161,209,146, 49,192,205,197, 18, 45, 35, 74,213,220,172, 4,223,189,236,225, -252, 73,246,188,248, 73,123,252,231,125,117,217,205,147, 85, 11, 50,187, 23,118,218,100,166,123,179, 96,217,174, 80, 73, 97,234, - 26, 83,213,200, 90, 99,165, 36, 10,208,181, 34,144, 56, 27, 61,187,152,120,188,177, 52, 41,209,111, 39,130, 13, 92,156, 79,108, -138,137,147, 19, 49,135,170, 72, 56,212, 25,186, 87,228,218,134,183,172, 42,197,146,132,140,129,198, 36, 42,153, 57, 77,102, 12, - 44,140,192, 91,207,218, 72,140,204,126,244, 46, 38, 82,113,105, 75, 82, 96, 93, 86,184,120,103,145,210, 96,157,103, 8, 14, 65, -192, 71, 65,239, 7,124,153,166, 67, 74,140, 49,146, 82, 96,154,121, 65, 41,238, 67, 88,162,216,187, 18,218,130,166, 94, 31,172, -164,200,133, 54,201, 61, 50, 35,196, 30, 66,215,229, 92, 60, 92,228, 34,188, 94,228,169,186, 42, 1, 71, 77,125,205, 57, 80, 21, -179,174,148,163,185, 21,249,254, 81,229, 44,174,212,254, 60,158, 37,117,179,151, 68, 44, 36,202,170,202,175,111,190,150,166,161, -200,180,184, 10,181,255,105,214,182,207,221,228,206,190,180, 63,235,244,232,201,147,235,110,128,101,203,229, 56,209, 30, 24, 42, -173,242,123,149,121, 63,168, 0,173,178, 25,141, 86, 57,212, 66,154, 12,135, 68, 45, 89, 84, 13,222, 7, 24, 28, 71,235, 99, 98, - 76,180,117,205,214, 57, 68, 76,184,204,130, 64,106,133, 74, 16,123,203,186,233, 16,222, 33,149,166,149,217,112,163,142,142, 24, -115, 39, 86,215,154,201, 58, 60,176,208, 21,131,155, 64,231,189,102,239, 61, 19,160,117, 69, 31, 28,117,101,114,224,142,130,138, -132, 77, 33,195, 59, 17,140, 20,220,223, 77, 88,145, 88, 24,197,165,115,249,144,153,161,207,182,202,147,122,219,230,110,203,150, -174,173,160, 19,121,210,136, 57,179,215,164,189, 46,242, 23, 57,173,135, 31,227,152, 53,119,126,223,252, 22,212, 39,251,191, 55, - 20,226, 82,163,242,158, 73,213, 48,110,246,211, 79, 57, 52,255,251,255,252,107,124,226,213,219,124,244,232,156,243, 39, 3,227, -182,207,131,208,177,161, 63,223, 33,165,202, 82, 63, 64,169, 26,169, 53, 70, 27,214,109,131,136, 2, 76,158, 94,165,132,193,123, - 70,159, 3, 93,166, 41,224,188,203, 73,107, 62,178,106, 20,181,150, 24,149, 53,232,181,150, 4,159,211,247,124, 72, 87,207,164, -245, 1,169,100,182,246, 77, 17,231,178,193,140, 81,130, 90,102,235,225,193,103, 21,195,186, 49, 28,215,154, 39,222,161,162, 34, -164, 64,165, 20, 19, 2, 37, 35, 86, 36,162, 11,124,244,254, 19,222,122,233, 6,127,231, 87, 63,206, 7,175,221,225,243, 79,182, -108,207, 30,115,113,255, 62,255,230,222, 67,238, 95,236, 56, 62, 88,178,179, 83, 38,118, 93,244, 88,229,168, 94, 61,226,245,211, - 23, 0,201,232,122,142,154, 53,143,250,115,222,125,242, 17, 99,244,220, 89, 31,113,227,224,148, 23,143, 95,193, 52, 10,161, 36, - 93,183,128,148,208,169,195,138,158, 39, 31,124,200, 52, 90, 72,146,117,211,241,157, 71, 15,217,244, 59,186,229,130,113, 24,120, -235,205,143,243,199,127,244,151,133,195, 49, 75,169,228, 47, 75,163,246,156, 7, 92, 63,127,130,156,119,132,215,115,170,159, 82, -200,148,189,162,223,150,201,153, 12, 47, 87,250, 26, 23, 32,238, 51,218,159,125, 22, 26,253,244, 68, 42,126, 12, 74,117,253,229, - 94,127,173,243,189,174,100,137,227,140,251, 2,110,231,169,188, 20,253,102,193,167, 94, 57,229,155,125,226,173,227, 37,255, 97, -112,249, 16,215, 69,117, 80,215,249,185,111, 50,114,178,113,150,163,102,149,225,220,174,206,219,200, 36,249,204, 97, 71,140,137, -206,123,238,133,196, 75, 82,178,213,146,190,223,225,245, 1, 55, 87, 59, 52, 1,150, 7,112,120, 10, 15,166, 61, 82,240,211,126, -205, 70, 61,199,213,158,176, 15,180, 85, 77,165,178,106, 8, 33, 17,117, 13, 70,147, 42, 73, 31, 5,210, 38, 38, 13,187,173, 67, - 40,168, 98, 34,248, 64, 27, 2,143,135, 68,178, 30,119, 49, 50, 77, 14,225, 34,209, 7,164, 15,164, 41,178, 90,106, 84, 72, 24, -160, 85, 18,182, 30,161, 36, 85, 8,212, 74,113,128,160,237, 3,203,166,195, 74,129,104,243, 94, 60, 44, 20,151, 2, 6,159,152, - 72,104,163,216,141, 57,231, 67, 38,143,170, 27,252,118, 3, 66, 50,216,204,169, 48,218,144,130,163,213, 57,207,131,104,233, 84, - 94, 3,100, 87, 76,168,140,193,150,128,159, 43, 25, 89, 44,126,240,243,122,212,152,162, 8, 33,239,219,103, 7,195,186,228, 96, - 84,134, 43, 59, 87, 91,206,194,121,181, 97,212,158, 24,185,217,237, 99,136,107,179, 71,117,148,134,118,158,208,219,114,127,149, -123,202,135,125,202,219,108,136, 51, 27,210, 44,154,253,128,215,150,149,213,193, 34,251,159,136,226, 55,111,251, 34, 1,245,215, -182, 74,254,167, 6,115, 20,159,248,141,127,134,110,138,199,240,207,120,131, 93,193, 27, 2,140, 97, 20,130,163, 98, 25, 27, 82, -162,171,187, 76, 52,148, 25,182, 1,137, 81, 6,231, 45,139,170,197,152, 10,239, 29, 74,107,170,170, 66, 42,153,173, 61, 71,143, -119,129,152, 66,134,232,189,205,126, 3,198, 92, 73,213, 4,130, 78,105, 84,165,104,171,154, 88,188,182,149,202,190,193, 90, 41, -122, 60,190, 50, 56, 41,136, 82,224,203,244, 23,165,194,133, 84, 10,132,194,147, 24, 98, 68, 42, 65, 64, 49, 5, 71, 20, 96, 99, -196,123, 79, 4, 46,103, 59, 65, 55,199,244, 5, 24,124, 62,128, 76, 73, 65,211,114,207,190,212,213, 85,224, 12, 34,128,207,121, -200, 25,134,249, 5,234,220,159,149,160, 93,119,154,131,124,160,165,196,242,139,159,226,205, 79,127,146, 7,223,127,167, 4,107, - 20,214, 39,100,233, 76,244,229,192,200, 13,203, 87,255,209,239,241,197,175,124,150, 39, 23, 59,206, 30, 92, 48,141, 14, 33, 36, -139,163, 37, 82,192, 56, 58,148, 84,153,132, 40, 52,141,233, 88, 45, 23,220, 56, 92,177, 48, 6, 93, 73, 42, 45,179,172,176, 20, -228,201,122, 38,231,121,120, 57, 48, 12,150,144, 34, 93,173, 56, 57,104, 56, 89,214,116,149,166,174,179,129,139, 72, 96, 83, 68, -149,196,189, 90, 41, 92,202, 69, 62,165,132,143,145,169,172, 2,188, 15,153,171, 17, 2, 75,149, 77, 53,106, 9, 71,181, 64, 37, - 65, 91,107,140, 82, 28, 47,170,204, 50,247,217,184,232,171,119,143,185,191,245,124,251,189, 75,234,165,230,159,252,202, 43,188, -113, 99,141, 93,116,220,121,241, 5,110,117,135,252,173, 79,189,206, 73, 85,115,115,209,241,202,225, 1,111,223,127, 12,135, 13, - 55, 15, 14, 89, 54, 71,212,213,146,179,254, 12,235, 39,142, 22,167, 28,117, 71, 88, 59, 32,180,196,166,192,163,221, 37,253,180, -165, 51,154, 16, 18,170,170,105, 79,142, 88,159,172,121,244,209,123,220,127,248,144,179,237, 37,141, 82,216,232, 57,219,141, 28, -183, 53,218,212,172, 78,143, 56,239, 39, 30,199, 2,225, 45,234, 60, 57,110,182,240,242,139,121,215,187,219,254,116,132,178, 89, -226,248, 60,255,105, 93, 12, 83, 84, 93, 10,118,169, 20, 17,126,200,217,238,106,197, 83,149,123, 59, 93, 13,231, 87,171, 32, 81, -216,193,241,218, 58, 71,183, 69,195, 92, 98,140, 99, 40,207,197,143, 32,179, 25, 83,140, 61,194, 62, 6,152,244,252, 41,253, 89, - 7,184,249, 25, 48,229, 92,155, 9,125,130, 12,115,170, 98,164, 21,129,213, 33,191,243,137,187,208, 45,248,212,233, 1,163, 50, -124,108,125,204, 3, 93, 19, 40, 36, 40, 53, 59,226,105,106,165,184, 45, 13,171,186,197,106, 77, 40,159,109, 15, 8, 31,185,211, - 42, 30, 76,129, 35,165,121,140,228, 52, 70, 70,173, 57,145,130, 71,187,137,202, 40,190,179,221, 16,182, 27,112,187, 44, 95,155, -157, 27,137, 63,217, 29, 80,138,252,218,219,114,173,180,166,174, 52, 71, 85,203,141,118, 77, 83,119,232,182, 35,233,138,164,103, - 99, 26,137,175, 52, 91, 31, 25,109, 98, 40,124,150,201, 5,122, 23,176,189,195, 59,207,110,211, 51,238,118,216, 97,196, 13, 3, - 79, 54, 23,248, 48,176, 10,129, 54,122, 26,111,105,132,162,149,130, 54, 37,148, 11,168, 16, 80,253,150,195, 32,104,156,227, 80, - 36, 78,132,164, 78,176,144,146,227,153,188, 22, 18,163,205, 38,100, 81,130, 39, 27,205, 88,114, 38, 67,116, 83, 1, 99, 2,181, -132,173,179,212, 90,161, 99, 65, 85,147, 96, 91, 84, 34, 50, 37,166, 48,171, 38,202,125,161,138,124,208,198,124, 47,135, 82,228, -141,218,123,186,171, 98, 35,107,202,218,104,110, 78,187, 54,159,233,203, 54, 23, 86, 93, 96,117,235, 11,217,173,144,186, 42,185, -135,252, 83,122, 70,217, 81, 10,249,220, 44,198,107,164,198,114, 6,102,120,158,125,112,207, 12,205,147,114, 3,217, 85, 5, 61, - 48, 37,168,166,202,182,236,198,228, 65,108,158,226,141,250,177,104,175,166, 42,111,206,245,249, 65,252, 89,119,235,253,148,223, -100,183, 32,180,145, 39, 67,207,170,110, 88,181, 11,118,211, 68,103, 42, 98, 20,104,165, 8,201,227,130,167, 53, 13,162,216, 8, -106,221, 20, 94, 86, 96,219,111,113, 5, 58, 75, 50, 75, 96, 4, 30, 97, 76,238, 64, 67, 68,104, 67,136, 17, 45, 50, 44, 34,200, - 72,158,150, 58, 55, 19, 37, 3,120, 34, 81, 91,195, 16, 29,178,173,137,147, 39,146, 47,104, 26, 29,168, 72,136, 57, 64, 64,138, - 28, 3, 58,216, 17, 85, 12, 27,130, 29,242,231,111, 42,198,105,204, 55,198,124, 65,231, 32,138,142,253,174,164, 41, 83, 59,177, -200, 27,124,177, 19, 28,179,204, 69,216,125,135,104, 13,248,205, 47,103,224,242,215,118,235,222, 23,147, 5,205,246,235,127,193, - 95,118,119,246, 41,113,179,127, 65,152,181,190,236,157,242, 62,253, 43,124,249,171, 95,100,234, 29,231, 23, 59,236,224,233, 86, - 29,235,227, 5,187,157,205, 58,236,170,152, 5,249, 72,219,180, 28,173, 87, 88,155,216, 92, 58, 90, 93,161,141,206,241,182, 33, - 91, 75,246, 54, 50,249,136,240, 41,155,212,233,226, 52, 72, 34,250,136,151, 34, 39, 74,185, 12,143,139,226,167,158, 27, 68,152, - 98,134,211,189, 15, 76, 33,160,129,187, 11,195,214,121,108, 36,235,210,133,160,174, 36,166, 16, 39,183, 73, 82,213,249,129, 90, - 86,186,168, 51, 20, 42,229,176, 8, 93, 43,190,252,214, 93, 14,239, 58,132,155,248,151,223,251,144, 79,158, 30,178,104, 43,222, -126,239, 33, 7,171,142, 91,199, 45,159,251,204,139,124,233,238, 17, 95,127,255, 17, 31,127,245, 14,127,240,141,111,211, 85,138, -255,240,240,109,110,117,135,108,118,231,180,139, 53,141,214, 28,180, 43,130,219,240,253,199,247,248,246,238, 17,156,245, 48,129, -124,105,205,155,199, 7,188,122,114,151,203,199,231,220,188,123,139,110,125,155, 15,238,127,157,247, 31,111,121, 18, 2, 71,141, -225,184,209,188,254,202, 43,208, 86,188,124,231,136,255,234,239,253,109,198,205, 84,164,179, 9,239, 44,214, 58,126,243,197, 19, -222,221,142,220,187,127,198, 63,255,147, 63,229,251,127,242, 39,207,191, 31,230,201,126,158, 96,174,166, 61,251,244,228, 29,138, - 51, 87, 20,121, 79, 45, 96,191, 64,252, 81, 13,165,223, 67,153,243,200,152,138, 53,177, 42, 15,230,172,170,104,155, 61, 68, 63, -142,123, 39, 48, 51, 51,233,175,161, 87,222,231,226, 43,202, 68,227,226, 30, 77,212,250,153, 41,253, 57, 19,140, 47,137,130,161, -200,157,204,140,104, 85, 64,137,198,140, 64,183,162, 90, 47,104,215,199, 60, 30, 29,147, 94,209,170,136, 87, 45, 7,106,226,108, -102, 67,199, 0,228,102,224,165,234,152,191, 36,241,149,177,199, 87, 29, 15,189,231, 70,157, 21, 54, 46, 6,118,219, 68,155, 18, - 46, 4,150, 62,112, 33, 19, 77,128,247,135,129, 59,109,199,159, 61, 60,195,234,186,228, 41, 52,192,112,109,152,210,123, 53, 65, -224, 71, 35, 37, 77,243, 84, 35,181,214, 53,175, 44,142, 48, 90,211, 45, 14, 80,166,193, 10,137, 23,217, 37, 81,135,128,244,158, -158, 60, 45,214,129,108,186,148, 34,135, 33, 50, 4,136,214,147,236, 68,231, 61,151,155, 39,108,135,145,139, 96, 57, 89, 44, 48, - 65, 98,162, 64, 43,131,242, 19, 76,145, 74,107,100, 74,172, 72, 28,168,154, 62, 76,220,162,166, 9,128,205, 17,184, 49, 36,182, - 41,177, 6,188,148, 96, 2,187, 36,216,246, 57,138,117, 8, 16,165,198,121,176, 73,224,163,133,152,216, 38, 79, 35, 4, 67,136, - 57,249, 48, 72,182,113,226, 88, 73, 30, 90,143, 79,137,202, 40,172,191, 86,216, 92,200, 77,163, 36,103,116,212,234,202, 19, 38, -251,245, 87,153,244,166,203,120,189,185,132,195,155, 87,217, 33,121,184,241,217, 44,104, 94,139, 84,165, 33, 30, 11,241,120,156, -242,223,129,202, 30,244, 70,239,137,199,218,236, 25,237,115, 35, 60, 7, 21,213,106,111, 49, 27, 11,169,180,196,204, 94, 33, 71, -162, 88, 5,207, 16,126,167, 11, 2, 81, 66,106,132, 4,209,149, 84, 66,191,143,149,157,182,207, 41,234,214,230, 23,253,243, 70, -194, 57, 11, 99,121, 80,235,138,209, 84, 32, 39, 26,165,209,166, 33, 4, 79, 83, 53, 56,239,179,109, 32, 1, 37, 4,163,179, 44, -171,150,132,199,135,188, 43, 7,152,220,136, 49, 6, 65, 78,231, 97, 4,161, 36,202,228,110, 44,196, 68,165, 13, 82, 72,100, 74, - 40, 45,208, 90, 34,165, 36, 90, 15, 77,131,176,142,224, 70,236,178, 35, 13, 3,187,209, 83, 53, 21, 97,202, 19,172,212,154,224, - 66,118, 52,210, 26, 3,244,222, 17,230,157,135,169,193,123, 42,149,120, 56,236, 8, 66,130, 42,222,189,182,192, 47, 90,238, 77, -191, 98,249,240, 27,157,247,135, 49,236,147,116,150,139,124, 3,232, 42,103,241,206, 36,167,174,185,150,219,251, 75, 40,236,215, - 39,150,249,151,125,239,233,131, 83,235, 98,252,241, 52,148,249, 15,127,227,147, 28, 28, 46, 24,122, 71, 93, 85,196, 54,210,173, - 26,134, 41,224,125, 32,248,144,161,247, 49, 66,212,144, 36, 77, 91,209,181,154,227,101,199,201,186,161, 49, 10,173, 4,147,143, - 87, 62, 17, 25,164, 72,156,116, 21, 73,102,139,212,186,146, 44,235,236,212, 85, 43,144, 73,226, 93,222,125, 87, 38,179, 94,173, -207,170,133, 90,136,140,150, 26,133, 72,137, 86, 9,142, 27, 73, 31, 2, 62, 9,142, 69,162,145, 32,100,226, 50, 69, 84, 20, 60, -216, 57, 22,149,166, 89, 42,166, 8, 55,187,134, 70, 43,238,157,247, 84,141,226, 83, 55,150,124,226,101, 69,171, 37,223, 61,219, -240,199,223,127, 76,178,137,118,181,200,172,210,193,161,158,244,252,145, 11,156,172, 59,254,233,215,126,141,223,248,220, 39,248, -171, 15, 30,241, 23,127,254,109, 8, 19,127,241,216, 49,212,142,239, 61,252, 30,173, 54, 60,222, 92,112, 62, 76,121,157,211, 25, -208,129,248,120,195, 55, 31, 92,240,225, 75,151,124,246,228, 9, 97,218,112,252,194, 29, 62,241,218,167,249,236, 23, 86, 28, 30, - 53,156, 30, 85,124,236,100,193,113,171,217,218, 64,140, 9,119, 43,175, 9, 14,154,236, 3,177, 48,146,202, 72,158, 12,158, 99, - 27,249,170,150,252,195,127,240,219, 92,140,142, 15,207,123,254,234, 59, 31,242, 7,127,242,111,248,247,255,242, 15,114,241,126, - 22,189,126, 14,124,159,102, 78,198, 83,147, 50,224,126, 68, 81, 9, 49,167,254,173, 86, 87,220,162,252,255,141,249,126,130,167, - 7, 4,235,193,216,130, 94,197, 31,173, 6,185,190,150,250,113,164,161,167, 26,215, 31, 1, 81,207, 68,209,201,150,116,184, 17, -148,205, 16,122, 4,150, 29, 7,183,143,249,220,237, 35, 30, 76,142,182, 91,208, 72,131,174, 26,188,183,188, 46, 91,162,115, 60, - 22, 83,209, 53,231,117,195,247,118,143,249,220,193, 17, 31, 76, 19,157,245, 44,155,134,139,113, 96,170, 42, 86, 36,190,229, 19, -159, 58, 88,224, 67,100,212,138,208,247,244, 68,110, 24,205,187,110,226, 65,242,185,104,175,186, 60, 8,236,158,121, 15,234,153, -141,200,243,222,223,236, 3,128,130,186,227,184, 57, 0,109,232, 86, 39,128,200, 50, 49,165, 24,172,199, 8, 5,109,102,189,143, -206,102,146,127, 37,137, 33,114, 75, 36,250, 0,149,245, 56,159,101,118,143,206,207,168,172,227,124,216,178, 86, 18,101, 61, 85, - 91, 50,215,181, 66,248,136,209,138, 70,105, 90,165,104, 66, 64, 37,201, 43,170, 65,183, 6,233, 50, 87,105, 12,142, 74, 26,150, - 17, 92,217,109, 75,165,176, 9, 14,170,192,189,201, 33,148,100,176, 16,181, 33, 22,215, 60, 27, 71, 26,169,241,193,211,136,188, -130,105,141, 38, 18,217, 13,158,227, 74, 18,167,196,214, 63, 19,128,163, 75,246,192, 44,250,153,175,217,172,106,208, 6,213,182, - 4, 1, 75,221,210,175,142,178,185,213,220,224,166,178, 90,165,104,202,103,253,183, 47, 67,161,243, 57,223,125,178,249,140,191, - 90,125, 62,207,182, 53, 62,237,251, 62,133,189, 74,169, 42, 78,117,117,149,121, 78,211,144, 45,106,131,205,141, 71, 27, 96, 96, -111, 83, 60,199,246,174,171,140,112,205,107,178,177,217,115, 82,226,248,148, 25,154, 34, 30,253, 51,250,221, 47,198, 33, 77, 43, - 44,146,227,197, 65,102, 43,147,117,232, 62, 6,140, 52,132, 20,179,113,143,146,212, 82, 35,148, 68, 11,205,228, 28,198,232,108, - 56, 83,236, 10, 19, 18,235,178, 23,180, 49,249,165, 6, 33,209, 74,162,234,138, 78, 41, 92,136,212,198, 16,139,255,182, 48, 21, - 82, 10,122,159,205, 82,108, 49,213, 87,166,194, 21,178, 84, 10, 41,155, 36,248,108,136, 16, 98, 98, 76,146, 68,196, 9, 65, 31, - 34,194, 71,156,144, 92,122,139, 22, 2, 23,115,246, 58,163, 43, 45,180,156,147, 72,242, 1, 35, 74,182,239, 12,181,248,180,135, -229, 41, 36, 57, 81,172,183,116, 85, 76, 15,202, 69,255, 57,201, 16, 63, 53, 52,255,211,252,251, 51,191,255,247,254,219,127,130, -146, 96, 71, 79, 8,185,184,132, 72,201,176,167,216,233, 10,130,135,186,174, 89,173,150,220, 61, 93,115,178,234, 88, 45, 43,150, - 38,147,106,102,215, 80,151, 34, 33,164,156,167,160, 5,146, 68,163, 20,167,107,195,210,232, 28,211, 56,191,148,144, 81,155, 84, -248, 47,214, 7,100,138,184,152,167,250,144, 2, 33,230, 73, 40,133,200, 50, 6,100, 8, 28,196, 68, 37,160, 18,146,147,148,232, - 98,226, 72, 10,172,200, 83,129, 69, 48,110, 7, 78, 43,195,113, 83, 97, 18,124,235,108,199, 7,151, 35, 8,112, 8, 78, 15, 58, - 94, 59, 93,242, 36, 8, 92, 72,220,190,181, 4, 35,233, 55, 35,110,116, 60,222, 78,216,201, 51, 38,137, 49,134, 95,255,252,107, -188,122,186,166,221, 89,254,175,119, 63,228,163,221,150,147,174,166, 51,154, 86, 27, 86, 90,179, 37,145,106, 69,210, 18,121, 80, -241,249,211, 99, 94,190,121,194,209,141, 5,191,255,183, 94,231, 31,125,233, 99,124,233,205,219,124,254,229, 99, 62,125,123,141, - 20,130,203,193, 35, 82,126,126,124,136,236,172,103, 42,132, 64, 18,152, 74,177,168, 12,125, 16,124,112, 57,161, 82,228,229,211, - 37, 95,184,125,196, 75,119, 14,249,237, 47,126,129,127,252,251,191,199, 43, 47,189,196, 31,254,209,159, 34,144,121,109, 37, 4, - 34,101, 67,165,108, 2,146, 15, 32, 97, 52, 34,169,125,241, 87, 62, 79,217,209, 62,127,143, 61, 75, 38,173,203,208,160,119,123, -226, 82, 74, 48,244,207, 88,179, 22, 34,102,112,123,185,219,117,107,215,249,240,251,113, 30,239,215,139,254,179, 43,166, 31,154, -100,203,142, 83, 25, 56, 88,103,104,179,237,114,228,235,170,205, 59,204, 69, 67,234,106,110, 54, 13, 73,213,188,118,184, 38, 42, - 56,210, 25, 53, 56,172, 5, 15,109,228, 50,133,189,115,153,200,222, 2, 70, 72, 14, 98,162, 14,142, 46, 5,206,172,101,185,125, -140, 53, 21,223,159, 70,118, 33,114, 71, 73, 30,218,137, 35,165,232,157,167,247, 17, 29, 2,223, 24,167,124, 80,251, 30,118,187, -167, 19, 21, 37,251, 40, 80,226, 15, 15, 90,179,202,230,228, 6,172, 22,176, 94,243,194,209, 13,126,227,246,203, 28, 44, 22, 24, - 45,168,181,193,232, 26, 27, 50, 41, 46, 42, 69,240,137, 33, 6,162,148, 52, 82,208, 72,193, 97, 2, 23, 34,235,152,176,131,163, - 38,176, 59,127,130,187,124,130,157, 70,150, 9,218,182,166,105, 90, 58, 93,161,149,196,196, 72, 83, 27,140,128,133,169,232,128, -195,202,176,142, 9, 35, 5,173,148, 57, 72, 70, 10,234,226,190, 39,124,162, 49,138,160, 37, 23, 49,175, 52, 71,153,120,178, 29, -121,224, 3, 59,239,144, 36,164, 80,104, 33,104,116, 3,228,193,109,240, 1, 93,144, 58, 45, 36, 33,228,231,160, 83,154,243, 16, - 8,162, 64,234,161,228, 90, 36,153, 27, 37, 93,200,202,198,228,207,169, 93,242,202,250,152,151,186, 21, 47,214, 75, 94, 90, 30, -176,144,134,186,233,184,156,173,101,227,108,141, 88,216,240,148, 51, 91, 42, 82,140,168, 36,114, 13,152,189,231, 93,185, 47,180, -222,147,159, 37, 92,165, 13,134, 18, 24, 19,194,158, 61,175, 85, 70, 11, 40,171, 31, 63,149, 34, 31, 74,211, 88,254,124, 87, 21, -223, 6,246, 49,217,161,188,174, 57, 77,179,170,246,178, 82,165,158,178, 83,254,249,217,239,207, 22,135,144,242, 94,185,210,236, - 20,116,170,202,122,113, 93,229,240,148, 20,169, 10,116,110,148, 42,102, 5,142, 90,213, 72,149, 39,247,170, 64, 15, 33, 7, 40, -227,124,204, 97, 72, 73,225,139,105, 71,221,154, 43,179,131, 99,173, 24, 10, 6, 85,155, 42,147,169, 82,190,105,119, 62, 32,203, - 14, 61,197,204,160,244, 73, 16, 69, 42,103,135,196,249,128,149,121, 42,180, 41,225, 98, 96,112, 30, 75, 98,112, 19,125,132, 41, - 58, 70,239, 50, 51, 49,206,123, 22,181,183,192,140,215,189,126,227,158,253,152,174, 77, 70, 90,150,255,158,246,123,179,217,210, -112, 14,148,144,242,167,119,210,250, 37,126,125,236,111,255, 14, 95,254,245, 79, 51, 12,150,126,219, 19,124,196, 59, 79,211, 53, - 76,253,196, 52, 58,166,222, 18, 92, 64,146,189, 5,106, 99, 16, 66,178, 90,213,172,155,153, 37, 43, 24,124, 36,146,153,234,110, -138,217, 35, 71,230, 98,127,227,192,208, 26,141, 42,134, 44,145,108, 24,163, 77,182, 87,157, 51, 26,116, 10,248, 24,209, 50, 63, - 15,243, 80, 24, 99, 36,185,192,165,143,120,149, 27,142,205,232, 80, 17, 22, 49, 81,249,192,165, 4, 87, 25,140, 81,168,199, 59, -212,119, 30,243,238,195, 11, 76,163,185,209,182,180, 49,114,239,114,199,251,103, 61, 23, 86,178,168, 20,199,173,225,184, 51,220, - 92,104,188,183, 28,117, 29,186,210,108,206, 7,198, 41,112,255,114,228,209,229,192, 43, 39, 75,188,245,124,250,227,183,248,237, -207,189, 14, 23, 3,255,254,175, 62,100,125,208,177, 52, 11, 84,165,105,170,138, 86, 9, 94, 57, 92,242,214,221, 27,252,167, 95, -120,139,255,242,119,191,196, 87,191,240, 26,159,249,248, 29,234, 90, 35,132,160, 15,217,239,122,235, 2, 79,118, 30,239, 35,141, - 81, 28, 52,153, 65, 13,249, 51,234,173, 99,176,142, 16,242,120,172,132,100, 55, 57, 30,238,118,156,237, 34, 85,130,173,141, 56, -239,185,123,208,242, 91,159,127,157,255,225,191,254, 7, 44,239,190,193,191,251,183,255,182, 16,126,179,212, 79, 22, 85,134,136, - 69, 87, 94,210,165,196,204, 36,159,252, 15,155, 39, 92,215,125,167, 82,128, 6,151,155,214,113,147,121, 35,118,122,126,113, 14, - 97, 95,208,231,137,230,138,157,156,246,190, 14, 63,201,231,253,199,253,204,156,123,208,212,124,246,213, 91,180,135, 29, 47,156, - 46,233,186, 10, 86,203,172, 90,146,133,113,108, 12,193, 84, 44, 76,197,171,235, 5, 38, 2,133,215, 96, 68, 86,218,220,159, 70, - 46,230,134,196,185, 2,197,143,172,220, 72, 28,123,130,221,226,135,115,154,221, 57,198, 91,222,187,120,200, 71,214,113, 87, 26, -190, 49,140, 28, 33,121,111,178, 4,239,121, 24, 61,223, 26,122,108,178,121, 42,155,250,204,156, 62,223,101,244,110,126,255,243, - 25, 18,158,137, 70,174,202,100,183, 62,134,163, 31,132,194,155, 0, 0, 32, 0, 73, 68, 65, 84, 53, 28,159, 34,143,110,240,169, -197, 9, 55,186,138,155,221,146, 70, 85, 57,176, 76,230, 97,242,194,122,188,245, 68,153, 93, 50,149,128,133,128, 99,157, 67,173, - 84,200, 94, 19,135, 93,102,162, 55, 49, 51,217, 23,193, 99,140,102,165, 27,142, 23, 11,144,146,101, 33,193, 42, 41,104, 85,141, - 72, 80, 87,146, 42, 65,101, 20, 11,165,145, 90,228, 60, 5, 41, 48,117, 62,247,189, 82,140,165, 65,119, 74,176, 77,137,203,222, - 51,197, 68,111, 45, 65,228,186,161, 5, 68, 12, 40,137,170,107, 66, 18, 40,213, 48,197, 64, 37, 5,131,115, 72,165,168,149,193, - 11, 65, 91,213,212, 85,203, 40, 37,169,169,178,203,105, 93,103, 53,146, 49,176, 62,202,223,183, 75,100,187,226,173,122,193,186, - 94,209,180, 29,219,144, 56,238, 58, 90, 33, 16, 73,112, 25, 10,242, 58,175, 52, 68, 78,118, 76, 49, 92, 5, 11, 45,116,150,194, -202, 20, 73, 59,187, 63,136,230,251, 57,165,125,140, 43,169,144,250,124,174, 15, 59, 91, 92, 61,103,155,103, 81, 86, 87,133,141, -111,228,222, 91,106,230,109, 85, 38, 31,128, 46,236,229,199, 74,229,123,165,106,242,179,217, 84, 25,161,240, 49, 63,123, 34,223, - 51,191,152,162, 62,143, 88, 38, 91,243, 37, 32,181, 21, 62,164, 76,134,210, 85, 94,139, 5, 80, 74,224, 99, 68,146,168,171, 6, - 31,236, 85,252,222,228,125,254, 12,133,192,249,156,195, 27, 72,216, 16,104,170, 66, 34,136, 10,211,106, 22, 8,208, 26,149, 18, - 90,230,110, 41, 1, 21,130, 65,100, 73,205, 38,229, 41, 51, 10,153,181,232, 49,224, 93,204,156, 50, 37, 8, 62, 23,251, 33,120, - 92,202,204,236, 24, 35, 99,132, 62,120,250, 24, 72,200,204,240, 14,190, 4, 8,148, 64, 27, 93,244,145,136,124, 97,230,216,200, -196, 62,141, 71,138,167,243, 37,174, 23,247, 90,229,238,114,198,219,102, 59, 80, 37, 11, 73,162,252,172, 86,191, 56, 9,220, 79, -241,245,123,127,231,107,220,122,241, 6,155,203,158,224, 34,218, 24,172,245, 52,139, 54, 91,194,198,136,148, 26,163,107, 86,171, - 21, 74, 74,218,186, 97,189,236,184,115,210,178, 48, 38,135,163,196,196, 16, 34, 46,101,103,169,152, 50,193,173, 81,130,195,133, -230,164, 53, 40,169,136, 66, 32,149, 40, 9,158,217,182,210, 40, 65,109, 4, 38, 69,142,141, 32,200,132, 8,137, 74, 68, 84, 12, - 57,207, 33, 70,106,239,241,201,179,180,129, 42, 37, 86, 62,178,178,129,122, 10, 36, 45,216, 26,201,129, 79,172,133,196,104,193, -163,221, 64,255,193, 5,239,221, 59,103,221, 26, 94, 92,118,124,108,189,160,157, 50, 81,208, 40,137,140, 5, 1,104, 20,214, 58, - 46,118, 19, 39,109,205, 43, 71, 29,111,127,120,201,232, 2,219,205, 72,229, 28,255,201,167,238,242,189,139,158,155, 55,151,252, -222,151,223,228,226,252,146,127,253,103,239,240,192, 79, 60,217,246,120,225,120,235,206, 11,124,254,179,111,242,213, 47,125,146, - 47,127,238, 85, 78,215, 29, 66,230, 93,231,110,242, 92,236, 60,247, 46, 44,151, 59,203,131,139,137,243,222, 18, 98,160,149,176, - 16, 2,227, 97, 59,121, 54,193,211, 79, 62,251,229, 91,207,163,221,196,102,240,172, 42, 73,140,145,135,155,129,179,222, 49, 89, -135,179, 14,225, 60, 10,201,209,170,227, 51,175,223,229,229, 47,124,133,255,251,255,248,215, 57,175,161, 28, 44,210, 95,147,137, - 69,143, 8,165,224, 56,255,163,221,144,174,242, 2,124, 46,252, 70,102, 8, 81,201, 61,153,237, 39, 17,110,175,249, 84, 92, 65, -168,241,167, 40,234, 63,145,246,155,189,215,213,114,193,209, 65, 75,187,234,184,112, 9,173,107,182, 33, 97,141,202,197,113, 54, -172,215,138,187, 77,197, 82, 27, 42,165, 56, 82,134,148, 34, 75, 89,241,176, 31, 80, 82,241,161,183,249,144,181, 3,244,151,240, -248,156,203,243, 39, 12,110,100,229,123,118,195, 37, 38, 78,124,227,236, 35, 30,110,206, 73,211,192,125, 63,177, 19,130,247,188, -231,108,220,113, 47, 10, 30, 57,139,157,118,197, 83, 98,200,126,226,219,146,190,214,247,123, 9,148, 81,121,106, 83, 69, 69, 80, -155, 44,169,171, 91,184,125, 2,135, 43, 56, 92, 67,183, 34, 9,201,177, 50,124,108,181,200, 86,195, 82, 81, 25,147,215,137,214, -211,187, 28,103,172,188,167, 22,146, 78, 42,150,149, 34,166, 68, 39, 18, 49,101,237,183, 77,145,198,123, 52,130,131, 4,147,115, -172,148,230,176, 91, 16,165,164,107, 27, 84,101,168, 84, 38, 58,107,153,155,111, 33, 4,203,202,228,140,117,173,104,164, 70,182, - 21,210, 40, 82, 37,241, 90, 19, 73,104, 33,184, 0, 54, 36,198, 20,185,191,205, 6, 95, 83,185,222, 14,149, 45, 99, 5, 4,109, -202,252,148, 77,196,162,128,139, 24, 72, 66, 99,147, 66, 74, 69,212, 53,171,170,195, 55, 29, 72,141, 93, 28,146,154, 85, 38,149, -181, 11, 88,173,203,212,190, 0,221,241,114,187,228,160,238,216,121,139, 87,154,133,214, 12, 49,224,131,167, 82,146,179,164,114, - 79, 37,184, 82,103,164, 82,156, 59, 37,145,222, 49,140,142, 3, 2,227,197,112,141, 63,146,246, 5,125,230, 89,205, 77,239, 60, -237, 79, 37, 5,212,239, 19, 8,111,221, 57, 96,183, 29,185, 50,194, 87, 50, 15,139,241, 90,252,175,187,214,252, 94, 95, 51, 24, -189,207, 91,160,112, 96, 22, 93,177,204,205,218,251, 95, 92, 81,191,218,131,101, 61,168, 77,138,182,109,104,141, 97, 8,174,176, -210,179, 49,136, 80, 57,116, 37, 38,143,245, 46,203, 39, 84,254,164,146,144,196,148, 99,247,108, 76,164, 36, 72, 82, 17, 98,202, - 19,161, 84,116, 70,210, 8,129, 12, 1, 76,246,240,110,133, 32, 37,129, 18,137,209, 69,108,138, 36, 31,176,193,102,233, 84,200, - 12, 76, 31, 2,155,209, 34,101, 78,104, 27,125,222, 51,217, 16, 17,161,192, 61,209, 35, 82,214,173,167,232,114,184,203,149,193, -198,124, 65,253,222, 9,104,198,153, 99,186,182,159,190,214,149,137,107,197,125,142,168, 20,229,130,151,192,135,156,223, 91, 96, -200,182, 45, 17,128, 41, 67, 53,146, 31,195,120, 44,196, 12,253,243, 64,248, 58,235,111, 77,115,229,189,253,181,255,226, 63, 67, -104,201,246, 98,160,238, 26,148, 86, 8, 33,177,195,132,115, 33,239,193,155,134,227,163, 53, 70, 85,156, 28,175, 57, 62,104,185, -113,220,114,212, 84,104,157,229, 44, 83,204,122,241,236,230, 38, 48,228,130,189,106, 53,141,201,112,116, 16, 18, 49,127,160, 69, - 2, 74, 74,212, 2, 14, 4, 24, 18, 50, 9, 68, 8,136,224,145, 49,178,142,145,161, 36, 61,109,198,128, 72,145, 49, 6,156,207, - 28,137,218,122, 6, 34,113, 81,243,242, 54,240,250, 31, 93,112,120,182, 99,167, 34, 27,231, 9, 49,114,107,107, 57,254,104,200, - 65, 24,117, 69, 28, 29,195,251, 79,232, 14, 52, 71,171,134,203,126,100,107, 3, 90, 8, 30,109, 50, 83,255,243,183, 14,185, 85, - 73,254,224,155,223, 39, 4,203,189,203, 29, 34, 73,150, 46,241,237,203,158,117, 91,241,198,199, 95,230,226,209, 5,183,151, 43, -222,122,233, 22,191,249, 43,159,230, 63,254,205, 55,249,181, 55, 95,224,230,170,131, 36,152,166, 64, 63, 69,156, 13,140,147, 99, -180,129, 20,178, 83,225, 16, 60,126,242, 56,235, 24,156, 37,216,128,247,158, 71,195,196,229,104, 11, 63, 33,225, 98,164,119,142, - 77,111, 73, 2,148,150, 37,250,118, 71,163,225, 80, 42,154,224,233,148,194, 40,133,208,154,151,111,173,248,242,239,124,149,237, -110,199, 15,190,247, 1,194,231, 92,172,235,155,244, 31,245,253,243, 21, 23,215, 38,240,103, 85, 24, 63, 81, 57,119, 45,128,229, - 42,112, 35,253,252, 50,207,217,202,117,177,128,131, 37, 31,191,177, 36,162, 89, 87,154,182,170,232, 42, 73,139, 68,213,134,157, -115,133,160,151,145, 49,175, 21,183,140,226, 86, 85, 51,248,145, 86,106, 82, 10, 36, 60,223,239, 71,150,227,150,203,190,135,205, - 6, 30,239,224,209, 6, 46, 31,227, 54, 61,103,147,229,113,140,124,184, 27,153, 66, 36, 93,108,243, 52,223,181,123,244,161, 50, -153,103,144,138,202, 68,170,252,188,121, 91,224,221, 25,237,112,208, 28, 66,187,132,163,195,188, 46,168,107, 88,175,243,254,125, -181,200,103, 64,215,128, 94,102, 7, 77,211,240,235, 77,131, 17,137,174,170, 8, 49, 15, 66,186,100,109, 92,140, 19, 38,129, 73, - 17, 35, 4, 77,165, 88,215, 21,150, 68,240,145, 74,148,224,197,157,167,213, 2,124,192, 72,168,124,160,173, 27,124,140, 44, 22, - 11, 26,163, 80,218, 96,140,201, 4, 89, 45,105,140, 42,214,177, 53, 85,211, 32,181,193, 52, 21,178,169, 16,198,100, 8, 92,101, -165,209, 89, 12,184,144,232,173,231,113, 8,236, 92,150, 59, 63,112, 14,139, 32, 9,149,179, 61,100,102,187,123, 33,139,195,181, -160, 23,134, 90, 72, 62,112,158,195,170, 35,153,154, 74, 43,164, 89, 80,235,134,180, 56, 96, 68, 33,164, 38, 84, 93,254,108,139, -179, 31, 72,100,221,240,153,170, 34, 36, 56,104,187, 43, 41,172, 18,130,133,105, 48, 82,224,189, 99, 19, 11,193,115,174,238,222, -194,228,112,211, 68,232, 51,129,111, 58,223,228, 85,211, 60,160,165,107, 3,109,145, 86,103,114,231,108, 21,158,246,202, 13, 55, -101,116,119,242,248, 85,151,249, 72,115,162, 91, 44,240,123,242,123,191, 16,165,158, 94, 73,205, 69,221, 22,146,156, 42,197,104, -134,252,117,169, 3,222,255,130,139,250, 92,204, 38, 11, 50, 49,104,141,151, 2, 31, 66, 86, 10, 72, 67, 72,158,209,251, 60,173, -120, 95, 82,180,114, 34, 90, 18,185,152,251,152,161,216, 84,138,101,144, 32, 16,196, 20,105,180,161, 13, 25, 82,234,148,194, 59, -143, 16,130,152,242, 4,226,125, 44,196, 55,207, 48,141,140, 49,225, 93, 62, 52, 61, 48,186, 9, 37, 2,214,193, 16, 3, 82, 8, -108, 0, 79,160, 18,121,114,151,222,210, 17,209, 8,130,119,212, 9,172,205,136, 66,110, 39, 75,103,230, 66,129,212,195,190,235, -154, 97, 51,113, 45, 88,226,122, 65,159,255, 93,138,124,193,107,185, 15, 25, 80,133,229,232,109,134,142,116,185,168,243,206,164, - 49,207, 88, 10,234,171,154,158, 9, 53,146,159,201,111,182, 91,192,114,149, 15,143,148,192, 77,124,237,247,255, 46,253,206,102, - 21, 64,109,176, 83, 64, 72, 73,240,158,232,114,188,224,173, 27,167, 28, 45, 23, 32, 36,181,210, 28,175, 26,142, 22,217,163, 64, - 75,145, 45,100, 67, 42, 62, 15,146, 74,100, 55,191,202,100,243, 24, 83, 75,100, 97,156,202,236,239,154,247,197, 36, 38,151, 57, - 21,146,132, 73,137,206, 7,142,125, 98, 25, 18,139,201,115, 18, 4, 75, 23,168, 99, 96, 51, 57, 84,130,203,193,131, 11, 12, 17, -132, 79, 28,104,197, 99, 5,175,254,233, 71,164,119, 62, 32, 61,186,100,249,161,101, 57, 70,170, 23, 14,168,180,194,125,240, 17, -219,179,115,158, 92,230, 29,109,244,145,135, 15,119,232,206,224,132,224,114,152, 72, 82,113, 99,221,177,181,158, 15,183, 61,175, - 31, 29,240,205,123, 27, 30, 93, 92,162,128,239,124,248,128, 11,167,121,247,254, 5,231, 54,145,132,224,213, 87,238,240,210, 43, -183,249,213,207,190,202,167, 63,118,147,174,170,152, 92, 96, 24, 3,206,229,149,210,224, 60, 23,125,158,206,157,205, 28,129, 80, -154, 67, 81,228,142,227,232,184,247,100,203,131,221,200,163,126, 98,179,243, 76, 33,100,251,219,152,145, 54,153, 34,206, 5,162, -144,140,219,137,237,110, 96,165, 53,119, 14, 22,172,201,104,198, 52,121, 62, 60,159,184,152, 38, 94,191,181,230,247,127,251,215, -249,222,253, 7,188,253,237,119,178,154,228, 57,178,119,241,203,132,130,174,187,161,205,171,167,249,217,248,121,215, 79, 77,149, -167,178,131,108, 10,115,171,174,185,177,170,168,181,206,121,246, 69, 95, 29, 16, 60,158, 66, 41,232,249,254, 27,164,224, 99,149, -100,231, 29, 85, 76, 12, 33, 16,237,136, 14, 1,227, 7,190,123,185,195, 61,185,132,179,115,216, 60,129, 48,229, 52, 53,173,114, -243, 61, 31,172,162,192,160,155,190,132, 93, 85,249,161, 44,169, 84, 82,107,126,115,177, 98,155, 18, 95,170, 42,156,243, 8,165, -153,250, 77,110,102, 78, 78,120,241,246, 33, 39,183,142,145, 93,205, 96,170, 60,129,181, 85,254,187,148, 44,251,213, 61, 84,155, -164, 66, 41, 56,169, 52, 85,242, 57, 51,193, 77,140, 62,177,115, 3,219,209,103,211, 72,145, 72, 81,176,104,154,220,115,104,129, -141, 89, 11, 48, 12,129,147,165,102,112,145,165,214, 8, 59,161,154, 6, 63, 77, 44,154, 54,123,177, 87, 53, 93,173, 73, 82, 81, - 27,133, 80, 58,171, 91,218, 6,105, 12, 81, 74,218,166, 98,170, 12,162,210,168, 90, 19,106,149,157, 69,203, 78,124, 32, 48, 2, -143,167,137, 9,199,217,148,159, 23, 43, 53,136, 64, 37, 43,134,152,245,239,173, 4, 41, 13,145, 72,171, 20, 59,159, 56, 53,154, - 3,221,208, 72, 69, 83,119, 12, 50,175, 2,164, 54, 28, 40,197, 67, 83,151,122,124,109,178,141,129,207,180, 29, 86, 73, 86, 34, -195,236,139,148,104,234, 58,187,144,138,132, 50, 6, 67,228,195,105, 44,133,215,102, 37,152,117, 89,129,209,143, 48,218, 76, 12, - 29,124, 57,223,217, 75,129,139, 12,143, 68,254,239,178, 52,153,221,236, 47, 47,178,122, 99, 28, 96, 24,192, 91,194, 69,159, 51, - 68, 76,189,223,151,207,158, 10,243,148,159, 10,140, 47,197,222, 6,151, 18,202, 53, 79,234, 85, 65,114,103, 71, 80, 5, 8,245, - 75, 40,234,209, 23,230, 97,222, 27,219,161, 39,182, 13, 90,104,158,216,129, 86,231, 28, 93,102,242, 67,202, 89,233, 46,230,253, -121,150,209,150, 32, 0, 41, 9,178, 28,248, 34,187, 18, 69, 34, 11, 99,184, 41, 5,143, 98,164, 65, 34, 82,202,150,130,228,152, -214,157,181, 88,239,177,206,177,179, 19,194,123,122,239,136, 33, 19,191, 54,118, 32, 18, 11,105, 61, 91, 20,202, 20, 17, 30, 66, -176, 28,214,130,228, 5,135,194,209,137, 72,229, 61,235,152,144,118,202,121, 46,209,102, 70,163, 47,228,136, 57, 96, 32, 81,164, - 10, 51,177, 70,238, 33,120,173,247, 63, 35, 69,134,243,107,147,117,149,226, 26, 4, 32,114, 72, 66,254,115,133, 16, 65,164,132, -126,231, 31,187,154,216,229,190,160, 95, 5,194,252, 12,135,162,187,182,191,219,110, 88,254,230, 87,248,173, 95,253, 20,211, 84, - 26,165, 72, 78,175,139, 9,103, 3,222, 71,186,110,201,205,227, 53,151,151, 3, 50, 9, 42,165, 88,116, 21,149,222, 79, 95,214, -103,216,125, 62,183,179,199,135,162,109,178,212, 76, 23,159, 1,163,115,122, 91, 61,183, 40, 9,132, 72, 84, 36, 84,140, 28, 68, -208, 46,230,136, 99, 23,168,166, 68,114,158,122, 12,172,166,200, 98,242, 76,187, 9, 61, 56, 6,231, 25, 1, 55, 57,110, 28,117, -124,253,157, 71,188,251,253,239,243,231,246,130,182,223,241, 82, 92,113, 28, 87, 28, 76,129,111,159, 63,225,255,217,158,243,225, -176,225,242,114,195, 7, 83,228,206,122,201,147,222, 17,158,244,200, 16,185,148,176,176,158, 79, 28,173, 56,168, 53,105,242,124, -253,124, 71,136,154,203,139, 77,118, 40, 12, 30,107, 61, 47,156,158,114,118,185,161, 94, 53,124,252,238,154, 59,167, 43,214,109, -110,192,108,136, 88, 27,113, 33,146, 68,194, 58,207,118, 59,114,177,181,196, 34,217,105,107,197,232, 34,219, 97, 98, 24, 61, 46, - 70, 38, 27,184,236, 71,250,193, 50,140, 14, 27, 60, 42,102, 88, 82,136, 50, 5,250,148, 85, 28, 49,209,239, 38,166,237,200,170, -173,185,209, 85,244,143,243,251,120,114,185,227, 79,223,190,207,163,135, 27, 38, 41,120,243,238, 17, 95,248,194,103,121,231,236, - 9, 63,248,222,219,136, 57,123, 69,254,255, 80,216,159, 53,140, 17,207,176,238,127,214,194, 62, 79,232,166,206, 26,126,165,161, - 53,220,237,106,148,146, 68, 4, 83,140,217,207, 2, 65,239, 3,103,214,239,137, 76,101,189,117,146, 18,107,145,112,193,179,136, - 14, 25, 61,182,223, 16,237,196, 55, 63,186,128,199,143,114,198,249, 52,238,181,200,170,104,203,231,221,231, 48,230,130,222,111, -178,147, 85, 91,231,102,220, 84,252,206,193, 33,159,172, 58, 34,130,183,180, 66, 39,193,139,109,205,203, 6,206,124,100,168, 5, -111, 28, 29,240,202,241, 33, 90,183, 84,218,240,164,202,137,101, 68,177,255,156,230,231, 95, 23,167, 61, 45, 24, 99,228,118, 76, -172, 68,222,211, 39, 34,163, 29, 56,219, 78, 57, 2,181,236,133,181,202,136,155, 49, 21, 19,226, 42, 64,175,109, 4,155, 62,176, - 48, 18, 93,138,100,180,142,186,174, 8, 74, 32,170, 10, 37, 4, 65,107,164,201, 49,194,149, 81,200, 69,131,172, 12, 65, 27, 82, - 91,227,180,194, 40,137,109, 12, 67,202,205,250,133, 20,108,124,100, 72,145, 71, 62, 49, 88,143, 87,176, 29, 97, 23, 3,151, 66, - 18, 98, 78, 95,211, 66, 80,149,200,237, 24, 19,181, 42,225, 45, 49, 51,172,106, 99,168, 83,162,170, 13,222,122, 78,234,138, 42, -194, 11,181,225, 8,193,155, 50,113, 39, 56, 78,149,100, 45, 5,189,119, 56, 93, 17,195,196, 18, 65, 37, 52,173, 16,140, 34, 81, - 33,139,181,109, 34, 12, 3,223,158,118,244,187,203, 76, 94,180, 54,255, 26,134, 34,207,140,123,185, 89,165,242,112, 61, 7,192, -204, 82,184,201,231, 41,124,217,148, 28, 4,149, 73, 13, 90,149,123, 62,229, 51, 61,204,107,166,144,173,100, 43,246,238,135, 49, -230,154, 50,115, 77,124,220, 35,186, 54, 94, 65,247,121,184, 83,249,204, 15,215,184, 40, 74, 92,237,222,127, 9,147,122,121,129, -174, 64,241,210, 16,140, 98, 23, 45, 70,228,160, 22, 67,246,130, 31,131, 67,201, 66,164, 74, 30, 33,114,196, 94,109, 12,158, 28, -143, 55, 69,135, 20, 2,147,189,152, 56,109, 43,106, 41,217,133,136,241, 33,195,243, 49,129,119,164, 16,233,125,118, 43,147, 68, - 30,122,203,100, 7,156,207,233, 95,147,183, 4, 63,162,133, 96,176, 22,165, 42, 52, 46, 71,112,134,188,244,111,107,133,242,129, - 3,149,243,126,187,224, 57,210,138, 83, 2, 47, 74,201, 82, 6,238,187,140, 44,228, 2, 91,118, 33,178, 92,120,161, 74, 22,178, -216, 67, 52,130, 43,136,249,106, 82,159,245,238,243,142,189, 18,101, 98, 79,217, 34, 51,228,169,248,138, 84, 49,195, 49,110,182, - 69,140,251,162,222,204,122,201, 31, 1, 95, 54,101, 39,167,170,103,124,195, 99,238, 78,167, 1,136,188,240,201, 55,249,213,207, -189,145,185, 5,228,233,220,187,148,239,237,201, 19, 92,228, 96,217, 33,181, 70, 75, 69,215, 85,156, 28,118, 28, 53,154, 69, 49, - 86,240, 62, 50,134,136,247,137, 24, 18,181, 18, 28,180,134, 69,163,203,208,146, 89,234,137, 68, 42, 5, 74, 20, 34,180, 22,130, -138,196, 65, 72, 84, 33, 82,249, 68,116, 30, 19,161,241,137,106,138,132,148, 48, 54, 80, 5,193,194, 69,236,229,128,159, 44,155, -113, 66,251, 64, 60, 90, 48,164,200,159,252,225,215,249,232,222, 35,126, 48,246,124,119,154, 88,250,115, 78, 82, 98,225, 26, 22, -182,231, 27,118,203,219,195,150,209, 59, 90, 37,114,248,207,232, 57,117,137, 35, 99,184,115,216,162,106,201,106,200, 17,195,109, -109,208,222, 99,181,192,138, 6, 59, 12, 60,217,230,164,192,143,127,226, 46,175,188,122,194,205,227, 5,139,218,228, 9, 37, 68, - 38, 23,176, 62,146, 66, 64, 41, 65,112, 41, 31,178, 49,225, 93,206, 60, 88,180,154,182, 49, 89, 46, 84,154, 64,161, 4, 82, 8, -164,204,100, 78,161, 37, 74, 8,142, 14, 91,140,204, 76,246,101, 83,177,236, 12, 74, 72, 46,118,142,237,110, 32, 88,199,199,142, - 86, 52, 66, 50,158,239,104,140,224,219,247, 47,121,251,254, 3,108,121, 61, 30,137,233, 42,190,242,197,207,240,254,163, 39,188, -243,246, 59, 63, 84,208,127,121, 83,250, 51,127,145, 42,178, 80,193,207, 94,216,103,189,122,183,202,240,116, 85, 28,224,148,230, -102, 91,209, 41, 73, 37, 4,145,148, 3,157, 82,226,193,232,185,152, 27,234,170,200,222, 82, 66,198, 68,149, 28,167, 74, 96,199, -137, 46, 38, 6,231,249,223,191,123, 31,206, 31,237,245,199,179,182,127, 38, 23,150,184,103,198, 18,248, 49,108,243,255, 51,148, - 52,186,245, 33,111,173, 79,136,194,240,226,162, 70,167, 72,146,134,166,110, 89,152,196,102,130,117, 85,113, 88, 41,222, 88, 45, - 57,110, 23, 28,106,205, 73,211,112,223, 6,122,202,144, 48, 67,176, 51, 3, 58,132,220, 68, 12, 61,182,239,217,248,158,247, 54, -143, 89,226,120, 50, 90, 54, 46,177, 75, 2, 23,178,140,152, 36,145, 73, 16,164,162, 50, 26, 33, 53, 70, 81,162,172, 5,210, 64, - 35,178, 83,227, 36, 36,161,172,109,186,186, 70,154, 26,154, 26,165, 20, 65, 74,124, 93, 97,171, 12,195, 39,165,241,203, 38,219, - 17, 24,197,164, 21, 35,145, 73, 8, 54, 33, 50, 6,207, 37,137, 15,139,187,231, 35, 18,219, 9, 6, 59,241, 40, 9,100,176,140, - 54,114, 88,235, 98, 50, 37,209, 66,208,201,172, 78, 74, 49,225,129, 70, 40, 86, 82,228,248, 12, 1,134, 44,109,238,164,160, 53, -130, 90, 4,166, 0, 7, 58, 80,197,200,218, 79,220, 82,134,147,232, 89, 0, 55,147,224, 72,100, 23,184,149, 84, 52, 9, 68,242, - 28, 86, 42,167,114,110,206,121, 24, 38,164,247,164,217,131,221, 23,178,104, 40, 59,241,121,205,170,138,110,221, 21, 20,198, 22, -146,105,125, 45, 33,110,142, 37,158, 83,212,196,108, 97,107,138,148, 45,101, 36, 32,165,140,188,136,194,199,210,133,217, 78,225, - 86, 12,197,219,100, 30,228,102, 78,151,143, 25,225, 85, 5, 5, 16,242,169,200,237, 95, 78, 81,191,218,177,205,145,136,249, 67, -177, 90, 48, 17,152,130, 71, 81, 58,187, 16, 73,228,195, 58,196,108, 19,104, 67, 64, 25,195,224, 44, 70, 27, 36,138, 49,120, 42, - 45, 88,104,133,145,154, 24, 2, 90, 40, 38, 63,230, 32,151, 16,232,157,167, 34, 34, 99,226,131,221, 57, 83,244,164, 40,232,221, -142,157,243, 36, 17,168, 35,140,193, 19, 66, 36,122,139, 18,130, 42, 6, 42, 34, 73, 68, 26, 31,104,133,164,177, 19,173,144,172, -132,100,233, 39, 14,148,196, 36,184,237, 35, 15, 35,108, 66,122, 58, 87,189, 47,145,172, 46,114, 69,163,116, 37,206, 79,138,167, - 13,253,231, 29,251, 12, 21, 93,143, 5,156, 97, 60,165,242,133, 27,167,156,210, 21,203,254,125,150,188,204,100,166,166, 2,189, -200, 55,198,243,100,137,186,184,103, 41,145,161,160,107,210,135,103,191,190,242,213,175,240,137, 79,190,140,115, 30,103,195, 21, -146, 49,237, 38,236,232,105,154,138,151,111,157,102, 50,142,209,172,219,134, 27,135, 45,203,198,228,200, 85, 33, 25,125,192,167, - 68,163, 5,198, 72,106, 45,105,180,202, 69,173,120,236,199,226,207, 30, 82, 38,212,205,156, 4,145, 18,186,152,101,132, 24,145, -206,103, 93,108,140,212, 67, 36,141,158, 48, 89,170,222, 35, 54, 22, 51, 68,218,221,132, 25, 6, 46,157,229,116,217,146,110, 29, -240,231,127,241, 54, 15,254,234, 67, 54,187,145, 7, 33,178,182,129,255,115, 24,249, 87,219,135,124,142,137,151,150, 47,241,107, -171, 83,110,121, 71,140,158,101, 63, 34, 71,207,105, 76, 44,235,154, 87, 63,113,135,218,200,236, 53, 52, 6,134, 40, 16,173,161, - 94,183,156, 46, 27,110, 31, 53,188,250,210, 77,236,164, 88, 28, 29,240,242,171,167,188,112, 99,197,113,151, 49,135,221,232,152, -108, 96, 51, 76,108,139,115, 30, 62,102, 4,195, 23, 87, 44, 41, 88, 46, 42,150, 93,195,106, 81,179,236, 42,150,181,193,212, 58, -255,188, 72, 24,163,168,107, 67,221, 24, 14, 15, 90, 94, 56, 94,160,181,198,249,196, 65,171, 81, 82, 18, 4,156,157,109,153,134, -137,197,178,229,215, 94,185,137, 74,129,113,176,140,214,241,205, 7,231,108,199,158,139,237, 37,253,206, 34,162, 33,136,192,139, -183, 14,249,244, 91,111,241,191,253, 47,255, 34, 67,185, 60,237, 33,195, 53,250,200, 47,244, 76,144,215,238,249,171,221,100,250, -233, 25,238,186, 16,226, 22, 93, 38, 70, 45,234,188, 62,146, 34,203, 35, 4,156, 84,146, 70,107,180,202, 25, 2,147,119, 60,153, - 60,239, 88,155,243,176, 67,200,242, 84, 37,192, 59, 46,173,229,174,145,220,219,245, 40,231,248,112,179,229, 59,143, 47,185, 56, -219,228, 61,167, 20,185,160, 63,203, 25,240, 62, 79,116, 67,159,201,110,206,239,223, 99,183,132,163, 19, 42,165,121,171,109,144, - 85, 69, 72,134,182, 85, 76, 46,241,104,242,116, 74,208, 39,184, 89, 25,142,234, 26, 41,178,198,220,199,192,221,166,226,219,219, -205,222,247, 34,148,215,221, 15, 25,254,223,141,249,239,222,245,236,166, 29,231,214,241, 97,138, 60,118, 22,155, 4, 74, 42,148, -144, 24,165, 72, 49,161,148, 65, 10,205,132,160, 85, 50, 7,181,104,197, 20, 35,203, 90,226, 35,180,181,102,244,129,182, 50, 36, -153,243, 43,188,148, 8,173, 24,148,194,214, 6,140,194,105,201, 84, 12,166,166, 36,178,126,187,220,179, 81, 42, 70,145,232, 37, -156, 91,201, 35,151,232, 93, 96,227, 19,187,157,101, 20,137, 29, 2,239, 45, 42,122,106,153,153,226, 41, 38,100,242, 36,165, 72, - 33, 34,136, 36,231,137, 49, 81, 37, 79, 10,137,174,201,180,254,101,107, 48,209,161, 91,141, 8, 1,165, 36, 43, 63, 50,197,136, - 9, 14, 41, 43, 12, 35, 11, 17,208, 41, 33, 9, 24,169, 57, 81,137, 24, 45,210, 91,214,149,198,184,137,237,238, 17,219, 97,226, -141,174,226, 52,194,199, 14, 22, 52, 82,179, 90,180,152,186,161,151,197, 9,116,206, 68,143,177, 16,158, 51, 7, 33, 59,195,145, -207,254,144,138,107, 99,249,185,121,186,118,110, 47,225,148,101,152,107,187, 2,223,135, 18,215,170,247,205,102,136,185, 89,104, -179,185, 87,110,234,102, 20,188,172,122,221,236,198, 88, 76,118,230,181,112,226,151, 88,212,103,239, 92,101, 50,100,165, 51, 29, - 63, 33,136, 90,177, 11, 57, 33,104,231, 45,187,224,168, 11,148, 97, 99,200, 19, 11, 96,180, 33,164, 64, 18,217,110, 84, 8, 67, - 27, 1, 17,104,165,100,240, 83,142,147, 37, 96, 39, 75, 45, 37,113,154,120,108, 71,124,140, 60, 25,119,132, 24, 8, 62, 18,131, -163, 70, 50,133, 60, 41,117, 66,144,130, 43, 68, 45, 80,193, 97, 66,164,142,158, 54,122,140,144,116,222, 35,162,163, 81,138, 38, - 70, 66,138, 52, 74,241, 58, 9, 47, 2,247, 41,172, 69,235,179, 67,148,203,157,255,213,105, 40, 10,185,221, 22, 24,231, 58,185, - 2,114,199, 55,107,117,103, 24,134, 82,208, 99,129,244,187,106,239, 53, 28, 75, 19,225,228,149,124, 1, 89, 18,133, 92,137,250, -123,222, 65, 42,234,124, 19,142, 33,147, 65,126,196,215, 87,190,246,219,220,190,115, 74, 72,137,105,242, 72,173,114,156,234,228, - 73, 17, 94,188,123, 11,211,214,184, 40, 80, 82,114,235,112,193, 65,103,168,180, 70, 25, 93, 44, 99,243,155,175, 5,104,153,173, - 98,141,201, 42, 6, 31, 50,194, 33,201, 33, 43,179, 58, 34,250, 76,120,147, 33,171, 34,164, 15, 40,159,144, 62, 34, 99, 36,217, - 64,216, 58, 98, 63,145, 98, 36, 61,238, 81,151, 35,141, 75,212, 83,192,244, 61, 43,165, 56,190,125,204,187,222,243,207,255,213, - 31, 82, 77,129,197, 24, 24,183,150,205, 54,176, 14,137,175, 4,205,215,197,200,203,227, 64,167, 43,110, 45, 78,120,109,117,204, -189,221, 57,239,143, 27,150, 49, 49, 34, 88, 13, 96,146,100,177,108, 57,124,229, 20, 35,178,150,250, 34,134, 76,222,116, 17,173, - 18, 47,220, 61,228,213, 87,110,241,226,141, 37,181, 82,217, 29,213,121,206, 46, 39, 98,140, 89,122, 86, 24,150, 62,100, 59,219, - 24,178,245,237,162, 49, 28, 29, 52, 44, 23, 13,139,174, 66,203,108,247, 89,107, 81,162, 40,115, 81,151, 5,213,104, 42,195, 65, -219,228,117,145,115,220,174, 43, 86, 81,162,109,228,133, 69,195,127,244,218,109, 62,251,194, 17,211,100,209, 34,113, 57,120,254, -226,131, 71,124,251,163,119,217,108,123,222,184,241, 2,127,247,243,111,178, 17,112,118,177, 99,181,106, 57, 58,232,248,239,254, -254,239,241, 63,255,175,255,226, 74,158,155,126,217,211,250, 92,244,230,102,119,110,116,159,149,193, 61,175,168,107,160,106, 88, - 31,174,160,109, 81,181, 65,181, 53, 65, 23,143,136,178, 82, 58,139,154, 70, 75, 54, 46, 63, 95, 46,122, 38,155,232, 73, 76, 59, -187,223, 80,217,144, 97, 83, 27,248,224,114,224,254,227,129,239,159,143,188,255,228,130,139,203, 93,150,246,201, 50,141,205, 46, -117,206,255,176,253,238, 15,153,232, 40,136,134, 91,183,143,249,237,155,119, 72,186, 35,134,244,255,209,246, 38,191,150,101,215, -153,223,111, 55,167,185,237,235,227, 69,151, 17,217, 49,147, 20, 51, 37,153,106, 76,169, 40, 74,150, 68, 89,178, 74, 50, 92, 5, -215,192,240,200,255,131, 97,120,230,145,231, 5, 15, 12,123, 96, 24,112, 21,108,192, 48,224,129, 97,187, 44,168, 76, 74,114, 73, - 44, 50, 73,145,148, 72, 38,153,109,244,205,235,110,123,206,238, 61,216,251,190,251, 50,197,164, 26,144, 1, 4,162,121,209,188, -119,239, 57,103,237,181,214,247,253, 62, 82, 8, 72,213, 34,165,196, 83,226,160,221,154,221, 90,101,123,175, 20,164,224,169,132, -160, 15,150,153,117,172,186, 46,231,107,172,186,220,157,207,250,172,154, 95,173,243,239, 13,170, 92, 92, 26,133, 9,158,105,219, - 34,145,196,148, 24,212, 77, 22,170, 74,157,199,216, 34, 51, 33,188,208,120, 41, 89,198, 60, 13, 90,117,129,118,160,152,245, 30, -169, 20, 42, 70, 68, 91, 17,139, 69, 25, 9,125,147, 85,233,243, 40, 9, 40,146,172, 48, 73,226,132, 32,216,200, 10, 73, 74, 18, - 39, 83, 78,236, 52,121,245,228,188,103, 21, 96,217, 59,140,144,184, 4,206,121,180, 51,116,206, 82,135, 44, 34,139, 41,230,157, -125,112, 84, 34, 98,173, 5, 34,202, 90,100, 18, 52,210, 81, 37,145, 47, 27,160,138,137, 73, 12, 4,161,168,141,193,120, 75, 74, - 48, 20, 2,153, 28,163, 16,152,232,154, 58, 24,110, 84, 13, 35,183,162, 37, 49,244, 22, 29, 44,202,117,216,110,129, 13,142,137, -132,147,229,138,241,160,166,213, 21,173, 18, 12,181,100, 90, 73,246,154, 58,175,111,154,188, 86,184,188, 78, 55, 40,223,205,179, - 59,149,134,108, 35,100,219,120,215,131,223,194,103, 92,204,117,162,109,242,117, 39, 85,174,143,170, 52,134,178,172, 88, 55, 26, - 10,227,183,129, 93, 27,140,183, 15,219,213,238,230,112, 92, 93, 33,214,241,211, 46,234,148,253,130,208, 37,231, 86,129,177,229, - 96, 35,232,140, 5,157, 71,242,107,219,163,149,198,197,128,172, 52, 34, 9,250,224,137,228, 46,183,213,117, 22,210, 5,207, 88, - 39,150, 41,114, 32, 21,214,152,236, 97, 12,145,181, 51,152,232,209,222,176,182,150, 14,232, 76,199, 88, 8, 6, 74,177,180, 61, -149,212, 52, 66, 32,124,200, 63,166,132,243, 61, 3,149,119, 54, 10,168,131, 99, 15,137, 75, 9, 29, 28, 93,140,244, 62, 49, 70, - 82, 87, 13, 85, 8,236, 9,197,169, 12,204,131,202,111, 84, 42,124, 97,159,182, 34,135, 84,146,220,144,121, 68,158,194,214, 68, -186,185, 24,196,166,187,143, 91,121,189, 16, 91,164,103,218,228, 66,171,242,198, 54,133,153, 93,222,104,177,201,118,239, 63,185, -187,241, 54,139, 62,194,143,143,246,251,226, 31,254, 46, 85,163,233, 58, 71,138,217, 49,176,188, 88, 17, 34,236, 29,238,241,185, -215,111,163,165,198,133,132, 78,146,195,253, 1, 90, 72,132,144, 37,218, 54,223,116,141, 18, 12, 90,141, 86,130,186, 42, 59,249, -144,217,236,214,167,188,103,246,185, 91,143, 5, 42, 35, 67, 64,165,128,176, 30,225,178, 93, 74,184,128, 48,158,212, 57,150,243, - 21,189, 11,120,145, 48,179, 37,118,181, 66,122,136,222, 33,131,103, 52,153, 50,120,233,128,239,124,245,187,124,248,205,135,172, - 83,160, 78, 2, 29, 35, 79, 86,158,207, 10,197, 43, 85,197,211,149,227,105, 88,163,100, 71,131, 96,111,116,192,117, 52,149,183, -124, 79, 4,214,109,195, 9, 9,191, 50,236, 92,159, 34,142,198,132,186, 34,145, 80, 38,176, 91, 41,186,121,199,105,128,107, 7, - 99,148,206, 94,221,139,206,242,236,124,205,247, 63, 60,163,235, 28,107, 27,112, 54, 79, 37, 82,204,135,154, 16, 50, 1,177,173, - 43,166,147,134, 65,157, 15, 68, 66,200,252,241,152, 10,219, 62,146, 95, 21,145, 71,249, 46, 96, 35,216,152,184,247,112, 65,191, - 10, 60,120, 48,227,254,189,103,252,249, 95,189,205, 7,207,206,152, 45, 44, 55,119, 26,246,235,154,163,131, 9, 73, 43,126,238, -238, 17,186,217, 97,247,240, 58,255,209, 47,188,134,214,130,183,159, 93, 32,149,230,217,210,240,221,119, 31,243,243, 47, 93,231, -248,211, 63,195,159,124,249, 43, 31, 37,204,253, 52, 58,245,143,143,225, 55,202,119,119, 69,107, 18,127,140, 10, 94,106,104, 7, - 28,238,143, 24, 13, 90, 68, 91,163,180,194,164,180, 77,136,139,128,204,135,197, 59, 26,166,178,172,209,128,123,157, 35,108,160, - 33,155,233,128,119, 89,125,190, 92,100, 63,113,232,242, 56, 93, 52,185, 59, 55, 54,119, 79,222, 95,153,132,233, 43, 10,228, 43, -157,210,230,254,211, 10, 14,246,184, 51, 29,115,115,239, 0,106,201,163,222,146,170,154,161, 86, 60,178,158, 38, 88,230, 41, 50, - 86, 21, 82, 6,234,148,115, 38, 92, 12,136, 96,185, 88,175,248,206,147,115,152,149,207,107, 54,135,110,145, 5, 87, 33, 22,180, -115, 17,231, 14,244,101,241,181, 34,139, 2,155,170,201,152,101,145,175, 36,165, 42, 66,180, 36, 33, 73, 41,219, 72,173, 7, 71, -202, 49,213, 94,160, 10, 69,173, 71, 35, 43,129, 81,146, 80, 73, 86,165,128,172,125, 78,157, 11, 85, 69, 36, 97,149,190, 4, 9, - 7, 33,233,125,190,175, 29, 69, 35, 66,162, 79,130,245,218, 20,109, 84,192, 90,131,242,142,149, 51,168,232, 16,214,100, 26,104, -138,164,224,209, 41,209,245, 29, 58, 6,170,224,105,132,163, 9, 61, 83, 36, 45, 48,137,121,157, 53, 44,147,189,161,203,147,176, - 16, 28,117, 48, 84,206,101,231, 71, 74,244,174,231, 90,138, 56,187,228, 64,106, 6,206,144, 92, 79,116, 6,172, 69, 4,159, 19, -196,131, 97,119, 48,160, 15, 1, 65, 98,191, 30,208, 5,135,148, 50,195,110,180, 98,160, 21, 39,182,192, 98,184,194, 87, 80,229, -181, 23,101, 18,170, 84,185,126, 82,158,190,202, 82,120, 59,155, 15, 96,155,105,236,166, 16, 55,162, 68,181,214,219, 76, 3, 91, - 82,232, 90,189, 21,202,109,186,243, 77, 96,204,102,220,158,210, 37, 15,109,147, 64,248,211, 45,234,155,229,253,120,148,111,214, - 84,226,239, 66,184, 44,108,193,249, 60,122, 39,209,199,252, 66,166,148,195, 86, 98,138, 40, 52, 81, 36,130, 40,191,142, 17,157, - 18, 85, 8, 44, 82,162,242, 22, 99,122, 68, 74,248,224,136,165,155,122,102,215,244,222, 50,148, 42,239, 52, 67,100,162, 53,222, -247,200, 24, 25, 10, 65, 75, 62, 36, 72, 4, 49,120,170, 24,153, 58, 75,171, 27,156,181,232, 24,169,144,232,178,230, 78, 82, 17, -189,163,115,129, 97, 74,236, 42,197, 66, 9,230,126,227, 83, 44,249,209,193, 21, 53,123,121,179, 93,151, 11,111,111, 74,151,144, -242, 27,211, 86, 57,150,213,199, 45,102,179,173,202,232,165, 46, 73, 61,165,160, 19, 63,234,133,244, 41,243,228,125,252,123,198, -113,234, 79, 20,211,253,218,239,253, 22, 90, 75,124,136, 40, 41,177, 54, 98,123, 75,211,182,220,186,117,192,181,241,136,103,179, - 14, 25, 97,111, 90,177, 55,200, 33, 60, 82,100, 76,175,146,185,131,175,148, 64, 41,145,193, 41, 34,175, 85, 98,140, 5, 50,147, -139,151, 40, 86,142,252,251,249, 59, 33, 16,173, 39,244, 22,187,182,152,165,193,251, 64, 90, 91, 22,243, 62,167,231, 89,143,233, - 12, 23, 93, 15, 50, 50,235, 23,116,193, 51,216, 25, 83,239, 14,185,241,175,254,146,207,215, 53, 39,115,195,227, 51,195, 13, 39, -120,147,138,159, 19,138, 87, 15, 70,204,206,123,206, 26,112,195,134,239,164, 53,207, 87,103, 28, 70,201,167,135,183,249, 25, 53, -228,184, 64,112,118,218, 1,182,179,220,179,150,249,189, 25, 79,223,123,206,243,103,115, 46, 90,201,153, 84,188,122, 56,102,168, - 20,203,165,225,100,217,241,100,222,241,248,249, 34,251,133, 3,152,206,227, 66, 44, 70,137,172, 27, 24, 13, 42,118,199, 3,118, - 39, 45,131,186, 66, 43, 81,120, 70,145,206, 6, 58,235,233, 92, 22,240, 72,160, 77,208,219,128,183,129,197, 69,207,163,179, 37, - 23,179, 5, 15,159, 60,226,237,251,239,115,210,173,161,170,169,135, 19,244,206,136,119,151,150, 71, 1, 78,156,229,157,147, 37, - 43,227, 56,239, 60,198,122, 30, 44, 87, 60, 92, 27,144,130,231,103, 43,238,253,224,125,254,234,237,239,112,178,148,168,225,144, - 55,126,254, 13,190,246,231, 95,253,177,182, 54,241,147, 44,234,155,130, 30,210,214, 1, 10, 63,158, 42, 87,143,184,125,125, 2, -170,197, 87, 21,163,182,165, 45,221,146, 9, 27,145,104, 4, 19,105, 98,228, 88,230,195, 98, 68, 18,149, 96,105, 29,235,116,165, -131, 10, 33,119, 81,253, 42,227,159, 69, 25,159, 59,151,255,157, 13,251, 59,132,143,118,227, 90,110, 39, 3,162,236, 69, 21, 91, - 29, 77,165, 96, 56,230,100,103,135, 32, 43,188, 28, 82, 75,149,137,153, 85,205, 52, 37,116, 59,166,151, 31,150, 0, 0, 32, 0, - 73, 68, 65, 84, 68, 57,203,154,196,131,213,140,212, 45, 25, 36,203,136,132, 89,175,120,251,249, 41,103, 79,207,225,244, 28,204, - 34,143,248,157,223, 38,143,137, 43,150,192,166, 42,124, 11, 73, 40, 73,103, 85, 81,229, 87,178,202, 56,255, 16,208,170,130, 36, -112, 49,101, 16,151, 20, 68, 45, 25,106,133,208, 2, 47, 65, 10, 73,146,130, 46, 9,180, 86,244, 46, 3, 90,214, 17, 86,101, 28, -111, 99, 34,181, 13,222,231,189,242,178, 60, 51,214, 34, 15, 31,215, 49,178, 10, 89, 95,227,124, 94, 69,197,126,133, 11,249,192, -110, 92, 79,109, 13,206, 91,132,144,196,100, 81, 66,162,162,197,251,136,116, 61, 42, 6, 68,232,104,131,167, 1, 92, 48, 76, 19, - 88,179,100, 39,102, 58, 95,244, 22,101,215, 40,179, 38,121,135, 54, 29,149,115, 8,111, 17, 49, 48,241,158,224, 61,123, 82,242, -217,221,107,156, 46,207,105,189,167, 74,130,140,197,202,225,153, 83,221, 32, 82,100, 44, 53,109,193,187,106, 41,177, 49, 80, 41, -137, 11, 1, 37, 36, 59,117,195,233, 98, 85,130,137, 68, 46,210, 87, 69,151, 27,107,241,230,186, 81,133, 74,103,202,179,190,183, - 37,169,176,172, 28,219,122, 27, 10, 22, 92,238,196, 99,216, 10,165, 55,226, 99, 81,158,247,170, 68,105, 27,183, 61, 40,108,198, -239,136,172,143, 82,250,167, 88,212,181,222, 98,237, 98,202,106,208,210,117, 95, 22,187, 75,225,129, 33,149,194,110, 17,180,149, -102,237, 93, 73,118,203,129, 3, 74,128, 8, 14, 79, 22,182, 12,100, 66, 57,139, 41,222,192,133, 91,103, 36,108, 76, 92,248, 14, -235, 3,193, 27,214, 49,112,144,114,172,106, 8,129, 29,161, 72, 49,160,145,168, 80,216,190, 18,140,143,232, 8, 59, 90, 82,187, -144, 69,166, 41,191,245, 41, 4,156,204,187,238, 20, 34,227,186, 98, 46, 19, 58,229, 16,146, 71,193,103, 62,188,247,219, 44,242, - 20, 75,113,247,219,241, 9,105, 11,228, 15, 62,139, 37,172,221, 90, 24, 68, 33, 8,109, 34, 93, 55,227,149, 84, 70,237,227, 97, -126, 29,155, 58,255, 25,235,254,142,120,223,171,133, 60,254,200,194,254,230,239,255, 30,191,240,139,159,166,183,158, 80,110, 72, -211, 89,108,239,184,118,243,144,227,221, 49,141, 84, 44, 59,203,238,168,229, 96,212, 50,104,117, 86,189,139, 92, 8,107, 41,242, -186, 73, 10,116,233, 16,124,200, 5, 93,144, 49,167,174,160, 78, 19, 89, 9, 46, 55, 95, 91,200, 59,162,208, 91,170,181,195,134, - 64,176,185,192, 69,231, 73,189, 39, 25, 71,215, 25,122,219,115, 26, 29,115, 25,121,183, 91, 97,154,138,195, 79,223, 34, 62,152, -209,252,229, 35, 94, 29, 31,240,235,205,136,253,139, 53,225,169,231,200, 75,150, 83,201,122, 92,241,158,247, 40, 37,185, 23, 61, -231,227,134,119,149,224, 66,193,177, 82,140, 85,195,129, 28,178, 47, 43,118, 6, 3,166, 66,193,243, 21,247, 79,231, 92,191,189, -195,139,183,246, 56,184,177,203,145,208, 92,107,107,148, 75,216, 62,219, 35,133, 43, 89,238, 87,248, 17, 66, 10,234, 58,187, 3, -118,198, 3,246, 38, 67,246, 39, 13,131, 90,151,107, 59,255, 29, 23, 2, 49, 6, 66, 74,212, 82,146,124, 98,170, 18, 47,213, 53, - 79,103, 29, 31, 60, 56, 99, 54,155,227,188,229,112,111,196,231, 62,117,147,155,215,142,153, 14,119,217, 29, 78, 72, 69, 93,127, -231, 96,194,106,109,120,126,182,162,209,154, 51, 27, 88,199,196,193,225,152,221,189, 17,200, 12,117,154,159,204, 57,174, 27,246, - 38, 83,122,159,241,161,175,191,242, 2,191,248,239,252, 60, 95,249,202,159,125,100,191,254, 19, 47,232, 87, 21,240,155,164,171, -205, 84,235,111,163,202,141, 6,152,193,132,209,116,196,167,247, 6, 28, 14,106,118,107,205,245, 90, 49, 80,138,147,165,201, 15, - 78,103, 49, 46,146,148,230,104,216, 48, 80,130, 86,100,208,202,194,231, 96,161,188,251,235,243, 67,212,102,209, 25,190, 56, 82, -148,222, 78,202, 54,209,176, 31,103,214,111, 86, 7,170, 20,116, 41,178, 85,174,153,192,141, 99,216, 25,195,100,159,231, 85,205, -141,102, 68, 39, 4,123, 77,205,185,113, 56, 96, 71,193,137,181,248, 24,121,107,121,206,217,226,148, 39,103,231, 60,158,157,242, -214,163, 51,158, 62,124, 2,179,243,188, 46,251, 27,124,138,205, 1,191,220,198, 77,181, 77, 2, 67,208,167,128,144,130, 73, 53, -192,166, 68,163, 20,178, 76, 71, 68,138,136, 24,243, 72, 94, 66,244,130,145,202, 16, 40, 33, 37,169,146,132, 36,137, 74, 98,124, -202, 63,146,105,102, 46, 38, 58, 31, 17, 42, 23,241, 40,243, 10, 37,175,128, 99, 30,173,147, 19,212,164,247,172,124,160,235, 60, -209, 25,146,136,132,110, 13,206,144,130,205, 25,234, 66, 18,162, 45,169,184, 14, 21, 19,214, 27,218, 70, 66,176, 12,136, 4,223, - 83,153, 30,229, 3,209, 59,154, 20,113, 33,128, 55,200,224,136,166, 3,103, 17, 46, 79,236,156,235, 24, 34, 32, 56,132, 16, 57, - 47, 66,192,172, 95,229,116,199,226, 67, 15, 36,148, 80, 40, 18,158, 88, 66, 54, 5, 42,101,105, 70,231, 12, 29,177,120,230, 19, - 54, 6,150,214, 51,105,106, 22,222, 95, 97,244,139,220, 41,111, 28, 36,155,113,249,102,148,190, 17,198,165,194,160,135,237,245, -181,217,207,111,148,242, 87,121,241,226, 74, 81,247, 37, 20,198, 20,198,130,210,249,218,221, 96, 2, 67, 73, 51, 68,129,119, 63, -101,161, 92, 91,129, 87, 48, 29,230,125,238,168,217,226, 80,155,234,114, 92,128, 80,121,212,229,242,233,105,181,238,145, 85,131, -113, 6,161, 42, 70,186,194,186, 30, 17, 35, 50, 37,134, 41, 18, 17,212, 41,208, 71,199,202, 59,148, 80, 24,111, 89, 59,139,137, -145,148, 18,141,212, 76,131,197, 91,199, 80,107,134,192, 50, 6, 14, 85,141, 53,153, 24, 85,107,149,167, 5, 62,160,101, 22,105, -212,193, 51, 78, 20, 14, 61,151, 66, 5, 67,202, 76, 99, 18, 6,232, 82,204,227,254, 74,210,155,136,237,203,205, 31, 93, 17, 76, -168,252,117,171,143,189, 54,118, 51,122, 44, 63, 23,229, 77, 9, 69, 81,155,228,246,230,221, 60,232, 54,252, 71, 41,183,209,126, - 54, 67,117,127, 44,113,174, 41, 40,193,205,195, 74, 21,145, 71, 16, 31, 41,236,191,250,235, 95,224,248,250, 1, 62, 38,250,117, - 30,191, 59,147,245, 12,187, 59, 35,110,237, 78, 74,195,162,105,180,162,106, 84,222, 53, 35,112, 49,146, 82,188,124,206,233,130, -131,141, 41, 96, 93,192,197,108,187,202, 76,130, 13,140, 41, 79, 43, 68,140, 40,145,168, 82, 94, 45, 57,231,145,198,209,185,236, -231,118,214, 97,230, 61,177,239,113,171, 53,157,181,204,214,134,185,237, 89, 24,195,105,176,236,191,120,155,157,207,222,226, 43, -127,254, 13,222,250,139,251, 12,142, 21, 47,220,124,145, 23,118, 26,252,196,240,245, 39, 6, 33, 34,143, 71,112,126, 56,196, 95, -159, 50, 18, 2,150, 6, 81,107,226,193, 49, 15, 14,199,156,141, 43, 6, 71, 35, 26,169,209,109,141, 58, 24, 50,108, 27, 14,238, -236,178,127,123,143,118,210,210,122, 24,161,168,155, 10, 85, 41, 70,114,139,207,140, 49, 96, 67,164, 25, 86, 76,198, 13,215,246, -134,220,220, 27,113,109,119,196,193,116,192,100, 88, 51,110,106,180, 86,249,181, 8,145,152,242,136, 94, 10,201,180,209,236,141, -242,104,252,134,150,200,121,199,255,246,111,190, 75,112,145,122, 48, 96, 50, 30,241,194,241,148, 59,187, 35, 82, 76,188,253,195, - 71, 44,206, 47, 16, 62,112,234, 37,119, 38, 53,235,103, 75, 98, 31,217,213, 21, 55,246,134, 44, 58,207, 98,101,105, 27, 77,191, -178,200, 8,211,225,128,225,112,192,218, 71,108,200,195,162, 81, 91,241,218,171, 55,240,178,229,251,127,253,221,143, 20,242,191, - 79, 65,255,219,254,236,175,254,193,239,242,202,103, 62,203, 7,111,191,253, 9,171,162, 79, 56,164, 14, 91,216,221, 37, 76,134, -252,236,222,152, 73, 83, 19,132,100,164, 4, 74, 73,146, 8, 60,176, 41,143,203,215, 38,251,213,119,106,142,170, 28, 8,178,142, -145, 93,173, 8, 4,158, 47,138,255,184,187, 2, 19, 65,111,221, 35,162, 46,162,164, 79, 56,100, 92,213, 4,184, 50, 5, 31, 76, -144,119,239,114,243,238, 45,210,225, 17,118,178, 83,114,229,107,180,210,153, 1,159, 34,199,117,131, 35,160, 17,168, 20,121,104, -123, 78,251, 25,166,239, 88, 60, 62,229,236,222, 3,220,114, 1,203,213,143,159,190,109,178,224, 55,154,157,186,216,251, 66,118, - 4, 5, 41, 88,121,203, 78,221,162,132, 68,136, 92, 72, 66, 12,104, 85, 19, 69, 98,131,126, 10, 82, 49, 44,135,114,155, 68,110, - 10,149, 32, 59,234, 36, 65,102,124,240,218,102, 17,108, 42,207, 64, 81,236,136,202, 7,188,144,136, 50,117, 77,198,230,224,167, -222,129,239, 73,222, 18, 76,143,138,158, 24,115, 98,156, 19,130,228,123,156,207,137,107,222, 88, 76, 74,232,148, 8,201, 51, 66, -226,125,207, 40, 74,186, 16,169, 69, 34,152, 14,153, 32,218,142, 58,120,162,115,140,200,235,170, 97, 10,196, 4, 67, 85,177,246, -134, 86,230,152, 85, 73, 22,232,170,242,236, 81,100,194,168, 32,139,182,129,156,248,137,192,166,188,231,246,228, 6, 83, 8, 8, - 41, 98, 98,194,246,150, 73,211,240,104,181,162,169, 42,236,198,238, 38, 85, 41,172,113,155, 60, 88, 95, 81,158,214,114, 11,166, -145,106,155,247,177, 57, 52, 74,145,109,145,155,149,173, 40,249, 32, 27,101, 59,229,227,189,223,254, 61, 81,166,224,179, 85,110, - 28,155,186,248,229, 29,136,159,150,250,125, 88,252,122,169,202, 59,131,166,201,113,129, 27,127,173, 42,167, 27,228,149, 19,122, -218, 34, 38,171, 10,107, 28, 70, 10, 86,214, 16,188, 97, 90, 88,215, 3, 9, 42, 9, 38,194,179,136,129, 90, 72,214,193, 99,202, -232,109,217,175,243, 69,137, 64,250,142,118, 35,138, 43, 23,243, 68,192,204,244,140,235, 22, 17, 29,201,123,150,222,103, 7,124, -204, 35,185, 29,157,185,191, 31,190,242, 58,215, 46, 78, 73, 73,226,137,140,145, 88,160, 67, 32, 69,194,186,196, 66,101, 72, 78, - 40,202, 79,187, 25,167, 7,159,187,244,166,222,146,134, 40, 86, 6, 10,216,223, 23, 81,157, 43,132, 58,183, 81, 2,151, 55,126, -227,245, 18, 69,100, 81,169,237, 30,101,179,123,140, 41,119, 8, 27, 59,197,213, 7, 65, 83,127,212, 94, 1,219, 36,162,205,184, -176,124,224,183,254,201, 63,206, 56,221,144,112, 54, 95, 64,147,209, 0,129, 98,111,119,140,150, 10, 37, 21,141, 86, 72, 33, 75, - 87,158,227, 83,157,203,162,176, 90, 73,154, 90,150,162, 14, 62, 70, 58,159,149,236,133,220,139,137,145, 40,178, 47, 85,196,144, - 35,143,197,150,123,109, 66,192, 46, 76, 22, 9,245,142,213,202,176,156, 45, 56,159,175,152,245, 29, 51,103,145, 41, 18,157,101, -109,122, 92, 76,236,190,112,140, 62,222,225,255,253,163,175,113,241,112,201,247,186,142,212,172, 9, 56, 62,115,227, 22,111, 54, -137, 39,120,254,236,241, 26, 63, 55,156,159,175,169, 5, 48,110, 25,197,196, 99,179,160, 11,129,190,213,204,118, 71,156, 54,146, -147,169, 34,222, 30,179,216,169,176,149,162, 54,121,100, 41, 7, 53,205,184,166,110, 52, 35, 89, 49,172, 53,173,146,180, 62, 50, - 33, 49,110,107,166,147,150,107,135, 99,246, 39, 3,246,166, 3, 70,131, 26, 93,108,128, 90,201,178,126,141, 36,159,213,255, 82, - 8, 26,173,153, 12, 42,246,234,138,147,101,199, 35,165,248,242,215, 63, 32,133, 28,172,209,212, 53,195,129,226,217,188,103,185, -116, 12,147,228,116,102,153,205,206,120,180,154, 49, 11,137,111,254,240,251,124,240,236, 62, 39, 23, 39,188,251,240, 62,143, 31, -157, 48,191, 88, 48, 95,204, 57,123,122,206,163,135, 79, 57,125,126,206,197,197,140,231, 39, 39, 44,214, 29, 85,173, 8,174,167, -235, 12, 54, 9, 6,187,215,137,202,242,224,189,123,151, 0, 69,254,158, 69,253, 71,125,223,124,187,191,180,124,240,222, 7,208, -175,255,238, 5, 93,235,220, 1, 31,102,129,220,205,166,166,173, 50,238,116, 32, 37, 90, 87,120,231,240,222, 49, 95,153,188,230, - 27,100,178,216, 65,147,115, 35,234,148,232,125, 96,225,115,126,184, 57, 95,110, 35,135,109,233,188,170, 97,238,218, 69, 41,146, -155, 46,253,147,196,126, 82,228,191, 55,220,129, 23,142,121,243,198, 49,135,211, 67,218,193,136, 51,213,146, 68,158,208,205,234, -150,167, 40,166, 34,113, 18, 35, 67,239, 56,247, 14, 17, 19,111, 89,151, 31,204,125, 15, 23, 11,152,205,126,124, 66,221,230,245, -240, 30,212, 32,127,174, 65,102, 71, 64, 44,234,105, 37, 8,206,211, 14, 90, 66,112,104,169,177,193, 51,168,106, 20,153,236, 25, -188, 65, 11,149,215,103,185, 68, 19,108,160, 86, 50,219,172,109, 66, 40,137,136, 9, 93, 30,105, 61, 80, 33, 72,133, 0, 42, 76, -204,114,158,144, 15, 83, 90,103, 13, 11,189, 39, 57,159, 5,202,102,141,240, 14, 65,200,196, 59, 34,214, 5, 98,200, 17,170, 85, - 57,124,120, 41,192,245, 68,233,169, 19,120,231, 24,162, 89, 70,207,184, 30, 16,189, 67,235, 1,157,235, 25, 75,133,113,150,125, - 41,209,128, 70,160,133, 68,138,204, 37,168,164, 32, 68, 79, 85, 38, 9,163, 36,240, 66,228,175,131, 72, 31, 44, 72,141, 38, 17, - 81,185,112,147,138, 51, 89, 32, 98, 66,165,136,147,153,247,174, 8,244, 33,177,234, 13, 35, 93,115, 70,164, 74,121,122,145, 68, -177,153, 41,181, 85,160, 20, 23, 28,141,206, 98, 55, 41,182, 19, 42, 33, 62,122, 77,109,158,219,151, 93,186,222,142,211, 55,142, - 37, 23,114,189, 8,108,187,247, 80,108,112,107, 91,106, 72,209, 86,249,248, 83, 42,234, 74,231, 34, 30,200,114,125, 84, 62,177, -232,156,129,158,199, 21, 41,183, 8, 66,111, 21,130,177,132,164,152, 34,221, 79, 20,123, 67,222, 95, 91,107,105, 73,104,153, 71, - 64,144, 72, 41,228, 44,246,222,226,163,203, 14, 2, 2,131, 2,132,217, 67, 48,174,114,150,179, 46, 23, 56, 68,124, 25,239,235, - 20,105, 35,204,108,192,133,200, 72,128, 45,121,221,183, 79,159,179, 44,144,148, 81,132, 69,121, 23, 12,130, 25,137,133, 16, 44, -125,190, 32,214, 65,112,238,242, 41,249, 50,150, 53, 94, 21,192,197,210, 89,171,141, 68, 49, 67,248, 83, 17,187, 37,114, 52,235, -102, 36, 35,139,176, 78, 94, 17,207,249, 66,170, 43, 88, 81,124, 25,185,200, 43,116,174,116,133,207,189,177, 91,136, 43, 66, 62, -228,246,128,193,214,162,243,251,255,233, 31, 98,186, 28, 44,225, 92, 32,186,192,238,206, 36,159,193,146,164,109,107, 14,134, 45, -195, 90, 83,215,217,141, 16,203, 80,161,210, 32,146,160,105,178,133, 45,199, 80, 71, 92, 12, 24, 31, 8, 41, 71,168, 38,145,178, -133, 80,230,216,220,232,179, 18, 28, 4,222,121, 92, 8, 8, 31, 57, 95,245, 44,214, 22,103, 29,171,222,240,164,235,120,188, 94, -115, 97,123,214, 9, 92, 37, 56,235, 58,150,214, 16, 43,197,203, 47,189,192,201, 98,205,215,254,215,111, 32, 6,146,186, 18, 52, -119,246,249,186,142, 28, 72,184, 62,217,227,243,215,111,242, 89,147,247,204,223,127,106, 8, 35, 80,141, 98, 60, 25,179,127,112, -204, 75,135,199,188,116,227,144,113,165, 9, 90,114,237,230, 14,211,189, 17,207, 47, 86, 72,227, 72,215,166, 84, 71, 99, 70,147, -134,145, 84, 84, 97, 43,142, 22, 62,162, 67,162,173, 85,254,248,184,165, 29,214, 12,219,154,166, 86,217,238, 87, 28,142, 46,101, -191,120, 12,161,192,167, 4, 77,165,169,106,133, 20,138,243,147,158, 7,167, 11,118,247, 7,156,156,175, 49,103, 11,170,170,230, -151,111,236,241,198,241,148,135, 23, 29, 51, 99,120,116,190,224, 7,247, 63,224,157,179,167, 44,187, 30,223,205,232,215, 38, 15, - 98, 18,132,228,115,183, 20, 12,203,213,138,179,229,140,179,197, 57, 23,171, 57,103,139,115, 78,215, 51,158,207,207,184, 88, 94, -240,222,179, 71, 60, 57,125,198,129, 24,146, 82,228,197,151, 94,230,223,252,201,159,254, 72,251,122,250, 49,133, 94,252, 29,138, - 61,139, 89, 46,156,159, 52,221,251, 81,140,133,241, 4,142,247, 47, 73, 93,183,171, 42, 91,122,145,116, 36,250,190,207,217, 0, -120, 30,117,219, 16,142, 78, 40, 38,141,100,110, 3, 41, 69,154,148,144,214,243,238,179,115, 46, 51, 77, 47,177,155, 50,143,224, -155,122,171, 92, 86,242, 71, 79,193, 54,201, 92, 41,193,104, 10,135,187,220,190,118,147,233,104, 23,163, 52,162, 26, 48,208, 21, - 23,190,116,114,222, 17,180, 98,153,224,209,122,141,171, 26,190,231, 45, 31,244,235,124,162,247,174,196,124,174,243, 14,253,111, -211,199, 84, 58,123,158,147, 7, 74, 38,134, 93,231,102,106,227,190,145, 18, 19,242, 65, 77,132,192,176, 25,210,185, 30,169, 21, - 34, 69, 26, 85,147, 66, 94, 51, 58, 23,114,132,181, 84,185,185,241,145, 86,103,129, 43, 34,195,193,214, 33, 18,123, 75, 16,153, -246,104,215, 46, 11, 92,125, 32,134,132, 36, 18, 58,131, 95,175,243,218,109,221, 33, 66, 79,112,150, 16, 60,193, 58, 2,129,228, - 18,142,172,175, 81, 50, 93, 90, 12,125,112, 89,180,236, 28, 49, 69, 26, 50,113,174, 10, 17,157, 32, 9,141,136, 14,180,162,139, -130,166, 16, 2, 13,130, 70,105,230,209, 83, 41,133, 41, 13, 76, 16,138, 4, 52,222,177,146,154, 58, 88, 92,180, 40,153, 93, 58, - 97,147,213, 65,194,136, 76, 43, 13,100,124,109, 37,242, 33, 65,165,242,185,166, 72, 77,100,105, 29, 61, 25,128,165,180,102, 34, - 37,149,210,140,128,186,174,104,148,206,221,127, 42, 66, 56, 87,158,223,186, 52, 85,233, 10, 54,124,147, 13,162,244, 86, 32,183, -177, 76,166,184,213,157,108,224, 67,186, 8,235, 54, 72,114, 85, 72,114,118, 85,252,244,153,191,207,170,251, 9, 23,245,170,134, -122,152, 11, 77,211,108, 59,197,182,222, 6,202,167, 43,116,164, 13, 98, 79,177, 21,127,197, 77, 23, 26, 47,141,248, 89,168, 16, - 57,146, 9, 85, 41,116,244, 4, 23, 80, 49,226, 98,230,100, 43, 41, 89,118, 75,100, 74,180, 41,177,178,134,155,186,206,187,250, -224,217,211, 53, 34,194,210, 57,166,170,166,143,150,228, 2, 77, 65, 67, 6,231,240,198, 16,146,160, 46,225, 35, 73,194,158,212, -204,125,126, 19,155, 4, 39,197,114, 23,145, 88, 41,104,149,224,153, 79, 44,125,196,169,172, 88, 78,137,220,145, 75,181, 85,178, -167,210, 29, 43,182,156,235,203,184, 74, 93, 10, 58,249,231, 37, 41,232,114, 85,177,185, 24,160, 88,221, 82, 81, 12, 23,177, 81, -239, 33,169,226,111, 47,175,175, 42,212,169, 75,235, 91, 9,153, 73, 42, 95,116,155,220,223, 16,248,204,239,255, 7,124,254,115, -159,230,226,124,133,174, 43,136, 25, 12,147,130, 96,119, 60,100, 52,108,217, 27,182, 28,140, 26,154, 70,149,125,176,192,167,132, -136,100,116, 36, 89, 36,183,233,212,125,204, 16, 26, 98,188, 92,253, 9, 41,168, 68, 14,222,169, 68,217,239, 9,208, 62, 18, 67, -164,235,115, 32,137, 89, 90,170, 69, 71, 88, 25,132,181, 44, 58, 75,111, 45, 74,228,220,251,211,174,103,213,119, 57,132,103,210, -242,194,155, 47,242, 23, 95,121, 11,255,175, 79,216,105,160,185,214,210, 87,160,158,206,249,225,122,205,119,194,146,163, 73,195, -241,235,159,226, 55, 62,253, 38, 95,184, 46, 56, 28, 40,102,149,228,177, 8,132,228, 56,237,215,116, 54, 32,146,162, 70,176,190, -232, 89,156, 46,152, 55, 53,211, 59,135,140,174, 77,208,149, 66, 70, 8,179, 30,177,242,132, 62, 91,212,130, 11, 36, 34,177,146, -184, 70,163, 27,141,174,213, 37, 77, 48, 21,149,127,138, 9,235, 2,179,222,177,234,242,148, 66, 73,137, 82,146,189,241,128,247, -159,102,202,156,112, 6, 85,107,174,239,141,104, 22,145,167,203,158,135,103, 51,254,242,222, 51,158,159, 93, 96,157,167,110, 91, - 22,231,115, 30,159, 95,100,228,104, 74,204,215, 61, 54,122,198, 74,179,182,129, 85,112, 24,239, 49, 49, 11,150, 58,239, 89,245, -249, 64,112, 54, 95,241,131,231, 11,124,223, 19, 19,204, 23, 61,251, 42, 59, 19,170,113,203,151,126,251, 55,248,211, 47,255,233, -223, 40,232,252, 67, 88,241, 31, 47,238, 87, 57,241, 63,142, 25,223, 78,224,230, 33,236,142,178,216,118, 80, 65,128,164, 5, 85, -204, 29,166,113,129,150,200,147,181,229, 91,103,102, 11,136, 41,207,150,147, 36,120,169,202, 99,230,117,103,121,235,225,156,228, - 74,254,244, 38, 17,173, 42, 99,209, 16,202, 90,176, 60,131, 62, 30,125,250,241,157,250,100, 47, 7,172, 92,191,201,231,118,247, -121, 97, 58,229,246,100, 66, 91,124,226,247,205,106,203,151,112, 22,103,123, 80,138,133, 47,241,157, 17, 88,157,230, 46,219,153, -252,255,157, 45, 63, 6,136,250, 4,171,176, 32, 79, 66,243,252, 59, 23,121,155, 69,154, 84,242, 18, 84, 21,148,192,200, 72,240, -185,161, 9,209,163,117,133,148,185,203,148, 34,147,228, 66,240, 52,149, 98,237, 92, 97, 33, 68,214, 38,175,107, 86,189, 37, 57, -143,174, 43, 98,116, 68,227,179,107,207,122,100,136, 8,219, 35, 41, 2, 97,107,137, 46,107,137,172,237, 72, 27, 93,141, 16, 89, - 52,231,109,137,255,149,184,148,133,118,189,207, 59,118,235, 60, 54,250,146,171, 18, 49,174,167, 18,146, 62, 4, 26,145,136, 50, - 35, 93, 91,169,168,165,162,139,158, 29,169, 88,199, 44,108, 91, 69,135,143, 1,169,179,224,109,229, 45,161,106, 72,209, 97,144, - 68, 33,104, 82, 98, 22, 61, 41, 69, 66,140,116,209,229, 41, 79, 10,120, 66, 57,124,230,103,148, 66, 98,163, 69, 36,129,141, 1, -169, 4, 38, 36, 90, 37, 25, 11, 65, 43, 21, 83, 37, 25, 40,137, 21,137,105,147, 51, 60, 76, 42,224,154,250, 74, 33,142, 92,201, - 1,185,146,183, 46, 75,179,235,220,150, 62,154,200,236,252, 65,137, 87,173, 84, 17, 94,151,110, 93,108, 60,242, 64, 23,242,129, - 78,144,163, 92,131, 67,255, 68,133,113,170,201,167,197,205, 56,160, 85,249, 11,219, 20,163,171, 39,242, 90,111,189,217,165,225, - 68,139,162,236, 43, 76,115, 27,144, 56,134, 90,178, 19, 5,115, 11,199, 98,197,168,110, 51, 76,205, 25,164,108,216, 19,154,167, -221,146,157,170,162,179,134,144,224, 72,215,216, 16,153, 8, 24,171,154,174,236, 89, 14,116,205,210, 91,118,208,204,177,172, 67, - 68,133,136, 38, 43, 42,165,246, 44, 13,184, 74,163, 98,226,185,235,144,149,102, 29, 50,225,105, 71, 42,102,228, 83,145, 36,135, - 20, 88, 34,123,173,102,209, 59,162, 86, 89,229, 62,110, 96,105,182,147,139, 80, 96, 49,169,124,157,254,202, 14, 79,149, 31,211, - 21, 79,162, 17, 48,186,178,155,217, 16,235, 98,177, 58,216,176,213,189, 13, 11, 41,206,232,252,111,153,152, 39, 35,148, 92,236, -170,164,106, 73,189,125, 52, 71,113,249,190,189,121,231, 38, 49, 65, 59,108, 16, 90, 98, 93, 32,153,128,115,185, 91, 81,149,204, -160,147,178,247,174,149, 40, 78,164, 44, 56, 49, 62,162,138,201, 89,108,222,234, 50,136,137, 69,176,185,137,154, 23,136,156, 52, -152, 4, 82,230, 49,161,244, 33,171, 86, 59,131,155, 25, 84,111, 11,203,191,104, 79, 66,192, 6, 71,159, 18,125,111,176,206, 32, -108, 32,166,192, 94,219,242,176,115,252,233,187, 15,185,253, 70,197,200, 66, 67, 66,156,172, 56, 57, 26,113,231,229,215, 89,156, - 61,225,191,139, 29, 47,135, 57,191,110, 87, 28, 31,222,230, 75,117,203, 23,206,159,243,131,229,115,238,173, 35, 95, 94, 95,112, - 18, 3, 79, 42,201,207,238, 28, 51,158, 52,168,107, 19,246, 14,247,152, 30,140,144, 74, 98, 66,194, 45, 58,170,149,195,150,117, - 4, 54,167,186, 5, 45,112,149, 36, 21, 26,156, 14, 9,225, 35,158, 72, 40,112,165,232,193,185,196,122, 29, 80, 36, 68,157,201, - 93, 49, 74,222,190,191, 32,185, 72,171, 96, 58,108,121,218,121,236, 78,205, 63,123,105,194,119,204,138,127,241,116,129,143, 62, - 31,168, 26,197,155,159,191,203,247,191,255, 61,238, 61, 95,114,115, 84,241,107,135, 55, 96, 26,249,198,124,206,176,110,217,175, - 7,220,222,191,198,141,233,148,115,111,121,124,126,142,241,134, 85,183,228, 83, 71, 13, 7,163, 29, 46, 86, 75,158,246, 11,246, -116, 67, 45, 34,157, 2, 21, 2,194, 68,190,248, 43,175,241, 95,255, 45, 29,122,250, 17,123,247,159,152, 5,174,109,217,185,123, -141, 52, 26, 35,134, 3,122,173,241, 41, 17,130,227,161, 75,220,174, 61,206, 67,231, 28, 30, 79,146,101,229,197, 71, 57, 16, 17, -248,234,188, 76, 2, 93,159,159, 47,178,192,155,218, 9,248, 46,239,215,171,186, 60, 92, 55,172, 8,121,217,204,255, 77, 21,190, -206, 35,247,107, 59, 48,157, 66, 91,115,176, 59,101, 58, 24, 34,133,228,184,170,232,206,230,249,243, 89,207, 11,167,163,221, 10, -135,165,132,174,227,118, 93,113,214,238,178,182, 43,234,182,194, 74, 9,135, 83,120,210,125,242, 42,162,169,175,156,144,178, 32, - 12,116, 1,159,100,245, 51,115, 67, 14, 68,175, 97,217, 97,125,228, 98,144,223,161,131,225,148, 69,183,196,200,142,189,241, 1, -189, 89,210, 52, 67,132, 23,172, 18,168,186, 97, 57,207,182, 71,173, 43,250,232, 81, 73,210, 69,143,181, 61,131, 74, 99,157,165, - 81, 67,186,213, 18,165, 21,237,176,194,175, 59,162,179, 72,145,240,214, 33,149, 36,164,128, 3,188,181,101, 5,144,175,152,222, - 25,180,200, 90,136,149,235,240,222,145, 80,116,209,160, 82,142, 16,237,172, 97,208,140, 9,101, 84,190, 38,209, 6, 11, 85,139, -148,208, 91,195,245,193,148,179,110,206,158,144,172, 98, 96, 32, 20, 94,128,179, 61, 75,165,217,169, 26, 30,117,107,118,155, 66, -243, 75, 48,147, 2,233, 61, 81,105,188,136,248, 62,215, 0, 71,194,199, 72, 93,215,152,148,178,255, 30,193,146,148,209,204, 74, - 81,167,200, 16,113,169, 37,104,154,124,184, 59,239, 35, 71,117, 13, 82,226,101, 96,169,134, 4,105,179,253,176, 41, 5,217, 95, -205, 89,151, 91,139,166,247, 31, 93,169, 92,118,249, 62, 83, 70, 55,251,246,141,152,122,115,237,106,153, 39,189,227, 97,190,134, -157,253,136, 44,250, 39,243,173, 46,133, 56,216,140, 36,213,117, 25,161,139,143, 65, 25,202,233,164,119,249, 11,118,229,215, 38, - 92, 25, 71,196,178,128,245, 68,217,162,116, 69,178,145, 29,237,104,172,162,247, 29,187,186, 34,106, 65,111, 87, 64, 98, 42, 20, -143, 86,107, 14,116, 22,125,116,166,131, 42, 39, 13,137,166, 98, 32,171,242,224,137, 52, 90,208,123, 71, 29, 35, 78, 64,231,125, - 14,134,145, 18,150,134,117,163,209,192, 89,128,161,208,168, 16,168, 10,157,163,147, 10,161, 21, 9,193, 72, 87,132, 4,159,169, -106, 46, 66,224,212,184,172, 20, 29, 54,249,164, 54,172,179, 26,119,163,162,189,138,105,213, 34, 23,225, 88, 66, 0,130,206,150, -154, 77, 97,151, 41,167, 59,169,226,139,244, 97,235, 93, 44,118,176, 75, 76,108, 36,191,222,182,252,219, 67,189, 45,248,151, 1, - 26,155,255, 75,111, 11,122, 57, 83, 93,187,125,227,242,115,202, 18, 18, 81, 38, 83,249, 66,148, 81, 18,124, 22, 31,110,180, 67, - 66,228, 63,171,149,184, 76,221,173,149,200, 16, 37,178,117,205,167, 88, 2,177,242, 9, 53,164,148,247,237, 72,162,207, 73,122, -193, 6,154,148,149,238,110,237,208,197,121, 96, 0,227, 29,198, 88,214,125,199,172,235,145, 36,132,179, 4,235,145, 36,130,150, - 12,199, 3,190,255,193, 3,150, 95,153,243,149, 99,201,254,169,229,215,247, 26, 94,126, 97,200,226,241,130,123, 23,223,224, 66, -193,162,210,236, 69,248,111,215,107,126,121,239,144,234,180,227,101, 85,243,185,163,215,249,247,142,111,242, 79,102,167,124,227, -102, 67,251,230, 13,142,238,238,229,123,208, 37,116,165, 17, 62,208,135, 60,102, 84, 2,210, 40,147,181, 36, 2,233, 50, 75, 32, -200,124,125, 87,100,155, 86, 21, 34,149,143,216,232,115, 98, 96,217,217,133, 62,226,109,158, 56, 33, 37, 33,230,108,131,211,251, -107,162,244, 60,239, 61,222, 59, 30,159,207,184,251,133, 23,137, 55,119,184,247,214,135, 92,172,151, 8, 1,163,166,229,104,111, -143,221, 81,195,209,222, 17,191,249,233,138,100,214,236, 79, 15, 56,237, 46, 88,167,196,163,231,103, 44,141,231,165,211,231,188, -118,237,144,233,222, 33,203,126,193,186, 55,220,222, 61,224,213,163,235,188,124, 48,226,193,197,138, 47,255,240,175, 88, 44,102, -188,176,183,199,139,251,135,220, 58, 56,228,240,250,148,187,135, 19,254,229,255,244,207,249, 79,254,179,255, 28,212, 0, 49, 26, -195,225,136,116,112,200, 63,190,113,196, 31,175, 86,172,159, 61, 39,157,156, 34,158, 94,128, 89,126,180, 99,223, 57, 34, 29,236, -192,221, 87,152,142, 15,153, 47,158,230,103,195,226, 28,206,230,136,211, 11,146, 89,253,232,226,165, 53,140, 39,164,209,152,235, -147, 17,170, 25,162,129,185,115,124, 24, 18, 67, 25, 89, 88,203,164,146, 84,193,241,212,194,131,133,217, 10,143, 98, 42,211,171, -152,243,202, 77,202,247,150, 47, 72,207,203,123,178, 20,207,166,222,118,237, 27, 56,147,214, 63,218, 68,162, 91, 24,239,194,241, - 97,193,211, 14, 25, 55, 99, 8,142,224, 61, 86, 64,139,100, 32,122, 88, 92,228,117,195,168,133, 33, 48, 57, 6,215,241, 11, 56, -154,233,132,199,243, 57, 71, 85,102, 21, 84,214,242,221, 90, 93,106, 1, 62,241, 91, 40, 48,169,148,242, 93,162, 54, 63, 47, 33, - 80,107,155,153,226,203,242,111, 52, 26,172,193, 84,146,147,144, 88, 37,207,141,122,138,175,107,116,183,160,210, 53,201,174, 24, - 84, 99,122,215,209, 70,143, 80, 21,189, 51,180,117, 3, 66, 50, 95,175, 51, 11, 62,130, 49, 29,109,221, 98,102, 39,212,170, 66, -167,200,234,124, 65, 91, 85, 16, 61, 94,120,208,224,173,199,135,136, 23, 57, 26,123,105, 13,149,140,244, 33,101,107,170,144,120, - 99,208, 2,214, 49,139,102,149,172,177,193, 18,173,103,183, 25,211,187, 53,168,134, 54,145,117, 57,101,135, 46,128, 97, 51,228, -172, 95, 49, 84, 21, 42, 37, 66,232,216,169, 6,244,174, 39,169,154, 67, 41,121,226,179,102,228, 3,179,102, 87, 41,198,213,144, -222,245, 72,221, 16,146,197, 27, 79,163, 21, 3, 33, 24,164, 68,175, 53,203,228,233, 99, 6, 64, 61,245, 57,155,161,119, 33,247, -156, 74, 80,213,154,129, 74,232,242, 30,117, 40,174,143, 91,158,216, 28, 46,165,133,160,209,146,245,160,212,191, 88,220, 80,161, -216,208, 54,220, 17, 95, 66, 88, 16, 91,167,211,149,237,108, 22, 81, 39,104,138, 48,206, 22, 58,233,230, 97,107, 74, 30,251, 16, - 88,235,143,220, 71,250, 39,214,165,235, 42, 95,240,114,131,195, 43,224,251, 13,150, 81, 95, 17,108, 41,149,139,212,166,160,199, -114, 2,217,132,204,199, 50,158, 42,187,136, 42, 70,218, 20, 24, 7, 65,165, 36,131, 24,136, 62, 65,144, 25, 50, 32, 4, 34,244, - 84, 41, 34,131,160, 22, 42,243,199,147, 97, 52,152, 32,172,101,210, 14,153,247,107,122, 60, 45,249,180,219,165,200,210, 5,180, -150,224, 36, 38, 56,168, 36,195, 16, 89, 58,193, 72, 75, 98,202,221,110,160,198, 43, 50,208,161,124,205,193, 39,218,170,198,132, -132,142,240,218,209, 30,223,158,173, 89,251, 8, 85, 81,165,143, 70,208, 25, 96, 8, 39,167,249,141, 33,150,132,182, 43, 29,187, -240,101, 98,225,183,158, 93, 87, 70,246,233,138, 48,103,211,161, 75,181,101,206,203, 2,248, 31,214,249, 71,239,182,135,136,232, - 63, 86,220, 47,211, 92,138,186,210,211, 12, 27, 86,171, 14,129, 32,132,136,148, 18, 93, 85,236,239,141, 57,156,180, 8, 20,139, -165,101,111,218,208,200, 68, 72,130,222,101,194, 94, 45, 36, 82,201,156,208, 86,171, 2,224, 74,248,152, 5,144, 98,227,212, 75, - 9,173, 4,141,148,185,179, 21,121,196,143,150, 44, 66,192, 11,129, 41,125, 94, 21,242,158, 90,250,192,220,121, 22,222,229,235, - 64,128, 23,162,164,210, 38, 26, 33, 57, 24, 79,248, 63,191,254, 13,190,141,135,168,120, 42, 96,231, 73,207,219, 11,135,172, 4, -183,251,196,235,119,134,132, 23,135, 60,141,134, 83, 60,127,254,244, 41,175,190,112, 23,185,127,141,231,131, 49,191,220, 56,210, -221, 99, 62,247, 75,183, 25, 76, 26,164,202,236,233,229,220, 18, 66,192, 46, 45, 62, 69, 42, 93,132, 69, 77,118, 17, 68,178,207, - 55,166,148, 1, 81,229, 44, 38, 67,162,242,137,202,231,151,184,243, 1, 73,202,160, 64, 9, 52, 32, 43,129,247,145,206, 68,158, -252,245, 41, 73,192,169,243,172,141, 35,120,199, 98,214,115,255,225, 25,221,221, 3,228,189, 39, 8,225,144,149, 98,160,106,142, - 71, 53,196,196,181,227, 3, 30, 61,126,192,151,127,240,152,127,181,250, 0,166, 21,105,238,192, 68, 82, 31, 56,101,201,215,213, - 51,196, 72, 80,239, 84, 12,106,193,236, 91,239,103,152, 73,163,152,214, 10,173, 5,183,246,106,174, 13, 70, 8,235,216, 25,213, - 52,195, 10,223,123,126,254,149, 91,136,207,126, 6, 66, 5,147,154, 52,154,240,251,215, 95,228,165,155,251,252,202,179,115,254, -120,176,139, 60, 56,130,151, 61,156, 60, 37, 61,155,195,222, 8, 14,143,224,213,207,209,220,125,145,255,242,103,142,233,164,226, -191, 57, 89,177, 62, 93,192,179, 25,156, 63,207, 66,185,147,247, 51, 94,117,118, 10, 31,220,223, 10,196, 84, 11,215, 15, 17,109, -205,180, 25,114, 52,174,121,190,182,188, 60,104,152, 42, 65,237,123, 4,154,181,113,156, 57,120,104,220,182, 40,199, 84,208,170, - 62,251,207, 29,127,147,162,216,212,249,255,218,216, 65,175, 10,211, 54, 31,251,248, 97,163,169,115, 76,241,222, 46,236,142,203, -122,113, 8, 82,114, 84,122, 20,210,154,189,170,162,119, 61,181, 93,100,117,253,201, 9,248,105,102,212,175, 78,184, 59,222, 71, - 72,201,249,252,156,170,105,153,154,142,211, 4, 66, 68,126,161,213,188, 53, 30,100,219,106,138,159,220,173, 39,147,119,233,212, - 32, 29,196, 10, 82, 93,148,252, 85,214,238,200, 30,150, 5,104, 82, 87,176,232, 8,181,163, 75, 3,238,185, 51,110,178,203,194, - 44, 57, 30,237,230, 46,218, 5, 6,109,131, 15,158,196,146,182, 26,229,144, 19, 20,109,221,210,151,204,119, 85, 85,244,235, 37, - 33,121,146,242,248, 24, 24, 15, 6, 56,211,101,177,172, 86, 88,111, 73, 49,147,229, 36,176,234, 87,232,130, 76,207, 26, 40,240, -193,210,199,136, 45,224,175,144, 34, 43,211,179, 87, 55, 80, 43, 46,130,161,173,134,156, 23, 68,110,171, 5, 93,136, 92, 75, 61, - 67,165, 57,214, 48,168, 26,162, 51,172, 83,228,238, 96,135,123,221,140, 93,221,208, 0,139,224,178, 94, 39, 4,214, 66,225,132, -100,238,214, 52, 74, 65,114,204,141, 5, 33,104,125, 98, 34, 68,225,115, 4, 36,138,152, 2, 39, 33, 49,172, 20,115,227,209,165, - 41,233, 93,224,168, 85, 12,148,102, 21, 34, 73, 43,134, 72, 28,112, 60,168,232,188,192, 9,197, 17,145,199,194, 97,199, 5,243, -109, 77,110, 96,253, 21, 6,131,190, 98,125,107,175, 76,178,117,181,117,100,196,144,175,177, 88, 30,126,151,126,119, 7,163, 42, - 23,253, 72, 78, 40,116, 91, 56,210, 79,102,167, 94,215,249,147,145, 5,111, 23, 74,145,222,200,253, 55, 5,168,100,173, 99,220, - 71, 99, 68, 55,157,251,229,136,126,115,106,206, 6,192,253, 86,115, 80, 73, 6, 82,179,171, 96,164, 52, 62,198, 60,194, 41,151, -119,159,114,186,215,133, 15, 12,180,102,183, 82,132, 16, 9,206,208, 42, 77, 42, 59,197,113, 85,115, 98,214, 52, 73,177, 32, 17, - 83,226,220, 71,162,138, 12, 19,184,152,112,192, 48, 38, 42, 20, 49, 70, 98, 76, 24, 18,170, 4, 14, 36, 37, 49, 82,177,142, 9, - 47,193, 75,208, 40,214,222, 49,173, 43,102, 73,176,211,182, 24, 41,168,218,150,144, 34,114, 48,202, 67, 11,145,133, 51,200, 66, - 18, 74,155, 99,153, 36,135, 9,151,179,150,204, 69, 42,219,221, 74,184,203,134,229,185,121,120, 73,145,145,131, 66,228, 3,148, -139, 91, 27, 68, 42,188,104,121,165,160, 95,198, 18,114,169,156,127,233, 75,191,205,111,254,234, 27, 88,159, 48,198, 17, 93,194, -152,140,214, 77, 81, 48, 29, 15, 81, 82, 34, 81,140, 91,141,143, 57, 64,199,135,236,237, 20, 5,214,162,181,100, 84,201,178, 42, - 74,244, 62,251,211, 33,149, 21,126, 22,183, 84, 50,211, 4, 19,153,190,167,138,237,205, 27,207,197,210,176,234, 45,157,179,156, -116, 29,235, 62, 35,132,141,181,216, 34, 44, 75, 49, 11, 26,155, 16,184,241,210, 29,186,221, 17,255,226,255,250, 43,208,240, 51, - 63,191, 79,115,179,225,161,177,124,127,230, 89,107,248,208, 37,218,169, 98, 48, 81,180,131, 38,187, 37, 4,200, 97,197, 7,222, -242, 78,116,252, 69, 35,153,221, 28,179, 35, 4,235,185,207,228, 80, 23, 48,198,225, 59,139,232, 29, 77,163,169, 43,133,174, 43, -164, 86,164,178, 31,139, 2,108, 74,185, 3,137,153,161,160,108, 96, 16,160, 9, 57, 93, 14, 27,144, 49, 80, 9, 73, 43, 4, 35, -169,104,170,124, 48,248,224,201,140,175,127,235, 67, 22, 11,143,136,137,241,168,193,244,134,139,211, 83,158,127,248,152,250,238, - 33,107, 47,169,147, 38, 73,141,241,134,139,222, 49,190,190, 71, 88,246, 16, 61,223,254,230, 3, 88,120, 68, 35,248,204,157, 29, -222,120,241,128,134,187, 93,191, 0, 0, 32, 0, 73, 68, 65, 84,209,181, 1, 95,248,185, 59,252,230, 47,191,201,235, 71, 67,134, -201, 51,214,130,179,148,168, 43, 73,248, 97,143, 59,247,152, 29,201,201,204,241,108,181,224,162,159, 49,115,142,123,114,194, 55, - 58,199,183, 87,142,112,227, 85, 30,174,122, 24, 76, 65,183,188, 60, 30,209, 74,193,247, 47,230,156,186,132,208, 45,236, 28,194, -120,138, 56,190,142,248,165,223,134, 47,124, 1,174, 95,227,159,222,217,231,119,247,107, 34,130,175,158,172, 89, 93,172,115,129, - 57, 62,128,155, 55, 33,141,225,229,207,242,123,199,183, 16,119,238,114, 54,191, 40,137,107, 35, 24,104,118, 39, 19,142,106,205, -194, 69,142, 42,197, 60,194,142,244, 12, 8,236,198,196,158,150, 28,214,130, 51, 23,232, 72,217,218,149, 34,204,215, 96, 75, 84, -102,252, 17,251,233, 31,103, 1,253,248,199,154, 26,244, 0,142,246,225,230, 81,238,164, 7, 99,168,219,203, 17,248, 69,112, 28, -235,138,107, 42,130,235,168,157,225,251, 39,143,120,244,195, 71, 48, 63,207,247,243,176,134,166,229, 77,145,152, 11, 73, 31, 35, -199,209,115, 46, 20,187,193, 48, 77,145, 69,136,156, 44,139,255,248,147, 44,109,151, 24,209, 2,189,145, 37,135, 23, 85,244, 51, -114, 75, 41, 35, 71, 18,231, 17, 48,224, 3, 73, 38, 2,145,117,200,217,235, 43,219,163,164,166,247,166,208, 53, 45, 90, 10,172, -235, 50, 56, 9, 79,103,123, 20, 2, 19, 12, 34,230, 88, 87, 31, 13,117,221,178, 54, 75, 82,140, 24,223,229,251, 58, 37,124,176, - 56,239,113,201,209, 23,226,219,202, 57, 86,166,195, 16,233, 92,207,154,136, 66,210, 71,207,202, 90, 22, 41, 33,163, 96,229,243, - 24,125, 80, 55,116, 54, 79,122,171, 70,115, 97, 35,149,212,172,146,192,104,205, 68,130, 18, 57,175,189, 18,130,101,140, 28,170, -138, 62,197,156,110,167, 52, 30, 65, 39, 53, 22,232,149, 68,232, 26, 39, 20,125, 10, 56,173, 56, 11,145,186,174,120, 28,139,210, - 93,105,206, 80, 56,169, 17,186,162,139,137, 74,107,100,211, 48, 80, 26, 41, 21, 38,229,120,112,173, 21, 90, 85,212, 85, 69, 82, - 16,189,166,170,242,223, 75, 33,242, 60, 93, 9,241,146, 34, 95, 3,133,160,122, 41,204,220,172, 99, 55,190,245,206, 22,213,113, - 17, 51,167,114, 77, 75, 89, 18,255,202,239,233,162,181, 18, 50,231,131,164,242,140,239,186,159, 80, 81,223, 40,218,235,225,182, -216,140,155, 60, 66,175,171, 92,172,140, 47,157,119, 17,107, 85,165,176, 95, 21, 11,144, 50,174,177,239,243, 39,105,182, 97, 48, -243, 32,120,161,150,140,100, 6, 56, 16, 35,141, 84,244, 49, 20,225, 85,182,152, 61,237, 61, 85,157,199,239, 3, 89, 35,131,207, -158,202,152,199, 55, 67, 37, 88, 57,207,173,175, 62,224,244,246, 20, 68,226,129, 11,104, 33,136, 73, 82, 75, 24,132, 92,164,100, -217,177, 8, 41,177, 41, 49,212,249,112,146,164,196, 39, 65, 7, 24,157,139,157,148, 26, 27, 35, 97, 48,160, 82,217,242,229,128, - 65,173, 17, 49, 50, 26, 12, 88,123,143,108,106, 82, 83,109, 71,131,170,236,182, 85,241, 65, 92, 82, 40,227, 54, 70, 53,168, 60, -177,144,234,146, 35,158,105, 68,122, 27, 52,176, 41,212,155,172, 93, 91,156, 4, 50, 94, 9,136,217,180,255, 27, 47,125,238,102, - 94,121,227, 13,222,124,243, 21,186,222, 98,251,128,119,129,126,109, 25,142, 91,130, 73,212, 77,205,164,174,185,190, 55,160,174, -244,101, 67,180,185, 88, 99, 74,200, 4,149, 18, 52, 58, 99,119, 67, 76, 24,159, 21,199,130, 12,116, 80, 50, 83,230,148,206,244, - 57, 17, 83, 22,168,148,233,140,142,145,100, 60, 43,235,112, 46,176,114,158,182,136, 67,102,166, 99,101, 13, 85,240,212, 33,145, - 20,168, 65,205,141,215, 94,226,249,147,231,124,253,171, 15, 80, 93,226,217, 69,199,252, 81,135,185, 8,224, 18,171,161,132, 93, -201, 91,239,244,252,127,125,199,100,209,241, 90,130,131, 70,243, 43, 14, 62, 53,222,225, 83,215, 14,217,215,146, 7,167,115,190, -118,178, 96,120, 52, 36,106, 56,233, 13,231, 93, 30,169, 78, 7,117, 70,186,214, 21, 82,203,140,218, 20,224, 73, 57, 38,213,101, -145,159,179,249, 33, 90,155,136,238, 29,218,120,164,241, 25,125, 27,161, 65,210,232,138,193,160,162,109, 20,111,157, 44,121,248, -151, 15,243,219,227,160,173, 43, 6,195,138,174,179, 68,227,152, 45, 46,120,244,188, 35, 13,224,173,119,223, 99,237, 12,149,206, -235,152,195,187, 71,188,112, 48,228, 83,135, 59,220,251,171, 31,240,248, 91,115,196,163,200,231,126,238,128,189,241,132,167,231, - 75, 94,216,221,229,230,193,117, 6,205,136,215,175,221,224,223,127,225, 21, 94,220,155,242, 95,253,206, 23,185,117,171,165,211, - 75, 94,191, 62,101,181,178,156, 34,153,254,236,231,208, 59,215,185,254,153, 91,248,113, 11,173,198,116,134, 31,222,123, 8,103, -207,192,116,172,237,130,238,244, 25,223,126,250, 4,218,125,120,241, 53,196,203, 47,193,249,138,223,189,251, 10,191,189, 51, 64, - 41,201,195,247, 30,241,215,127,252,255,176,227,134,252,239,127,242, 53,222,255, 55,127, 4, 15,239,193, 7,223,133, 39, 15,225, -241, 83, 24, 78,248,252,157, 99,110, 29, 31,240, 84,142, 56, 25,142,242, 56, 81, 10, 24,143, 56, 84,154, 86,105,116,130, 69,140, -204,186, 53,187, 10,110, 10,193, 68, 72, 38, 90, 49,214, 26,131,231,241, 34, 67,103,152,247,121,199,216,123, 62,121, 41,254,119, -209, 7,105,216,221,133,221,157, 92,204, 15,246,114,119, 62,154, 22, 43,220,230,123,190,175, 30, 44,206,137,235, 5,179,229,140, -239, 63,123,194,119,190,249,126,222,167, 27,123,249,245,220, 29, 12, 49,192,216,173,184,214,182,188,103, 58, 38, 49,235, 71, 30, - 59,199,190,148,188, 62,150,116, 82,179, 58, 93,125,178, 96, 78,136,210,202,216,252, 99,148,121,194,167,171,252, 60, 73,174,164, -124,153, 92, 68, 76,200, 98,229, 77,100, 44,130, 96, 45, 29,129, 36, 96,105, 59,148,136,184, 20,177,222,210, 59,203,194,245,164, - 20, 48,206, 97,189,197, 38, 71, 76,240,193,249, 35,140,239,233, 76,199,217,242,130, 16, 3,115, 51,167,213, 89, 68, 55, 91,207, -145, 66, 49,239, 23,216, 82,208,151,102,141, 11,129,117,244,172,157,199,166,140,141, 62,247,142,189,186,225,190,143, 84, 90,243, -190,144, 28,212, 53, 78, 10,164,172,216, 27, 15, 89, 38,201,220,123,218,170,166, 71,208, 75, 77, 35, 36,170,174,217,209, 53, 21, - 16,148, 68,145, 88,136, 68,171, 43,140, 82,172, 98,164, 43,137,115, 65, 8,134,237,128,170, 4, 81, 5, 85,179,138,138,132,226, - 89, 72, 28,140, 70, 60,240, 18,161,234,236,203,175, 42,246, 70, 3,246,135, 35,166,163,150, 86, 87, 8,169,233,147, 98, 41, 5, -136,138, 97,219, 18, 85, 77, 18,146, 65,213, 96,138, 5, 41, 74,193, 34, 74,106, 37, 89,167,132,212, 13, 73,203, 44,156,214,242, -138, 56, 83,228,203, 51,165,178,103, 87,185, 94,250, 43,161, 64, 27, 16,205,230,251,165,112,165, 60,215, 71,131,124, 16, 24, 15, -243, 97,116, 58,253, 9,193,103,218, 77,151, 46,183,157,186, 13,249,228, 32,203,130,191, 45,187, 3,185, 41, 74,229, 4, 19,202, -206,221,150, 46, 61, 27, 9,183, 88,198,162,146,191,181,215,112,189, 82,236,169,138, 70, 10,132, 84, 68, 18,163, 74, 97, 98,202, -136,209, 4, 81, 9, 92, 72,200,148,176,214,100, 75, 81,132,206, 90, 70, 74,211,165,196,218, 58,254,249,241,148, 95,208,154, 83, -107,217,169,242,233,110, 82,105, 22, 73,208,200,204, 20, 94, 23,161, 22, 54,135,199, 40,221,208,199, 98, 37,168,170,156,199,142, -196,107, 77,165, 52, 15,173,167,213, 53, 74,231,155,108,169, 51,112, 66, 21, 47,207, 88, 43,218,182, 65, 43,133,241,101,191,151, -194, 21,107, 91,121,253, 54,184,216,164, 41,225,184,133,243,190, 73,228, 17, 91,202, 80, 74,249, 66,216,172, 60, 76, 1,102,184, - 50,206, 55, 87, 64, 5,206,110,109,118, 73, 92, 62, 48,126,237, 55,126,141, 91, 47, 94,231,244,100,133, 53,174, 12, 0, 36,135, -187, 59, 84, 72,170,170, 66, 42,193,241, 94,139, 86, 42,199,224, 74,177, 9,222, 3, 1,109,165,168,107,133,146, 89, 33,103, 67, - 86,150,250, 13,127, 64,230,112, 23,165,179,157, 77, 36, 72, 62, 18,173,203, 29,108,130, 36,242, 65,224, 98,237,104, 98,194,164, -192,220, 24, 22,235,158, 89,103, 50,198, 23, 88,120,143,175, 5,131,189, 29,118,111, 30,241,189, 63,253, 38, 60, 49, 92,219,211, - 60, 63,241,176,220,172, 54,128,219, 45,175,189,113,141,120,183,230,248,238,132,111,181,146,217, 78,195,123,181,230, 94,114, 44, -136,236,118, 61,215,214,142, 55,215,158, 21,137, 46, 6,206,231, 29,170,213, 84,149, 66, 41,197,100, 80,163,155, 10, 93,105,146, -146, 89,140,227, 3,193, 7,156,245,244,107,139, 95,187, 60,233,176, 17,209,123,228,202, 94, 22,117,233, 98,222,183,105, 69,213, -214, 84,163, 6, 89, 73,190,119,190,226,247,133,226, 78,210,188,123,209, 33, 85, 62, 52,121, 27,152, 45, 45,122,103,151,207,238, - 13, 8,195,150,119,238, 61, 99,103,178,195,171, 47,189,198,139,215,110, 48,104, 36, 39,193,243,205,127,253, 45,222,126,126,193, -108, 79,193, 99,207,123, 99,203,237,151,174,115,182,187,207,129, 89,242,103,127,241,109,158,199, 14,221,140,152, 12, 71,188,127, -246,156,217,233,156,221,221, 3,238,254,193,239, 48,112, 2, 87, 89,174,255,234, 63,226,181, 95,124,157, 95,249,244,173,156,108, - 54,106, 8,179, 57, 95, 60,108,248, 63,254,232,203,112,255, 1, 60, 63,103, 33, 60,143,134, 7,252,199, 95,252, 18,255,225, 23, -127,142,191,220,157, 98, 3,136,199,207,248,244,160,101, 80,105,212,108,198,219, 31,190, 3,207,239,243,245,175,124,133,103,223, -254,183,240,193,135,112,239,125,184,127, 31,222,125, 7, 30,124, 8,181,231,129,209,160, 42,254,218, 3,178,134,106, 0, 50,128, - 51,204,164, 96, 12,116,193, 97,189,199,132,192,126,138, 52,193, 51,208,154,186, 76,138,130, 49,188,179, 48,136,101,135,176,203, -156, 29, 16,255,129, 5,189,157,192,116, 7,142,142,224,112, 15,118,167, 57, 17,174,170,243,189,169,212,118,146,232,201, 35,254, -245,138,116,118,206,179, 39,167, 60,252,225, 3, 78,159, 62,207,113,198,155, 78,123, 52,229,238,141,125,166,193,177, 55, 28,240, -204, 89,172,115,104, 33, 24, 9,120,102,122,106, 33, 24, 70,199,189,222,179,114, 14, 35,225,165, 95,124,147,139,247,239,127, 66, - 72, 83, 4,217,148,117, 93, 68,196, 10,145, 28,162, 82,136,122,128,232, 3,162,213, 8, 41,179,218, 60, 8,132, 22,136, 68, 62, -100,134,128, 8, 1,239, 3, 54, 58, 58, 18, 43,223, 97,188, 35, 68,143, 18,146, 69,183,196,147, 29, 42,243,245,146,181,239, 49, -222,240,116,181, 98,110, 12, 51,219,241,112,117,206, 78,221,242,108,118, 74, 76, 1, 37, 4, 15,206, 79, 25, 85, 13, 11,211,179, - 48, 29, 11,235,152,185,158,153, 49,184, 36,120,152, 34, 70, 86,236, 53, 19,118,171, 1,175,238, 29,209,161, 57, 26, 14,249,161, -210,200,186,197, 70,152, 69, 65,211,180,120,161, 89, 8,205,209,112,196,181,166,230,238,206, 4, 89, 85,172, 82, 98,183,105, 72, -229,223, 51, 49,160,149, 98, 17, 3, 81,215,204,137, 56,169, 56, 24,142, 25,214, 53,149,168,104,155, 33,171, 24, 89,196,196,185, -174, 24, 75,201, 7,214, 51,210,154,147, 20,177,186,230,184,170, 57,108,235,204, 50,145, 85, 78,252,211,154,251, 33,224, 84,197, -169,170,168, 18, 8,149, 1, 72,125,146, 76,235, 1,231, 36, 90, 33,137, 90, 51,208, 21,161,110,242,189,228, 2, 76, 38,249, 61, -171, 84,169,119, 5, 76,227,227, 86, 72,157,210,150,105,210,151,131,217,198,158,188, 73,120,187,244,176,151,213, 74,219, 20, 65, - 83,147,107,234,112,248, 19, 40,234,149,206,212, 56, 89,216,180,155,136,186, 90,230,177,252, 64,103,146,220,160, 64, 79,122, 83, -186, 75,185,245, 91,127,100,180, 84,124,236,155,110,176,213, 4,155,184,211, 84, 52, 82,102,177,130,148, 52, 72,156,204, 78,176, - 70, 72, 66, 74,172, 66, 98,230, 3, 35, 1, 71,131, 33, 51,231, 88, 24,203, 81, 51,224,162,239,105,165,100,208,182,124, 38,101, - 11,146,214, 21, 54, 5,166,186, 97,149, 18, 90, 43,214, 33, 17, 93, 96,168, 4,201,120,124, 85, 80,130,189,161,105,106,170,166, - 37,166,128, 67, 32,154, 6, 23, 28, 23, 49,113,125,178,203,179,181,161,214, 21, 85, 57, 13,207, 75, 64,140, 75,129, 90,215, 56, -235, 72, 8,140, 42,106, 8, 31,182,150, 62, 45,182,157,123,173,182,142, 0,138,143,189, 45,147,144,226,223,207,227,151,114,112, - 74,177, 0,108,202, 9, 14, 87,224, 4, 27, 95,100, 25,213,139, 34, 79, 23,197,211, 24, 2,191,243,207,254,128,241,116,200,217, -243, 25,198,250, 34, 66,203,118,172,182,105, 24,181, 21,215, 38, 67,246,134, 21, 82, 40, 72,121,114,145, 16,217,171, 94,176,139, -147,129,190,196, 97,251,148,215, 26, 41,165,252, 22, 42, 65,173, 36, 18,121,137,171, 36, 68,116, 17, 68,198, 16, 49, 9, 86,214, -179,232, 44,117, 8,244, 93, 46,232,115,103,241,206,161, 73, 44,100,226, 73,231,105,106,201,241,222, 62,231,167,103,252,203,255, -241, 93,150, 83,120, 98, 34,141,137, 12, 10, 96,139, 62,194, 58, 48,184,213,240,250,193, 46,135, 77, 11, 66,112, 56,157, 48, 29, -143,184,243,234,235,196,227,107, 60,105, 27,222,183,134,209,254, 14,225,238, 62,119,111,239,113,112, 52,101, 48,108, 80, 82,178, - 51,106,208, 77,141,174, 20, 66,231,208, 26,159, 34,174,115,196,149, 37,174, 12,126,222,145,150, 6,107, 60, 51,239, 48,107,143, -180, 17, 21, 2,202,165, 12,179, 16,217,242, 71,163,145,173,102, 69,228,222,202,113,227,133, 9,213,237, 9,103,227,134,106, 82, -227, 67,226,230,235, 59,124,246,223,125,129, 63,252,252, 29, 94,121,237, 24,127,180,135,221,191,193,209, 11,183,248,210,231,110, -241, 75, 47,237,243, 76,104, 46,230, 11,222,249,193, 61,186,241,132,223,250,167,191,129,255,212, 46,253,222, 46,255,253, 43, 47, -240,250,193,148,231,159,122,137,119, 30,126,192, 95,255,223,143,184,111,159,177,236, 79, 89,137,200,159,127,233, 55,105, 63,117, - 11, 53,172,241,175,221,193,188,241, 6,135, 55,247,249,229, 91, 83, 94,155, 84,164,139, 37,255,203,255,240, 63, 51,121,248,136, -201,206, 17,235,135,239,240,224, 7, 79,224,198, 62,124,246,243,252,225,175,254, 10,255,197, 63,186,195,167, 38, 21,223,123,239, -140, 15,254,237, 55,225,222,183,248,225,122, 78, 67,205,215, 58,135, 9, 1, 49,154, 66, 43,243, 14,127,181,248,168,122,222, 89, -196,253,251,136,217, 41, 23,201, 49,244,129,107, 90, 82,251, 14, 84,141, 75, 57,186,249, 52, 70,186, 16,208, 49,210,117, 6,133, -103, 95,101, 65,146,117, 54,243,199,173,227,195,139, 53,110,113,145,149,236, 49,254,195,176,182, 59, 59,176, 59,229,238, 43,183, -217,191,126,157, 52, 26, 97, 54,177,152,226,138,208, 53,138, 18, 4,211,193,249, 2,158,156,192,249, 9,204,231,217,131,255,241, - 17,190,247,204,116,195,206,160,166,149, 10, 3, 88,103,216,197,243, 36, 36,174, 87,154, 41,145,115,107, 57,104, 53,149,245,156, -173, 58,226,176,198,232, 17, 92,156,255,205,102, 93, 74, 68,242, 8,106,132,220, 88, 85,213,150,113, 81,235,252,241,148,138,147, - 74, 34, 76,143,208, 10, 17, 74, 81, 71, 32,156, 71, 24, 79,212,255, 63,105,111,246,107,105,118,158,247,253,214,248, 13,123, 56, -243,169, 83, 85, 93, 93, 93,172,174,158, 56,153, 45,137, 10, 41, 51,178, 33,193,130, 36, 35,145, 97,192,210,133, 12, 36,200,159, -146,155,228, 46,119, 9,144, 32, 72,174,236, 4, 50, 34, 40,242,144, 72,182,168, 33, 20,105, 81,162, 68,145,236,185,217,213, 93, -243,169, 51,236,233,155,214,148,139,245,157, 58, 69,138,162,100,251, 0,141, 70, 55,186,107,239,179,135,245,190,235,125,159,231, -249, 9,252,186,167, 75,145,158,192,178,239, 88,199,129,197,208,240,120,185,100, 29, 7, 78,251, 53,139,211, 5, 67, 18,244,109, - 79,127,182, 33,124,252,132,199,143, 31,211,214, 5,235, 97,224,254, 98,201,188, 40,120,176, 94, 48,196,200,241,224,120,216, 14, -156,119,129,141,146,172,148, 38,152, 10,165, 43,190, 48,219,195,214, 51,122,169,216,155,206,241,170,192,235,130,199, 33, 81, 84, - 53, 66,107, 30,247, 29,167,194,176, 37,224,106, 89,241,210,116, 66,101,242, 69,170, 46, 74, 58,151,215,114, 46, 69, 74, 41, 51, -162, 59,193,134,200,160, 13,115, 99,159, 89,248,148, 49,164,148, 24,132,160, 11, 18,133,224, 81, 74, 76,164, 98,153, 18,103,202, -160, 99,224,192,150,204,170, 10, 63,154,219,210,200,182, 40,147,226,254,152, 26,249, 24,201, 92,192,169,208, 76, 77, 73,212,138, - 90, 91,162, 52,204,109,201, 32, 52, 93, 20, 76,116,137, 85, 2, 35, 21,190, 40, 17, 66,147,252,144,207,237, 62, 60,103, 87, 22, -151,235, 81, 57, 94,116,195,184,254,185, 72,103, 29, 87,121, 25, 42,147,158,241,211,233,250, 49, 42, 88,193,164,248, 17, 66,185, - 11,203, 68,248, 49, 66,141,231, 23,253, 33, 94,230,209,198,209,195,105,213,248,224, 64, 61, 25,159,116, 28,119,228,234,178, 51, - 49,227, 46,193,143, 41,107, 23,202,213, 66,231,241,124,140,208, 12,212,219, 5, 49, 4,202,162,192,142, 35,185,141,136,153,181, -173, 52, 33, 4,124,138,148, 35, 23,253,220,123,226, 38,113,213, 26,122,163,184,223, 52, 92, 43, 13, 78, 66,215, 52,217,163,143, - 68,141,120,155, 53, 1,161, 20, 93,204,106, 72, 10, 69,179,118, 56,171,168,186,142, 6,216,169,106,150, 67,207, 68,102,155,158, -181, 10, 57,120,142,173,196, 72, 75,231, 58,174,204,107,150,173,103, 9,180, 74, 82,203,188,195,201,147, 9,143, 49,138, 74,192, - 12,203, 61, 95,228,219,132, 43, 51,129,169, 24, 45, 11,197,197,222,123, 28,193, 91,147,247, 99,155, 54, 91, 4,149,189,108,128, -226, 56,126,187,236, 0,198, 46,126,180, 21,170,254,185,200,247,113,255,166,100,110, 0,100,238, 0,165, 54,212,165,193,150, 5, -206, 53, 12, 33,210,119, 13,222, 11,246,111, 79,241, 33, 17,197, 40, 16,148,163,109, 45,137,156,229, 78, 78,111,138, 49, 71,196, - 94,172,137,196, 24,177,120, 17, 56, 18,158, 77, 13,199,226, 54,138,221, 32,162,165,192, 27,149,227, 98, 35,249,182,236,125,238, -234,157,207,116, 52, 45,104,122,207,208,123,102,209, 83,171, 18,167,224,183,126,239,109,184, 62, 82,186,250, 72,159, 18,189,146, -212, 34,177,159,224,245,168, 88,252,155,167, 60,184,125, 78,115, 84,115, 62,209,220,222,154,115,104,167,108, 25,139,173, 42,142, -174,237,211, 41,193,244,234, 22,187, 19,203,238,188,162,117,158,224, 19, 58,197,188,222, 82, 57,137, 42,250,172,234,239, 58,143, -223,244,132,243, 6,183,106, 9,231, 93, 14,242, 16,153,210,244, 84,104, 90,155,113,141,170,200,116, 41,161,198, 23,164,243,180, - 70, 50, 36,201, 79,207, 74,254,197,147, 13,167,107,207,237,195, 57,183,141,224,177,145, 92,157, 27, 10,169, 57,237, 60, 79,124, -226,113, 18,232, 74, 17, 62, 94,242,218, 43, 87,216,149,154, 7,149,226, 65,167,249,142, 87, 60, 57, 59,165,251,246,135,184,193, -243,107,175,189,194,230, 51, 91, 20,127,244, 93,222,191,255,152, 95,249,213, 95,230,119,204,255, 67,247,203,255,152,111, 61, 56, - 97,251, 11,159,226, 5, 35, 48,117,102,220,171, 62,112, 48, 51,124,244,212,241,251,159,172, 49,181,160,148,112,171,168,232,154, -158,170,180,188,250,226,171,124,237,168,131,207,253, 4, 92,187,193,111,173,122,190,240,237, 7,124,252,209, 61,190,250,141, 63, - 64,188,245, 33,105,113, 6,243, 45,190,254,218, 9,236, 94,131,249, 30,136, 9,226,232, 54, 76,102,164,191, 0,158,220,191, 44, -182,133, 37,109, 29,192,222,156,157,232, 56,220,156,113, 93, 12, 28, 39,193,188,208,252,222, 96,115,115, 58, 56,218,206,115,191, -235,192, 37, 78, 54, 17, 49,145,188, 94, 22, 20, 50,127,250,223, 93,173,105, 78, 79,114, 24,199, 15,121,226,255, 86, 22,187,194, -230,209,250,209, 21,174, 95, 59, 98, 94, 84,188, 52,219, 70, 73,195, 7,205,146,191,236,154, 49, 23,194,141, 65, 89,125, 46,232, - 79, 22,176,218, 60, 83,254,255,181, 63, 41, 66,223,241,193,202, 48, 0,243,233, 20, 33, 18,203, 0,187, 42,210, 12, 29, 70, 23, -148, 69,129,118, 29,239,133, 0,147,146,229,119, 63,204,254,245,209,238, 36, 46,206, 93,123,121,108,139, 64, 22,202,217, 81, 51, -163,244, 88, 27,100, 22, 46, 63,107, 44, 58, 64, 34,214, 93,118,202,248, 46,143,110,209, 48, 47,225,120, 1,147,154,212,247,184, -145, 50,150,146,200,254,105,171, 25, 78, 61, 41,102, 49,150, 96,153, 85,247,139,243,188,167,247,158,230,207,207,104,182,247, 96, - 94,179,120,188,130,249, 4,140,203, 83,179,114,108, 54,172, 1, 85,242, 70, 57,227,139,135, 7,232, 50, 43,253,159, 58,201,147, - 20, 81,198, 64,211, 82, 87, 51, 30,187, 22,133, 34, 20, 19, 8, 3, 94,104,142, 38,134,165,207, 72, 85, 77, 36,197,108,185,117, - 73, 97,147, 35,197, 64, 45, 37, 70, 74, 66,244, 20, 72,132,200,185,246, 3, 9, 31, 3, 86, 42,246,100,129, 65,240, 81,227,216, - 37, 67,112,172,148,196,224,169,139, 2,157,160,247, 30,173, 84, 94,112, 40, 77,240, 30,161, 5, 97, 32, 51,214,129,119, 82,100, - 27, 48, 90,179,173, 20, 66, 42,100,130, 38,122,118,202, 2,161, 13, 11, 55, 80,150, 59, 48,244, 76,221, 64,168, 21, 46, 57,220, -217, 41,241, 98,172,126,177,197,121,150,221,226,243,100, 85, 91, 88,119, 80,155,108,143, 30, 5,186,153,246, 57,134,142,197,144, -111,235,253,144,255,157, 16, 63,116, 83, 47,198,253,204,133, 2, 42,134, 31,159,237, 30,227, 24,214,160,242,200, 76,219,203,226, - 93,154,252, 38, 22,118,140, 36, 29,201,100, 70, 94,198,221,121,127, 73, 29,187, 16,210,149,227, 23,172, 52,249, 3, 17, 3,141, - 84, 28,213,134,235,117,222,111, 12,249,227,137, 85, 26, 41, 4, 67,140,204,140,101, 17, 2,143,250,129,137, 50,184,193, 83, 90, -133, 1,134,224,113, 62,142, 35, 19, 16,163, 13,162, 77,144,164,200, 65, 41, 49, 82, 22, 5,231,206,161, 98, 96, 45,198,238, 47, - 74,210, 40,244, 48, 73, 32,173, 33,218, 12, 80, 88, 43,141, 87,154,101, 31, 16,202,176,244,145, 82,105, 22,163,173,192, 9, 80, - 34, 97,133, 38,198,200,148,200,126, 97,232, 99,228, 70, 33, 89,123,184, 54, 55, 44,252,184, 87, 49, 69,126,205,211, 5, 8, 96, -228, 61,219, 2, 98,159, 85,193, 50, 93,134,244,168,209,187,142, 24, 51,244,229,101,166,188,240, 16,117, 94,105,164, 52,222,210, - 71,167,129, 22,207,156, 8,255,248,159,254, 23, 12,222,179, 90,118,128, 96,107,107,130,182, 5, 90,105, 68,202,227,187,137, 45, -217,223,158, 80, 24, 3, 40,204, 40,120, 19, 36,196,184, 47, 55, 58,135, 88, 36,192,143, 52, 54, 57, 42,222,165,202,169,124, 82, -228, 36, 57,141, 64,250,128, 28,124, 30, 63,197,113,229, 50, 56, 54,103, 13,195,186,161, 89,119,104, 63, 32, 99, 34,117, 14,239, - 50,208,165,176,134,195,195,109, 78,151, 11,190,246,135, 79, 71,229,232,152,214,151, 98,230,103, 55,129, 69, 72,124, 52, 36, 62, -155, 36,111,244,146, 79,249,196,108,227,136,235, 13,199, 97,197,251,199, 79, 40,148,197,163,168,102, 5, 7, 91, 37,193, 74, 86, -157,227,100,209,177,233, 28, 69, 8,204, 71, 11, 97, 24, 60,125, 63,176, 90, 15, 52,171,142,245,241,154,254,100,195,234,201,138, -205,249,154,184, 25, 80,157, 71,251, 72,223,123,150, 74, 83, 86,134,114, 98, 81,181, 33, 21,138, 88, 72,156, 20, 44,181,226, 79, - 31,119, 60, 58, 93,227,155,129,147,143, 22, 28,157,183, 44,134,196,199,117,193, 50, 65,209, 58,110,198,192, 31, 55,158,150,200, -102, 24,248,179,251,107, 14,118,106,206,159,182,124,175, 13,116,198,112,243,133, 43,188,118,235, 26,119, 23, 3,183,203, 9,127, -119,119,194, 55, 79, 26,126,251,172,229,219, 31, 63, 96,239,214, 45,236,207,254, 44,211,237,146,159,120,229,144,151, 42,205,237, -185,161, 52, 18,221, 5,132, 15,252,230,127,255, 63,243,254,255,254,239, 40,223,124,131, 23,125,196, 8,201,222,203,183, 25, 40, - 57, 57, 94,114, 79,150,184,107, 55, 88, 40,141,120,112, 23,222,251, 14,127,242,173,111,242,239,191,241, 53,120,235, 61,232,187, - 92,112,250, 13,220,191, 15, 67,139,152,150,136,233, 54,162, 40, 97,235, 8,113,116,132, 40, 4, 98,136,136, 43,215, 16, 47,221, -130,163, 35,196,214, 54,251,229,156,219,211, 25, 34, 70, 14, 38, 5,195,232,120, 57,189,136, 80,245, 62, 31, 90,237, 0, 9, 30, -111, 6, 94,180,128,115,188,127,186,224, 27,143, 22, 99,196,178,255, 43,226,178,191,241,198,110, 44, 76,199,189,249,124,202, 11, - 59, 7,124,250,240,136,169, 45, 16, 70, 50, 23,134,123,174,103,240, 29,172,155,204, 49,127,122,158, 85,237,205, 58,143,217,255, - 54, 28,140, 32, 73, 74,115,115,103,134,240,158, 46,146,209,171, 2, 74,109, 9,222,115,104, 60,223,216, 12,132, 16, 97,213,102, - 43, 92,159,109,174,194, 94, 68, 55, 22, 16, 37,162, 48, 8,165,161, 40, 17,133, 69, 76, 42,132, 80,200,210,230,219,120,204,107, - 68,145, 98,182,130, 42,131, 8, 14,169, 12,194,245,185,225, 30,134,252, 29,238, 6,196,102,200, 24,212, 38, 34, 86, 77,190,201, -175, 55,136,193,195,166, 69,156,158,229,191, 55, 61, 98, 61,254,222,189, 3, 53,142,251,117,157,181, 82,166,132,157,233, 24, 40, -118, 33, 16,172,242,164,177,172,184, 53,219,230, 43,123,115, 76, 97,217, 41, 70,124,110, 18, 60,118,129,101, 28, 56, 13,137,117, -200,122,171,228,134,103,231,219,171, 90, 81, 68,129, 45, 50, 53, 51,166,200,150, 86, 68,159, 11,160,140,158, 73,138, 20, 74,178, -114, 61,101, 18, 88,149,107,203, 38, 6, 80, 22, 73,194, 74,131, 78, 33,143,223,125, 36, 42, 69, 76, 89, 56, 56,144,216, 33,178, - 91, 25,132, 72,104,161, 81, 66,228,210,229, 19, 90, 37, 62,232, 29, 33,196, 44, 10,148, 10, 33, 36, 47,149, 37, 9,112, 49, 18, -165,196,142,154, 42,167, 12,171, 20,113, 72,138, 20,145, 9,250,232,169,149,193,248, 1, 69, 98, 75, 68,194,168,119,146, 74,230, -193,181, 20,185, 14,111,150,227,216,113, 76,165, 51,230, 50,247,196,152, 92, 7,244,232,131, 23,227,133,109, 24,158, 43,234, 90, -143, 51,252,231,162, 37,148,248,155, 35, 11,165,204, 99,224,194, 94,142,127, 43,123,201, 12,103,140,109, 92,143,193, 15, 73,102, - 53,230,197,152,232, 34,194, 34,230,113, 27,117, 49, 62, 65,149, 71,105,227,174,254,213,210, 48,173, 42,144, 18, 35, 50, 47,216, -201,156, 57,174,148,166, 13,142, 90,105,254,112,209,210,118,142,235,181,230, 60,120,116,128, 74, 74,218,222,129,200,145,156,143, -219,129, 82,231, 78,103,209, 57,148,209,217,182, 16, 19,149, 82, 56, 4,201, 5,246, 73,156,105, 73,236,122,124,140,172, 72, 20, - 36,144, 26, 95, 85, 56,239, 40,116, 65,135,162, 75,153,108,118, 38,192,167,144,149,222, 33, 3, 51,134, 20, 40,165, 98,187, 16, -180,189,163, 82,145,160, 4,123, 82,240,184,201, 98,191,225,162, 75, 75, 33,107, 20,194, 40,124,209, 58, 31, 86, 23,175,101, 84, -185, 99,144,207, 29, 89, 23,169,115,105, 76,123, 9,227,205, 93,143,111,188, 26, 95,227,174,203, 77,216, 56, 97, 81, 63,249,101, -126,233, 75,159, 97,213,246, 44,158, 46, 73,200,188,186, 81,153,133,190,183, 51,165,180, 5,243, 89,193,188, 42,145,163,210, 84, - 34, 32,141,164, 35,149, 85,168, 86,103,113,136, 72, 41, 7,173,140,141, 68, 26,189,155, 82,200, 49,152, 38,131, 10, 98,200,196, -187, 97,240,153,130,231, 2,237,224, 56, 61,223,176,105, 58,220,224,113, 62,143, 87,205,248,103,201, 4,251,123, 83,138,157, 45, -254,240,123, 31, 51, 91,123,206, 69,204, 13, 99, 28, 87, 16,110, 20,107,142,222,240,247, 8,124,107,136,148, 7,138, 67,171,248, -194, 65,197,203,147, 25,135, 9, 68,116, 68, 31,112, 62,225, 18,172,218,129,229,170,101,209,244,136,224,217, 45, 12,211, 50,231, - 27,120,151,247,231, 67,215,211, 54, 61, 67,219,179, 92, 54, 60, 89, 55, 44,186, 30, 98,196, 36,129, 34,145, 72,180, 49,145,148, -194,100, 3, 63,201, 72, 82,169,112,243,130,149, 86,188, 88,192, 23,107,195,225,142,229,212, 42,238, 46, 7, 78, 14, 39,204, 39, -150,193, 7,134,179,142,173, 39, 75,222, 30, 9, 78,201,193,103,125,224,231,118, 43, 30,118, 29, 77, 10,236,213, 5,213,149, 57, -219,251,115,234,170,230,211, 51,195,235,237,192,187,239,221,229,119, 99,201,245,175,124,133,151,175,237,179,175, 4, 7, 90,112, - 85,195, 47, 76, 5,247,158,174,184,251,135,111,243,245,255,237,255,228,247,255,135,127,203,209, 52, 81, 87,146, 15,255,199,175, - 82,117, 31, 49,125,245, 53,206,128,191, 76, 80, 29,204,120,241,149, 67,142,136,124,251,155,127, 8,127,241, 29,120,114, 31,119, -255, 62,226,116,253, 3, 80,160,252,201,144,136,197, 89,222,111,207, 10,196,214, 17,170, 40,249, 71, 55, 95,224,239,221,121,157, -171,135,215,120,239,251,119, 17, 33,241,147, 71, 59, 28, 23, 91, 28,104,205,142, 18, 24, 99,209, 41,175,116,154,224, 56, 30, 28, -196, 1, 81, 76, 16, 59,219,121,106,178, 92, 34,218,200,251,167, 75,222,122,248,148,251,103, 27, 68,212,136, 43,123,136,214,255, - 64,244,241,143, 23,194,217, 44,130,187,114, 0, 71,251,176,181, 13, 69,137,179, 83,238,204,166, 40,173, 48, 82,161, 8,232,190, -225,254,201, 73, 46,226,143,206, 96,125, 14, 87,175,194,147,167, 63,158,140, 88,215,207,133,130, 36,152, 84, 60,238, 61,135,211, -154, 46, 69, 62, 51,181, 60,241, 16,195,192, 65, 33,121,212,229,203,195,208,182,163,104, 42, 55,240, 66,171,204,105, 40,107, 68, - 85, 32,172,201,227,244,249, 12,153, 4,162,178,200, 20, 17, 69, 46, 92, 66, 8,132,136, 72, 45,145,214, 34, 92, 14, 45, 82, 49, - 34,147,207,134,164, 4, 50, 70,228,186, 65,246,153,167, 32,124, 64,182, 77, 46,238,155, 14,209,118,185,240, 55,185,105, 19, 62, - 32,100, 1, 87,174,114,227,104,135,163,107,123, 28,237,205, 41,107,195, 82, 87,136,178, 64,236, 76, 17, 91,219,168,249,156,106, -107,155, 80, 22,164,162,120,246,154,191, 86, 88, 14, 38, 53, 82, 42,134,144,198,115, 56,129, 75,156,134,200,189,161,203,151, 62, - 55, 18,244,136,144, 2,109,130, 59,181, 65,199,156, 24, 90, 8, 40, 83,196,117, 13,237,208, 97, 99, 64,165,196,208,247,204,132, -160, 0,108,244, 84, 66, 50,144, 24,162,103,199, 88,124, 12, 56, 33,184,219, 39,206,156,199,227, 51,161, 14,232, 7,199, 3,239, -216, 79,145, 93,107, 41,165, 70,166,152, 97, 48, 4,158,180, 3,167,206,225, 66, 32, 41,137, 82,154, 47, 84, 21, 37, 89,255, 85, -168,156,216, 87, 22, 19, 42,169, 24,156, 67,217, 60,105,216,160,152, 25,141,140, 48,179, 53, 41,180, 28,136, 64,109, 21,251,165, -101,207, 74,162, 80,244, 62,145,252,152, 65,146,252,152,210, 55,214, 70,173, 70,173, 90,186,140, 10, 30, 70,132,112, 14,236,135, -162,120,174,168, 95, 40,238,210,115,217, 80, 63,142,109,252,188, 5, 68,141,183,113,165, 47, 11,186, 85,227, 19, 10,121,167, 22, -195,229,168,190, 40,176, 55,174, 19, 86,203, 17, 88,114,193, 88, 38, 63,190, 26, 21,219, 77,151,159, 71, 81,112,125,103, 70,141, - 96, 90,228, 49, 85, 31, 7, 10, 12, 46, 69,172, 22, 88, 20,143,188,195,137,192,227, 33, 98,100,226, 69, 85,176,118,158, 46, 4, -172, 16, 8,149,133, 86, 59,133, 97, 25, 2,141, 11,204,166, 85,142,241, 84,138, 66, 10, 54, 41,209,135, 64, 73,162,213, 2,235, - 3,105,200,183, 92,149, 2, 58, 10,158, 36, 79, 82, 2,165, 13, 31,244, 30, 33, 21, 15,135,158, 94, 41,206,164,204,190, 71,160, - 25,195, 86,124, 76, 28,105,141, 78, 17, 37, 34, 69, 76,148,192, 58, 69,174, 25,197, 11,219, 53,247,125, 34,117, 67, 46,196, 23, - 54,136,139,244, 33,153, 35, 31,145, 41, 23,118,105,242,107, 27,199, 27,119, 26,111,235, 23, 35,246, 36,126, 16,109, 43,121, 6, -202,201, 34,186,252, 33,124,253,211,175,241,147, 95,184,195,211, 39, 27,154, 77,135, 82,138,174,113,184,198,209,181,158,201,180, -230,214,254, 22,187,149,165, 48, 38, 55, 42, 58,119,174, 81, 36,122, 23,241, 49, 97, 20,148, 54,243,212, 99, 74, 12, 99,164,156, - 18,185, 24,199,139, 29,224, 40,242,115, 62,211,152, 92, 12, 52,206,103,158,186,143,244, 93,207,226,188,165, 25, 28, 68,207,224, - 60, 93, 55,228,141,142,200, 1, 14,251,187,219,172,207, 23,220,251,131, 39,168, 82,112,220,197, 60,141,136, 2,218,231,242,236, -159,159,187,238, 42,238, 29, 89,222, 42, 4,195, 78,201, 83, 1,167, 34, 51,220, 85,240, 20,194,160,133,162, 64, 96, 84,166, 85, - 29,108, 85,236,110,215, 20,165,205, 72,202, 68,166,170,141,152,198,204,216,137,156,183, 89,205,155, 4,168,148, 70, 68,120,110, - 98,156,148, 56,161, 8, 42,191, 15,186,208, 24, 37, 41,140, 96, 57,102,227,123,145,216, 19,137, 15,143, 55,188,110, 3,219, 49, -208, 5,136, 66,176, 16, 18,171, 4,125, 76, 92, 73,240,138, 17,184,110,224,107, 70, 49, 49,134, 55, 15, 74, 14, 38, 26, 81, 20, - 76,247,167,124,254,250, 14,179,171, 51,222,155,238,243,237,233, 54,147,189, 9,159,214,137,185, 27, 48,109, 71,179,110,120,122, -182, 70, 60, 94,112,179, 86,184,205,154,117,179,102,209, 4, 78,222, 31, 16,175, 78,248,169,191,115, 19,117,125,143, 43, 47, 31, - 32,164,224,222,247,143,249,232,253, 7,156, 63,124, 72,124,248, 33,203, 7,199,136,126,200, 99,217, 8,130,248, 67,240, 22, 63, -202, 54, 92, 46, 10,201,129,173,249,197, 59, 55,216,169, 11,254,217,160,240,135, 87, 16,187,219, 60,146, 5,164, 64, 37, 13, 83, -109,184, 58, 41, 41, 68,164, 16, 1,209, 59, 62,218,172, 16,218, 34,182,246, 96,114,128,216,158,163,106, 11, 50, 33,154, 11,128, -209,152,203,208,244,192,128,248, 17,103,150,184,208,254, 76, 39, 57,218,245,224, 16, 14,247,178, 77,109,103, 43,219,211,138, 18, -180,166, 87,150, 79, 9,137,148,121,122, 38, 82,226,244,252,152,251, 79, 78,224,238,147, 28,158,227, 60,156,158,253,248,130,190, -189,199,252,179, 47,209, 47, 54,121,202,160, 68,214,121,204, 38, 68,149, 49,167, 31,246, 3, 3,217,122, 26, 19,156,247, 61,125, - 31, 16,198, 16,156, 3, 23, 16, 86,231,255,183,158, 34,234, 18, 68, 68,212,249,134,107, 10,139,157, 90,180, 15,204, 39, 37, 59, - 66, 80, 72,197, 16, 3, 90, 10,132,144,200,110,200, 43,175, 24, 81,147, 2, 57,228,226,167, 0,213, 69, 84,148, 40, 76,182,173, -186,132,114, 9,233, 61, 50,133, 92,244,131, 64, 42,141, 40, 45, 98,178,141,216,218, 98,111, 86,240, 51,219, 21,183,108,193,157, -121, 77, 97, 44,161, 44, 56,223,223,167,158,239,176, 85, 87,236, 84, 53, 62,121,164, 52,227,170, 77,160,132,230,166,209,236, 21, - 38,163,175,147, 64,132, 72,146,146,227,182,227, 27,235, 53, 41, 14,224,218,172, 77,232, 86, 99,124,238, 64, 43, 18, 47, 6,207, -158, 86, 36,223, 81,199,132,107,214, 44,134,142,171, 41,103, 59,216,152, 87,176,132, 76,127, 44, 0,235, 7,180,202,142,149, 97, - 20, 94,159,196,200,159,175,215, 52, 82,147,146,224, 65,223, 81,168,130,227, 24,242, 20,163,239,216,150, 17,225, 29, 49, 56,226, -208,211,224,249,214,217,146,110,252,188, 79,149, 66, 1,187, 66, 81, 26,149,203,154,212, 8, 33, 33,120,130,174,208, 35,108,204, -105,139,141,142,101, 20, 76,132, 64,132,129,153, 45,136,110,160, 84,144,198,122, 87, 40, 40,149,196,106, 73,144,138, 96,116, 22, -204, 73,159,235,231,152,240,137, 24,217, 42, 93, 51, 6,190,141,122, 54,149,243, 74,126,112,252, 30, 46,114,216,185, 76,189,249, - 91, 89, 64,200, 35, 22, 57,222,192, 47, 30, 68,140,129, 41,221,152,166,211,249, 60, 82, 10,145,176, 89,229,142,204,135, 75,114, -155, 27, 50, 39,118,221,193,122,117,169, 6,175, 75,182,167, 5, 59, 69,145, 5,108, 72, 10, 85,176,137, 61, 70, 10,140, 52, 36, - 18,231,222,177, 14,142, 70, 8, 92, 23,209,210, 51, 55,146,117,140, 44,187,241,131,170, 37, 49,101,244,101,101, 77, 30,205, 11, -193, 68,105,150, 49, 32,200, 59,228, 42,101,171, 28, 33, 80,196, 64,138,153,237,221, 39,193, 32,243,248,229, 97,132, 61, 45,249, -190, 11,120, 83,114, 50,244,184,232,113, 73,162,136,180, 49,162,147,224, 64,129,213, 17,145, 2,115, 1, 83,107, 96, 24,152, 75, - 5, 8,206, 18,124,170,182,116, 74,209, 92, 88,253,144, 63, 56, 59,212,242,146,102,119, 33, 46,212, 35,201,229,194,218, 38,198, -155,186,146,185,240, 95, 8,242,146, 24,173, 46,126,132,188,100,242, 67,177,176, 0, 0, 32, 0, 73, 68, 65, 84,171,216,237, 87, - 95,229,149, 87, 94,100,189,238,243,205,184,207,169,105,222, 7,124,151,168, 39, 37,175,223,216,101, 90, 91,172,214, 4,145, 15, -138,156,155, 76, 30,177, 75, 40, 68,246, 62,167,209,206,230, 99, 32,196,244,236,105, 10,153, 15, 49, 59,178,141, 7, 23, 17, 33, - 16,198,176,149,228, 2, 67,231, 56,105, 6, 78,154,158, 85,223,115,188,110,216,120,135, 31, 60, 25,101,223,227,165,100,182,187, -205,253,183,238,145,214,142, 91, 42,115, 1,174, 32, 88,196, 68,120,158, 29,112,193, 55,190, 83,192,142,201,130, 45,163,184,215, - 37, 62,238, 2,107, 19, 88, 9, 40,167, 19,236,124, 11, 61,159,176,189, 93, 51,159,150,204,107,195,254,180,100, 54, 41,209, 70, -227,147,192,187, 72,219, 13,217,187, 30, 99, 14,149, 9,145,206, 69,186,206, 17,124,198, 90,202,152, 50, 40,104,116, 8, 12,128, - 83, 25, 91,151,164, 96,183,233,169, 63, 58, 33,189,245, 9,233,235,239, 48,251,179,143,216,187,191,224,197,162, 96,103,171,226, -228,147, 53,205,163, 5,161,113,116, 10, 82,145,227,104, 95,148,138, 69, 76,252,249,137,167,209,130,182,115,148, 90, 96,218,200, -253,214,243,193,202,241,241,144,248,176,135, 79,148, 33, 86,150, 97, 8,220,238, 59,118,154,158, 97,177,225,227,227,117,182,218, -101,172, 32, 46, 86,172,194,130,122,191,224, 75,191,252, 38,191,254,243,111,242,223,124,254, 53,182,174,110,225,172,102,249,222, - 35, 62,249,224, 33,215, 53,124,110, 82,241,133,249, 54, 47,204, 20,223, 93, 5,104, 55,136,232, 17, 38,219, 19, 47,139,122, 68, -212,183,145,111,126, 30,113,243, 14,226,250,203,136,217, 14, 87,183, 38,204, 69,226, 74, 23,120,176, 92,243,139, 7, 87,184,187, - 94, 66, 72,108,136,188,161, 53, 59, 50, 97, 83,160,242, 30, 25, 91,222, 58, 59, 71,110,214,136,178, 66,216, 2,129, 34, 13, 27, - 68,223, 32,106, 11,123, 51,132,169,248,213,215,142,184,179, 59,225,237,167, 13, 12,221, 95, 29,185, 23, 83,120,225, 42,236, 29, -192,213,189,188,239,221,154,230,208,142,162, 26,225, 40,105,252, 30,121, 30, 56,199, 81,136,152, 52,112,126,246,152,175,126,114, - 31, 30, 62,201,222,247,191,233,146,243, 12,153,236,232,165,133,179,179,124,174,198,139,232,102, 69, 83, 88, 86,206,211, 39,104, -218, 64,167, 18, 27, 31,233,135,192, 6,143, 31, 28,116, 1,107,243,249,144,180, 65, 16, 80, 42,239,165,139, 82, 19, 29, 28, 78, -205,232, 26, 82,185,200,133,200,220, 42,218,148,115, 33,235, 81,232,162,146, 66,181, 29, 42, 73,180, 11,104,105,208, 4,246,109, -193, 63, 60,156,241,230, 94,205, 11,181,229,227, 38,162, 2,168,120, 97,213, 53, 72, 99, 17,214, 32,117,133,212,185,153,248,233, -173,130, 29, 83, 80,105,205, 34, 38,116,105,169,103,115, 30, 71,129,214, 37,133,204,194,229, 76, 18, 21,244,126, 0,105, 72,113, - 96, 11,184, 94, 20, 8, 55, 80, 11, 73,232, 91, 78,219,134,223, 61, 57,165, 27,214, 57,133,175, 89,193,226, 41,180,163,173,111, -232, 32,244,152,232,217, 52, 27,186,161,165,239,214, 12, 67,199, 86,191, 70,186,128, 13,137,105,200, 23,132, 42, 9,118,132,196, - 39, 48, 33,210,251,142,132,228, 81,240,172,147,224,173,229, 26,107,167, 36,223,147,144,212,202,176,246, 29,219, 74,179,118,142, -208,110,104, 86, 13,222, 53, 4,153,120,178, 94,114,127,221,177, 28, 28,173,115, 36, 18,221,208, 51, 16,216, 54, 6, 43, 50,251, -194,146,176, 66,146,180, 33, 6,207, 41,146,227, 48, 48, 17, 32,117,137, 26, 28,115, 35,144,193, 67,215, 83, 88, 75,240, 45,117, - 2,111, 20,201, 71, 42,149, 47,212,165, 21,153,211, 82,216,231, 44,201, 2,250,238,178,102,106,149,195,134, 24, 51, 11, 98, 78, -116,253,171,234,247, 24, 47, 63,132,127, 93, 1,151,250, 7, 49,159, 66, 92, 42,241, 34,151, 66,185, 11,216,251,133, 71,218,218, -203, 28, 91,247, 67,143,225, 70, 41,127, 24,159,112,235,114,178, 82, 85, 66, 93, 82,138,200, 81, 97,152,154, 18,129,100, 21, 28, - 83, 93, 18,162,160, 79, 16, 68,192, 10, 88,184,200, 39,141,231, 90, 37, 25, 66,224, 44, 68,204, 16, 88,201,172,202,143, 46,199, -196,182, 73,228, 24,117,165,242,196, 54,146, 83,191,144, 20, 66,210,199, 72, 17, 3, 67, 18,116, 74, 33,164,196,143,201,125,149, -135,115, 45,153,134,200, 67, 15, 75,165, 88, 71, 55, 22, 85,129, 75,129, 77,136, 52,209, 35,146,103,146, 18, 83, 9, 53,185, 24, - 22,193,161,165,194,199,200,164,180,108, 27,205,169,200,138,218,149, 45,242, 37, 83,141, 10,179,231,221, 1, 41,230,155,188,139, -121, 23,200, 5,185, 45, 94,194, 99,226, 69,214,251,120,180,153, 81,189,102,244,200,219,189, 8, 67,128,159,249,202,207,176,123, -101,155, 16, 35, 67, 31,104, 22, 13,235,245, 6,107, 11, 78, 78, 87,104, 59,225,229, 27,187,148, 54, 51,212,165, 84,132,152,242, - 91, 68, 64,164,236,213, 45, 74,133, 30,195, 88,252,152,177, 28, 71,155,218, 5,232, 69, 32,198, 36,169,152, 5,112,206,209, 53, - 61,193,121,196, 16, 88,121,207,113,235, 88, 53, 29,184,192, 89,219,225,130, 99, 19, 3, 27, 96, 45,160,222,154,178, 17,137, 63, -125,235, 17,111,117,249, 80,148, 74,242,229,160,248,251,104,254,126, 97,120, 67, 73,222, 43, 4,189, 25,111, 70,175,207, 96, 90, -141, 47,166, 6,145, 8, 14,180, 85,212,133, 97,111, 58, 99, 50,155,161,203,146, 80,228,195, 72, 11,193,150,177, 84,133, 65, 42, - 69,240,137,166,117,156, 44,214,156,158,183,108,250, 17, 11,219, 57,214,155,129,245,166, 99,221,117,185, 1,145, 18, 45, 37,133, -145, 24, 96, 82,106,182,119, 10,230, 51, 75,112,142, 39,247, 31,176,127,218, 33,124,226,129,244, 57,203,190,239,153,111, 58,246, -118,118, 8, 50,241, 72,129,216,169,209, 86,209, 38,193,118,130,166, 79,220, 95, 5,214, 49, 81, 78, 44,122,183,230,212, 11, 30, -184,196,162,143, 60,237, 60,199, 3,120, 33,179,251, 66, 64,104, 3,251,131,203, 97, 56, 72,206,238, 29, 83, 27, 69,187,104, 49, - 51,139,220,169,217,189,118,157, 95,248, 71, 95,230,205,159,124,153,159,191,177,203,180,214,252,243, 63,249,128,111,125,245,235, - 60,125,255, 67,110,148,130, 89,105,153,134,132,145, 5,201, 88,222,242, 61,190,139, 99, 97, 79,185,176, 43,133,188,253, 58, 63, -247,139,191,194,111,255,183,255, 21,159,253,244, 27,252,235,165, 69, 62,249, 4,249,206,159, 35,131,197, 37,195,106,211, 96,165, -228,108, 24,104, 99,142, 66,150,209,113,147,200, 92, 38, 84, 28, 48, 41,178,105,214, 60,238,123,220,147,115,196,189,251, 89,251, -169, 20, 82, 36,132,212,224, 59,196,131, 83,254,201,157, 67,126,253,181, 79,243,217,253, 3, 22, 69,226,131,133,131,144, 16,113, -140,225,156, 78,224,230, 17, 95,186,253, 41,234,157, 93,202,233, 22, 43, 61,238,126,149,186, 12,250, 96,188,241,251,142,161, 93, -211, 54, 27, 30,156,159,240,205,239,223,135,227,211,156,124,199,143,192, 27,255,184, 9,102,211,252, 96, 90,157, 27, 71,168,205, -112, 57, 65, 27,157, 56,105,240, 52,222, 99, 70,139,174,208,130, 42, 64,111, 36,133,128,163,210, 96,129,118,228,153,239, 20,154, -198, 69,182, 74,203,174, 49,180, 68,166,214,112,210,122,230,133,204,118,232,144, 87, 99,186,203,152, 85,147, 6,140,210,152,102, -192, 24,205, 87, 74,203, 94, 97, 50, 61, 86, 74,182,181,228,113,155, 80,165, 70,111,213,168,178, 70,238,214,200, 73,141,156,150, -200, 74,241,159,239, 20,220, 41, 45, 59, 90, 19, 17, 72,171, 25,132,100, 72,112,234,179, 21, 24,153,168,164,193,225,240,193,101, - 86,215,144,119,240,141, 31, 8,125,203, 21, 41, 56, 91, 28,211, 14, 61,191,127,239, 46,199, 79,143,225,244, 4,214,107, 56, 63, -207, 1, 66, 93, 63, 38,255, 13,208,108,120,218,246,124, 60,180,124, 48, 12, 52,155, 6, 57,116,236,196,136, 9,129, 9,137, 77, - 12, 28,232,146, 74, 8,186,148,152, 11, 73,163, 36, 38,230,128,160,211, 24,248, 78,151, 88,107,131, 14, 3, 66, 23, 8, 1,165, -144, 8, 98,230,235, 36,193, 16, 60,171,117,203, 39,203,150,187,103, 13, 79, 66,196,247, 3,221,224,216,145,146,174,237,153, 24, -197,224, 3,167,125,207,129, 18, 28, 22, 26,163,178,128, 88,105,201,105,128, 37, 34, 35,192,165,196,198,136, 22, 48, 12, 29, 69, - 24, 72, 82, 48,193, 81,134,192,106,240, 76,146,200,131, 28,173,242, 25, 21, 18,149, 18, 4,161,112, 74, 93, 78, 95,149,185,140, -145, 45,108, 62,211, 47,146,233,194, 0, 46,252, 71,196,196,234, 25, 76,203,252, 66,119,237,229,135, 54, 93, 40,247,210,229,248, -253, 98,132, 44,212,179, 66,146, 71,201,207, 41,223, 47,190, 76,207,212,219,163, 80,172, 30, 57,228, 85,206, 54,182,194, 34,133, -100, 57, 12,148,214,162,144,172,253,128,212, 22,237, 7, 90, 20, 18,135,150,146, 24, 34, 15, 59,152, 72, 65,233, 29,143, 82,182, -190, 45, 7, 7,117, 73,227, 28,214, 40,146,135, 70, 36, 42,165,233, 72,104,149,139,211,202,123,106,107,136, 74,162, 9,248,212, -114, 98, 20,120,143, 73, 30, 33, 52,190,233, 9, 19, 65, 45, 28,101, 7,141, 46,178, 86, 0, 96,104,137, 49, 91,250, 22,195,192, -182, 22, 92,179, 53,141,247, 28, 26, 67,231, 4, 62, 4, 14, 39, 83, 22, 67,135, 19,130, 93, 4,167, 69,205, 52,118, 44,170, 34, -199,199,202,220,209,225, 47,112,146,163,107, 64,143,183, 1,127, 33, 56,140, 57,176, 70,170, 60,138, 30,252, 8,204, 9,227,127, - 99,243, 62, 93,155,172,220, 21,121,106,226,135,252,129,152, 78, 11,214,139, 14,165, 21,214,232,124,214,140,161, 54, 77,231,217, -155,149, 8, 41,242,197,223, 11,162, 72,200,152,211,247,130,143,120, 35,178, 48, 19,137,210, 18, 39,178, 15, 61,164,188, 2, 8, - 49, 61,235,220, 37, 9, 27, 35,161,243,136, 16,177, 72, 54,193, 51, 12,129,101,211,211,199, 49, 39, 93,102, 6,242,128,160,141, - 61, 19, 41,217,191,126,200,123, 31,220, 67, 7,216, 70,240,189,141, 3, 31,249, 30,145,162, 77,252, 92,165,184, 89,106,126,197, - 41,126,242,214,140,119,222,218,112, 60, 43, 81, 47,189,192,227,110,195,102,112,156,116, 29, 31, 30,247,108,149,138,106,156,100, - 4, 34,221,208, 35, 86,146, 97, 8,132,222,179, 95,151, 76, 71,123, 99,219, 6, 78, 78, 27, 62,186,119,198,122,211, 94,222, 76, -165, 96,232, 7, 26,215, 49,116, 29, 94, 41,114, 34,124, 22,216,108,205, 75, 14, 94,220, 98,182, 55,101,182, 59,225,189,239, 63, -230,131,166,167, 85,112,211,193, 67, 25, 25, 74,193,206,102,224, 86,227, 41,191,115,151, 87,215, 13,175,237,212,204, 94, 63,226, -254,213,146, 73,227,216, 44, 7, 30, 13,240,141,100,120, 49, 42,190, 60, 53,252,191, 14,222, 63,239,169, 35, 20, 70, 50, 31, 60, -122, 82,128, 80, 24,173,184, 35, 21, 55,182, 21,133, 51,136, 85,195,241, 91,239,114,235,198, 62, 47,224,120,242,201, 99,218, 43, - 19,234,218,160, 10, 69, 81, 22, 28,159, 44,249,151,119,159,242,207,127,251,247,120,244,241,146, 23,182, 13, 7,135, 91, 24, 93, - 82, 20, 37,178, 27, 56,239,214,156,198, 68,220,218,193,220, 82, 4, 25, 72, 79, 31, 33, 94,126, 19,110,190, 4,251, 47,114,116, -117,151,205,147, 51,126,227,255,250, 29,244,239,126, 23,241,197,151, 16, 71,215,217, 81, 2,183, 92, 96,164,226,165,162,100, 49, -116, 28, 3, 41,120,196,208, 34,101,139,223, 24,106, 91, 32,130, 99, 66,100,123,189,164, 89,158, 19,143, 79,136,253,154,116,251, - 83,196,157, 3, 82, 89,145,108, 73,178,134,223,120,239, 1, 87,240, 28,204,118,248, 94,235,179,183,252,188,132,176, 70, 40, 75, - 58,218,129,189,125, 38,102,194,223,217,219,101,145,114, 72,213,191,109,150,121,189,103, 71,226,149,243,153,118,181, 88, 66,227, -184,191,217,100,199, 73,234,199,181,225,104, 31, 13,241,111,127, 86,254, 40, 46,250, 98, 1,187,123,151,156,134,209, 6,156,198, -113,238, 48, 4, 10,157,149,236,107, 55,112, 93, 27, 6,173, 56,137,137,155, 19,141, 31, 4, 49,207, 16,185, 82, 21,108, 6,199, -138,236, 78,153, 0,117,101,232, 99, 98, 72, 41, 63,101, 31,145, 87,246,144, 82, 83, 76, 44,184,129,212,244,220, 26, 6,110,232, -204, 55, 80, 2, 54, 46,112,173,176,212,187,150,184, 55,131,189, 25, 87,170,154,164, 5,167, 67, 75,227, 29,175, 18,249,172, 81, -212, 90,114, 84,148, 60,117, 29, 79,162,199, 3, 31,116, 3,167,162,196,168, 60,133, 91,135, 13, 73, 38,214,109, 3,222, 33, 54, - 27,146, 80,172, 55, 45,223,148,145,111,202,209, 86,146, 2, 44,250, 49,179, 99,156,244, 14, 25,226, 50,238,184,242,244, 81, 11, - 88,174,159,157,177,119,165,102,119,219,210, 6,193,190,206, 4, 54,141,160,137,142, 82, 26,166, 82,112, 46, 20,197, 24,202,213, -111, 22, 24,171,217, 69,179,113, 3, 24,131, 14,142, 32, 4, 94,106, 22, 17, 90,198,137,243,176, 33, 40,152, 71, 73, 39, 5,219, - 17, 58, 33,217,158,151, 28,247,145,131,121,205,227,214, 97, 11,197, 64,164,239, 55, 44, 84, 32,161,169,116, 73,215, 12,156, 10, -197,137,157,161,147,103, 75, 90,124,236, 65, 41,170, 36,232, 98,100, 87, 6,156, 27, 48, 74,178, 85, 26, 78, 6,199,150,132,165, -119, 20,104, 38, 6, 22, 36,154, 16,144,182, 32,166, 0,194,254,224,103,105,185, 25,131,141,234, 60, 17,170, 74,112,254,185,162, -174,245, 37, 41,230,199,141,221,167,117,142, 33, 44,170, 92, 32, 46,126, 6, 46,139, 77,188,192,201,245, 99,228,233, 88,236,237, -115, 93,174,243,151,227,126,212, 37,108, 4,153,173, 90,106, 84,193, 63,103,159,219,132,200,196,234,204, 47,209, 50,231,175,248, - 33, 91,179,188,167, 65,176,171, 21, 69, 33, 89, 15, 25, 8,163,141,160,245,254, 89,202,253,178,115,168,202, 82,185,136, 55, 30, - 6,205,153,114,108,219,140, 51,108, 83,196, 40,197, 34, 95, 71,153,105, 65,131,198,182, 3,219,192, 70,107,214,193, 51, 67,243, -168,237, 8, 93, 71, 61,155,114, 26, 37,108,250,203, 72, 86, 9, 52, 27,176,138,224, 35,239,159,173,248,220, 86,126,209, 39,232, - 49, 38, 87, 50, 49, 22,173, 10, 78,104,217, 45, 19, 77, 47, 51,115, 5, 46, 51,224,155,110,220,157, 95, 28, 42,242,146,250, 22, -228,232, 58, 24, 27, 34, 41,243,239,234,135,252, 62, 68,159, 91,118,171,243,123,164,220,104,253,241,104,107, 41,173,225,228,108, -131, 27, 11,188,214, 6,151, 2,162, 44, 40, 37, 20,101,206, 6,200,251,242, 11,105, 68, 78, 82,235, 98,192, 17,145, 61, 88,173, -144, 57, 69, 6,169, 50,139,152,144,111,238,217, 46, 47, 81, 49,195, 94,116, 2,163, 36, 90,107,188, 8,184, 16,232, 55, 30,223, - 56,232, 29,125,240, 24, 33, 88,165,196, 10, 40,172,225,104, 58,101,111,127,139, 63,250,147,239,241,221, 38,239,208, 16, 49,255, -174, 83, 77,223, 58,254,213,185,203,193,241,107,207, 59,231, 3, 47,110,107,138, 39, 13,146,123,220,216,153,242,194,214, 46,250, -250, 14,223,219,121,204,100,182,197,164,174, 41,102, 83, 14,143,118, 88,117, 67,222, 16,109,122,154, 36,232,132,192, 9, 24,122, -207,217,162,225,238,253, 19, 30, 62, 56,103,240, 29, 41,100,108,167,136, 17, 31, 99,166,167,249,132, 64,179,232, 5, 82, 25,148, -130,253,189,138,122,119, 74, 49, 45,113, 41,113,214, 42,110, 79,247,248,254,233, 83, 30,184,150, 77,219, 32,140,164, 25,122,174, - 4, 69,179, 56,102,111, 19, 88,196,134,217, 39, 11, 78, 95,152, 96,103,154, 35, 83,112, 16,225,198, 85,197,181,101, 79,215, 5, -126,213, 74,254,167, 85,207, 73,227, 25, 6,216, 41, 36,147, 66,113, 22,224, 80, 11, 62, 59, 51, 28,213,138, 19, 1,111, 63, 78, -124,229,240, 21, 22,201,113, 32, 18,159,217, 46,249,227, 69,203,195,239,220, 99,231,232, 42,211,123,103, 92,145,130,111,126,247, - 33,119, 80,108,109, 91,116, 93,176, 85, 79, 49, 66,211,173,150,220,125,252,144, 83, 93,177,116, 41,239, 67,203,154,161, 56,128, - 47,127, 38, 39, 89,181, 27,196,215,254,128,223,248,238,130,127,241,134, 66, 93,217,197,124,233, 14,162,156,176, 91,207, 57, 16, -154,137, 86,163,169, 38,208, 13,158,207, 19,217,154,239, 66,154, 51,167, 37,173,206,169,162,195,132, 0,203,115, 94, 63, 95,241, -180,237,137, 6,194, 98, 65,252,222,251,196,219,142,120,253, 6, 73,193, 23, 95,186,195, 27,183,111,241,199, 31,188, 75,255,240, - 29,238, 29,247,136,170,134, 74,147,216,206,201,150,211, 41,111, 76,106,110,109,111, 97,133,228, 74, 97, 40, 69,143, 90,231,176, - 70,218,113,127,123,190,202,141,239,249, 58, 23,115,158, 43,200, 74,130, 48, 57,103,253, 63,164,168,255,117, 63,171,213,104,253, -213, 35,255, 66, 17, 92,204,199,156, 17,244, 46,177, 45, 3,229, 78,205,227,245,192,190,149,220,172, 18, 15,186, 64, 39, 20, 83, - 18,133, 53, 28,167,196, 43,133,193, 42,184,110, 53,171, 33,240,168, 25,152,151,130,166,143, 72, 31, 81,218,160,171,146, 91,243, - 41, 66,107,164, 31,136,147,158, 47, 9,207,203, 74,161, 6,199,241,178,227,233,186,231, 35,239,153, 86, 21,177, 40,198, 44,144, -128, 68,163,180, 34, 16,121, 81, 68, 38, 90, 82,250,196,169, 95,178,173, 13,157,115, 28, 7,184,231, 65,153,136,111,219,108, 68, -233, 90,210,122,141,104,123, 82,215, 67,231, 16,195, 64,146,238, 50,228,231, 7, 64, 95, 41,171, 92,203,145,148,103, 60,108, 70, - 32,141,119,224, 70, 43,244, 72, 59,139,210,241,180, 53,220,175, 19, 6,184,154,224, 64, 41,206,165, 34,166, 68, 47,179,125,248, - 52, 37, 26,160,172,166,232,216, 17, 92,139, 80, 37,131, 15,120,157, 39,199,103, 67,135, 21,154,117, 28,178, 86,201,214,176, 13, -203, 85, 67,225,123, 54, 2,156,213, 48, 68, 68,101, 57, 67,240, 74, 93,240, 46,153,123,209,171,130,223, 91,116,212, 90,243,134, - 13,188, 39, 36,235, 16, 9, 33,176, 85,206,240,205,130,189, 98,134,175, 39, 16, 3, 59, 4,154,205, 19,166, 90, 67, 12,172, 99, -100, 79, 43,156,207,154, 45,159, 28, 43, 31,241, 14, 10, 41,243,250, 66,233,209,185, 60, 54, 62,113, 12,173,113,125, 46,238, 90, - 67,219, 65,122,254,166,110,245,165,100,254,199, 21,245,161, 1,202, 92, 52,158,221,180, 61, 88, 55,250,163,199, 4, 57, 63, 90, -180,188,191, 28, 5, 95,220,200, 47, 10,248,133,218,254,226,159,155,238,242,198,127,193, 13, 30,233, 99,239,169,130, 23,165,160, -151,146, 2,216,196,152,119, 55, 82, 18, 99,196,249,129, 18,197, 82,122,212,136, 46, 91, 43,197, 68, 6, 76,161,105,157,231,110, - 19,120, 97, 2,170,247,172,140,162, 38,146, 76, 66,171,114,132,132, 64, 37, 36, 29,176,140,145,235, 90, 35,131,167,198, 32,133, -231,201,232, 10,159, 40,205, 58, 4, 10,161,120, 52, 64,116, 29,181,116,153,204, 19,251, 49,190,207, 65, 10, 40, 97,121,226,122, -190, 48,175, 88,123,199, 84, 40, 38, 90,161,180,201,163, 94, 44, 50, 5, 10, 37,168,124,226,250, 86,201,112, 62,176,190,120,103, -124,155,247,127,171, 46,127,232,149, 29,189,178, 49, 63, 25, 63,118, 84,202, 94,142, 6,227,184,147,143,163, 40,206,199, 75,149, -114, 24,217,237,162,196, 22, 10,171,243, 72,189,158, 78,114, 40,221, 38,147,209,246,171,154,157,189, 41,125, 15,165,209, 8,145, -105,108, 81,100, 43, 91,206, 97,143,196, 33,208,235, 72, 29, 21, 33,138,203,129,140,144, 99, 10, 98, 22,229,136,148,208, 82,100, -123,188,204, 35, 41, 25, 19,209,103,222,186, 86,130, 3,165, 57, 47, 10, 68, 8, 44, 82,162,142,145,101,190, 18, 83,212, 5,235, -243, 13,220, 95,147, 60, 76,181,102,221, 15,208,132,252, 90, 92, 55,240, 73, 15, 27, 15, 6,190,190, 47,248, 58, 1,156,227,102, - 1, 7,139, 21,221,217,154, 73,253,152,178, 46,217,155,111,243,229,207,221,225,240,133, 93,202,218,242,232,124,195,233,186,101, -181,233, 41,180,165,174, 74,162,148,116,131,227,120,213,240,240,116,201,134, 72, 16,146, 36, 21,169,119,248,161, 35, 70,151,127, - 55, 52,146,148,119,237, 86,211,167, 72,155, 18,109,140, 20, 18,190,249,246, 99,206,122,248,164,154,210,238, 22, 84,174,103,221, -221,167, 90, 31,227,156,227, 95,135,129,217,162,225,197,162,228, 17, 37,187, 15,158, 50,105,246, 17,100,112,140, 83,138,161,208, - 28, 79, 44,198, 5, 78,149,224,205,157,130,223,250,218,125, 30,108,224, 63,187,190,155,149,181, 17,124, 8,124,126, 90,179, 61, -181,156,165,200,245, 98,135,201,178,230,201,122,224,157,227,115, 68, 20,156,189,243, 17, 15,222,251,152, 15,138,119,121,225,215, -126, 25,172,161, 45, 75, 44,150, 29,237,248,240,163, 5,205,249,134,237,253, 41, 91,123, 91,252,254, 87,255,130,116,117,159,120, -243, 8,130,161, 22,240,202,151,222,228,245,254,152,223,252, 95,190,133,253,114,201,144, 2,123, 63,127, 3, 89, 87,236,206,175, -176, 78, 9,163, 52, 71,202,176,103,115, 26,100, 66,226,186, 53, 47,138,158,117, 12, 28, 30, 93,163,156, 84,184,190,231,236,195, -111,179,186,127,151,243,216,211,222, 95,114,173, 46, 41,129, 79,111,237,240,173,197, 25,161, 91, 17, 82,128,243, 39,188,121,245, - 5,190,116,176,203, 92, 72,124,140,252,230,251,223,231,230, 36,112,183, 79,121,154,110, 20,105,108, 34,136, 48, 87, 10,171, 5, - 58, 6,122,215,241,165,208,240, 71,235,101,158,132, 61, 61,207, 86,181,229, 34, 79, 32, 11,251, 35,188,230,233,111, 62, 27,255, -182, 63,110,200,244,182, 49,145,115, 90,104, 58, 9,125, 31,185, 82, 41,156,149,156,181,158, 93, 23,153,106,201,218, 7, 54, 30, -180,213, 57, 71,170, 46,185,182,189,207, 78, 49,229,102,109,185,163, 4,106,241, 24, 21, 28,127,201, 10,173, 36,115,223,161,181, -198,214, 53, 73, 90,166, 69,238,127,103,117,205,212, 27,110,196,158,228, 28, 19, 99,168,103, 64, 31,120,219,195,220, 40,130, 86, -108,155,130,137,177, 12, 36, 58, 41,217, 55,134, 67, 45,209, 93, 62,215,116, 72,116,222, 51, 12,145,223,121,218,227, 68, 68, 15, -103,132,229, 26,180, 37,185,129,120,129, 4,149,144,250,241,117, 13, 54,251,250, 47, 34, 80, 69, 49,174, 25,199,139, 78,231, 71, - 29, 86,186, 4,128, 93,136, 36, 92,255, 44,170, 91, 4,184,219,182,212,133, 96, 54,230,158, 8,163,145, 49, 48,232,130, 20, 61, - 43, 33,233,181,161,141,145,132,164, 81, 5,123,186, 99,225,122, 30,217,154, 57,145, 77,202, 77,213,169,239,199,245,229,152,226, - 41, 13, 76, 74,250, 30,146,177,104, 4, 11,163, 81, 9,130, 82,108,138,154,159, 80,146,149,144, 44,132,160, 78,176,107, 20,143, - 66,228,101,173,121,170, 12,119,125,203,186, 83,204,170,154, 71,171, 99,136, 29, 71, 55, 95,103,245,238,159, 81, 81, 16,125, 71, - 10,137, 90,102, 65, 93,242,207, 16,152,204,180,228,110,227, 71,200,149,186, 36,184, 21,163,142,162,200,164,200,103, 7,110, 63, - 66,139,132,122,174,168, 59,127,201,123,253,113, 63, 77,155, 51,133,229, 15,141,151, 28, 16,187, 60,154,127,158, 15, 59,118, 35, - 57, 5,135,203,177, 19, 33,171,149, 13,121,199, 36,199, 55,243, 25,169, 73,141,108,227, 13, 84, 19, 84, 72,156, 7,199,118,204, -233, 78, 90, 89, 54, 41, 82,138, 12, 5,152,218,146,251,155, 37,203, 24,185, 82, 27,190,127, 49, 82,211,112,220,122, 98, 18, 92, - 41, 21, 79, 26,232,230,137, 93, 18,139,148,173, 74, 87,101,230,232,106, 33,241, 8, 28,145,131, 42,119,115, 33, 64, 69, 46,244, - 86,107,122,151,241,138, 61,137,211, 16,152, 23,138, 7, 35,183,153, 97, 4,181,172, 54,207,252,248,161,105, 57, 50,138,183,151, - 45, 95,152,215,212, 85,129, 79,129,153,153,208,184,236, 19,245, 82, 83, 70,207,141,201,156, 7,205,134, 45, 35, 40, 5, 60, 93, -181, 80, 87, 89,160, 83,106, 8,213, 72,124, 35,135,212,244, 99,177,246, 9, 38,228, 27,184, 30, 21,240, 23,171,142,139,177,129, - 31,121,211,186,200,157,177, 41,153,212,147,156,250,230, 19,182,146,112,158, 24,134,129,162, 40, 57,188,178,203,223,253,204,117, -164,210, 36,145, 69, 26, 46,145,233,106, 82,144,124, 78,140, 43, 10, 73, 8, 41,111, 0, 18, 72, 41,179,121, 33, 64, 34,142,230, -134,244, 44, 80, 71, 2,106,220, 27,102,198,120,100, 54,218,139,125,132, 38,100, 40, 79, 14,227, 20,204, 68, 66, 8,137, 45, 43, -142,143,207,121,251,126,199,204, 10,166,133, 98,157, 70, 49,225, 69, 97,247, 23, 1, 1, 33,123,244,111,215,224, 36, 15,151,129, - 79, 98,226,221, 90,113,133,192, 21, 25,217, 44,207,168,239, 62,230,211,211,130, 23, 74,205,164, 42,176, 74, 50, 49,134,162,180, -204,234, 2,107, 52,206,141, 80, 26, 21,243,168,174,168, 32, 37,130, 50,248, 21,200, 62,161, 99,200, 62,124, 4, 49, 6, 98,231, -240,235,158,197,201,154,132,224,241,249,138,234,253,123,156, 76, 42,238, 79,246, 57,156,148,220,153, 77,249,120, 50,229,252,227, -125,228,174,163, 57,237, 88, 29, 9,222,245, 3,159, 58,152,243, 7, 83,205, 71,255,235,255,199,250,147, 99,170,249, 22,113, 62, - 33, 20, 37, 87,175,239,112,227,206, 14,157,128,247, 31, 44,120,177, 42,217,185, 49,231,188,247, 76, 66, 66,185,200, 63, 56,172, -153, 36,208, 62,113, 69,229,176,141,118,106,249,211,147,150, 38, 70, 86,171,134,214,105,218,135, 13,215,127,234, 38, 79, 11,195, - 45,109,120,233,229, 27,220, 83,146,189,190,225,218,235, 45,103,143, 30, 48, 63, 60, 66, 77, 12,182,123, 68,122,119,159, 52,109, -184,117,235, 58,169, 56,224,181,197, 61, 42,161,248,149,127,122,155,213,100,155,101, 40,152,238, 28,208, 3,171,224,121, 41, 4, - 42, 5, 91, 74, 51,179, 80,203,132, 78,142, 85,232,104,135,134, 36, 11,166,214, 82,149, 5,231, 85,201,176,253, 18, 31,156, 46, -249,252,201, 35, 90, 35,248,189,199,199,252,194,213, 61,190, 33,160, 76, 18,191, 60,193,223,127, 64,216,221,167,174, 37,197,225, - 54,161,152,210,233,146, 55, 14, 15,153,107,216,234, 29,223,110,251, 81,185,238, 73, 66,243,238,224,249,169,118,193,141, 80,211, -250, 14,227, 29,177, 95,231, 93,249,201, 34,171,172,155,238, 7,241,166, 74,254,208, 63,251,191, 18,110,243, 31,157, 43,127,241, -103, 14,249, 49,151,163, 76,233, 74, 93,242,120,227, 40, 10,197, 84,128, 76,137, 32, 4, 87, 38, 5,171,113, 63, 43,172,162,212, -150,235,179,125,246,118,182,185,105, 44,183, 66,131,177, 37,221,234,132,253, 98,139,143, 54, 11, 14,148,193,147, 24, 16, 76,234, -130, 66, 25,170, 66,161,164,229, 72, 43,174,166,130, 32, 27,172,138,244, 1,110,109, 77, 16,177,227, 65, 93,208, 88,240,218,144, -140,161,141,129,181, 79, 60,236, 58,110,148, 2, 75,228, 64, 43, 54,110,192, 13,158,213,162, 69, 63, 62,135, 20,114, 60, 47, 25, - 42, 21,184, 12,203, 73,189, 71,104, 77,234, 7,114, 12, 12,249,251, 90, 75, 8,125,222, 19, 95,212, 5, 61,234,178,180,186, 76, -208,188,200,216,186, 40, 96,195, 0, 91, 19, 24, 2, 31,172, 29, 98,170,249,194,164,226, 97,204,251,241, 34,102,230,135, 19, 10, - 27, 2,131,202,158,140, 45, 47, 88, 75,197, 92, 72,222,117,145, 37,137,164,244,136,184,214,121,109,172,199, 6, 67,251, 92,224, -171,154, 32,192, 35,176, 82, 33,148,100,219,148,120,224, 84, 91, 78,253,192, 34, 68,246,203, 9,149,144,120, 35, 57,117, 45,199, - 99,156,107, 72,142,123,235, 83,110,137,196, 98,121,130,191,251, 22,110,179, 4, 60,173, 79, 92,213,153, 8, 89, 5,129,151,130, - 33, 66,239, 2,167, 62,159, 59,249, 66,246,156, 88, 58,166,220,252, 92, 76,132,205,115,214,242,190,135,117,243, 67,150, 54,239, -255,102, 17,200, 5, 12,228, 34, 10,209,140,240, 3, 51,142,135,109,145,255,122,214, 28,164,188,203, 29,134,203,255,103, 24,227, -238, 10, 9,171, 53,204,103, 25,217, 88,141, 0,152, 16,115, 8,141, 28,129,241, 50,145, 82, 96,170, 44, 51, 45, 41,148, 70, 11, - 8, 98,132,133,164, 64,235, 2, 66, 73,206, 66,224,254,102,160, 31, 65, 49,155, 33, 50, 83,146, 62, 69, 54, 81, 16,164,160,113, -145,121,105, 80, 18,106, 99,105,147, 96,183,208,248, 81,249, 46,149,102,229, 61, 67, 8, 57, 13, 45,194, 32,115,177,121, 48, 12, - 4,153,253,216, 69, 82, 60,246,185,211,234, 47, 20,215, 23,182, 61, 55, 22,121, 33, 24,156,103,219,100, 91,220,142,177, 84,198, -114,238, 58,172, 50, 36, 33,136, 33, 96,146,100, 16, 96,165,192, 73,129,219,180, 92,153, 84,156, 54, 45, 68,216,154, 22,244,221, -144,181, 10,105, 92, 81,232,231, 4,117, 62,140, 30,244,139,214, 54, 94,134,212, 92,208,239, 82,204,227, 44,109,161,237,248,236, -155,159, 97,190, 55,231,244,248, 28, 31, 96, 50,157,178, 60, 89, 81, 79, 38, 92,217,219,226,221, 79,214,188,112,101, 62,142,202, -101,166,177,141,193, 85,125,200, 25, 1, 89,148, 47, 40,108, 78, 40,147, 34,143,233,253,168,198,245, 33,226, 67,194,187,108,105, - 84,241, 66,249, 30,192, 7, 66,235,232,154,129,174, 15,196,193,227, 82,100, 21, 28,201,199,108,135,139,145,171,251,187, 28, 28, -238,242,206,219,239,243,222, 73,195,178,117,172,134, 17, 81,219,135,188, 12, 59, 30,133,138, 25,223, 4,103, 14, 38, 18,185, 93, -225,251, 56,106, 57, 37,243, 90, 83, 25,203,164,158, 34,181, 37, 84, 22,105, 53,189, 15, 28,159,183,244,157,163, 42, 53,211, 73, -137,210, 18,239, 60,109,215,211,245,217, 98, 39,180, 34, 70, 75,194, 18,140, 70, 10,205,118, 81,115,125,190,205,225,100,206,196, -148, 76,149, 97,191, 40, 41,146, 68,205, 45,178, 46,105,107,139,208, 2,206,150, 76, 39, 19,110, 29,212, 52,202,208,238, 77, 16, -170, 96, 82, 22, 84,243, 18, 61,155,178,127, 56,229,202,225,148, 99, 49,229,251,201,210,204,106,228,225, 46,147,171,115,156, 86, - 60, 10,112,114,222, 99,181,165,124,113,155,117, 59,112,122,210, 48,108, 28,243, 29,131,248,232,148,151,246,167,136, 0, 86,231, - 56, 76,149, 18, 47, 84,130,155, 83,195, 7,143, 60, 11, 57,103,101,225, 74, 33,216,185,122,200, 78,105,104, 3,248,178, 32, 77, -166, 32, 38,108, 85, 37,219,135, 59, 60,126,186,226,159,124,230,243,252,131,255,242,167, 57,122,227, 14,213,233, 19,134,167, 31, -243,130, 45,137,102,194,244,240, 6,147,131, 79,177,127,227, 58,182,174,152, 78, 39,204, 37, 28,106,195, 22,138,173, 34,113,160, - 52,179, 24,208,190,103,238, 6, 78, 22, 43,246, 82, 71, 85,212,180,211, 41,117,239,249,104,240,220, 48, 5,119, 69,226,134,138, -188,148, 4,223, 76,138, 95,170, 45,239,161,144, 66, 35,241, 8, 23,120,176, 25,216,173, 5,247,134,129,148, 36,183,235,138, 93, - 91,177,109, 44,239, 56, 79, 24, 57,214,194,121, 98,236,249,254,114,205, 46, 61,186,239, 89,117, 11,254,229,135,143,224,254,113, - 30,133,187, 31,218,125,203, 81,159, 18, 70,190,130, 28,187, 84,255,159, 0,136,121, 54, 69,139,151,205,118, 28,207,138, 36,168, -172, 34,133,132, 23,130,237,164,120,109,111,194, 79,237,109,241,234,124,202,212, 72, 2,130, 86, 9,182,180,225,198,116,198,220, -150,236,213, 19, 94, 41, 11, 74,109,216,149,146,169,202,126,117, 45, 45,219,214, 98,149, 98, 87, 89,166,166,224,160,168,216,211, - 21,187, 41,114,104, 44, 7,186,100, 91, 21, 76, 80, 76, 76,205,188,156, 48,177,154,235, 86,179, 63,157,113,168, 37,187, 2,182, - 84, 68,118, 29,133,115, 44,215,107,142,130, 71,227,217,180, 61,199,231, 13,127,113,186,100,117,214,142, 22,219, 1, 17,179,240, -239, 50, 66,220, 95,254,174,207,191, 30,241,121, 29, 86,200, 89, 26,207, 24, 23, 98,244,105,143,103, 91,161, 47, 99,195, 73, 96, - 44,194,103, 55, 65, 72,112, 10,196,145,124,104,165,198, 11,129, 23, 57, 41,206,169,172, 53,216,140, 60, 17,139, 96, 41, 19, 8, -205,146,144,111,231,114,116, 4,153,139, 32,151,145,241, 33,115,214, 71,146,144,148, 36,152,146,137, 50,217,222,172, 52,115,169, -121, 34, 52,218, 90, 10, 91,162,144, 60, 9,158,162,172,184, 35, 5,247,146,128, 48, 48,183, 37, 65, 89,170,208, 99,250, 6,101, - 13,209,123,172, 72, 56,145,181, 71, 49, 4,150, 33, 19,244,136,137, 39,109,164, 75, 99,232,140, 80,227, 45,125, 20,204, 41,123, -185,106, 45,205, 88, 43, 85,182,185,141,103,244,127,218, 79, 61,201, 5,164, 75,204,127,226, 14,203,119,238,229, 20, 36,115,161, -146, 31, 59, 43,173, 71, 47,233,216, 93,116, 49,171, 29,235, 45,216,173,145,186, 32, 94,164,165,117, 62, 23,253,114,228,141,203, - 44,246, 58,243, 1, 71, 34,137,200,169, 15,108, 9, 65, 82,154,193, 59, 64,176,240,158, 62, 68,102, 82,178,136, 9, 41,229,248, - 98,141,117, 78, 93,140,254, 5,223,111, 19, 91, 86,176,155, 2, 83, 11, 79, 7,199,212, 90, 54, 41, 49, 9,238,242,134, 43, 5, - 40, 79, 10,154,211,152,152, 26,147,131,108,148,160,197,211, 15,130,190, 16,185,177,121,102, 51, 35,219,199,116, 22, 5,246, 33, -239,168,139,152,232, 4, 48,116,212, 69,205,248,209,205, 89, 11, 70, 83,199, 72, 7,236, 1, 15,132,160, 78, 61,159,155,105, 60, -154, 10, 79,179, 59,201,187,100, 3,119,151, 21,125,232, 47, 87, 32,210, 65,127,177, 79,231, 50,138,183,176,227,141,126,180, 46, -132,113, 74, 82, 88, 54,171, 14, 63,238,232,125,219,211,156,181,172,155,134, 33,120,166,243, 9,235,179,200,241,249, 6, 43, 4, - 82, 10,172,214,232,145,196,102, 20,156,167, 8, 93,196, 26, 49, 58, 81, 69,158, 96,165,252,181, 14, 41, 63,156,140,217, 38,231, - 70, 12,171,243,158,228, 60,214, 5,116, 4, 55, 4,206, 7, 71, 59, 12, 52,222,161, 60,164,152,144, 66, 48, 51,134, 43,202,178, -131,228,221, 71, 11, 58, 61,126,177, 87, 62, 63, 0,140,184, 89,178,109,109, 29, 97, 42, 97,237,225,173, 13,113, 94,160, 42,147, -117, 1, 41, 49, 51, 5, 91, 85, 69, 93, 20,244,193,113,114,182,121,150,213,227, 55, 3,194, 69,156, 82, 76,230,142, 9, 16,189, -199, 24, 73, 89, 25,166,157,165, 25, 34,102, 42,232, 6,139, 76,150, 98, 54,231,149,121,193,107,179,138, 74, 8, 66,231,104, 87, - 93, 78,206,219,177,120, 13,117,173,153, 76,118,152, 78, 45,190,141, 52,205,128,144,112,125,215,240, 66, 50, 28, 92, 41,120,184, -242,156,135,192,233,178,163,233, 60,199, 77,192, 27,197,193,139, 7,108, 29, 84, 76,182, 11,234,144, 16,189,167, 43, 4,147,173, - 57,202, 57,190,119,188,230,233,131, 37,171,147,150,183,255,213,191,227,149,255,238,191,230,255,248,247,111, 33,222, 62,231,103, -127,233, 85, 84, 44, 16, 86, 19, 67,194, 68,216,171, 53,191,254,197,107,124,245, 91, 15, 56,108,175, 80, 46,159, 98, 30, 46,240, -181,229,112,174, 49, 30,150,201, 80, 94, 55, 12,141,101,253,228, 41,191,246,153, 79,241,185,219,135,252,179,255,251, 27,188,247, -206,219,156,223,250, 60,101, 45, 57,223,222,102, 90,109, 35,119,182,153,204, 10,202,105,129, 34,209,172, 91,180,154, 50, 44, 55, - 40, 25,217, 18,134,210, 13, 24, 63, 32,137, 12,174,227, 85,237,249,131,183, 63,228,211,119, 63,160,252,212,171, 44,119, 95,226, -203, 74, 48,173, 44, 95,188,249, 50,230,250,117, 86,237, 57,243, 79,238,242,213,179,142,191,183, 83,241,241,149, 25, 31, 60,109, -145, 74,225,106,203,191, 57,107,152,118,138,175,236, 40,174, 85, 91, 68,173, 80,205,154, 45, 37, 57,142,153, 51,145, 98, 78, 72, - 91,106,197,111,156,159, 49, 77,176, 56, 89,193,217, 57,162,235, 72,234, 71,156,105,126,212,164, 92, 68,178,186, 17,190, 97,117, -190,160,180,253, 95,109, 4,254, 67,111,234, 23, 66,186, 8,187,159,189,195,233, 71, 79,152,138,192, 68,107,174,238, 90, 94,153, -205, 56,170,103, 36,169, 56,242, 1,193, 57, 83, 34,131, 79,108, 27,201,204, 42, 84,138, 36, 37,217, 83, 10, 29, 2,186, 40, 8, - 17,246,148, 39,186,129,151,132,200, 35,114,215, 51,137,130,210,123,102,182,196, 4, 79,169, 20, 69, 89, 99, 38,134, 48, 68,154, -245,130,217,100,135,232, 61,125,223,208,108,214,180, 93,203, 98,211,242,198,224,121,176,110,120,228, 60,167, 90,243,205,174, 99, -224,255,103,237, 77, 98, 36, 77,243,243,190,223,187,126, 91, 44,153,145, 75, 85, 86, 85,215,210, 93,221, 51, 61,156,157, 67, 14, - 57, 36, 37, 82,150,185,192, 48, 33, 27,180, 1, 95,228,131, 47, 6,124, 48, 4, 24,240, 73,128,225,139, 1,195,128,125,240,193, - 7,249, 98, 2,186,200, 2, 40,203, 20, 32,153,139, 8, 82,148, 72,145, 34,197,153, 86,207,116,207,244, 82,221, 85,213,149,149, -107,100,196,183,189,155, 15,239,151, 85, 77,114,108,211, 26,246,169,208,221,200,202,140,140,248,254,219,243,252,158,200,199, 62, - 48,196,145,170,148, 19,188,230, 83,181, 23, 72, 83,190,247,167,145, 17, 9, 16,222, 79,209,203, 58, 11,124, 39,253,128,144,110, - 0, 0, 32, 0, 73, 68, 65, 84,198, 12,169,203, 53, 35, 76, 27, 99, 83, 78, 19, 85,200, 53, 67, 76,153, 24,184,108,243, 27, 2, -148,146, 48,122,190, 73,207,144, 4, 95, 89,104,230, 82, 51, 18,104,148,161, 11,129, 30, 48, 74,115, 21, 34,131, 86, 28, 6, 8, - 41,178, 22,138,129,172,157, 17, 74, 17, 98,204,104,221,232,166,237,114,145, 79,198,170,129,137,204,183,150,138,215,141, 97, 68, -177, 86,154,195, 8, 87, 90,114,144, 4, 79,148,224,142,153,115, 25, 70,222, 46,231,220,102,195, 99, 96, 29, 34, 42,118,220,212, - 37,224,121,214,109,184,103, 11,210,152,104, 19,132, 16, 72, 65, 48, 34,145, 24,158,143, 25, 16,148,195,185, 66,174, 35, 74,102, -235, 85, 93,101,149,187, 45, 50,187,228,250,197, 45,203, 23, 37,235, 7, 11,116,169,203, 23,201, 49,111,254,212, 15, 99,181,226, -226,248, 98,162,209, 77, 44,243,248,169,172,206, 76,230,200, 19,108, 59,100,161,211,124, 6, 77,141, 44,116, 86, 92,247, 35, 92, -173,243,215,190, 78,114, 19, 47,211,192,230, 70, 49,196, 12,239,111,167, 80,148,150, 72,231, 35, 1, 88, 15,158, 83,239,115,122, -155,204,211,101, 10, 57, 95, 55,143,149, 83, 41,157,160, 30, 82,234,140, 1,148,153, 73,110,148, 96, 27, 34,123, 74, 50,151,154, -109,244,236, 72,137,146,240,201,198,211,163,208, 18,206,131, 32, 34,169,180, 98,136,226,101,247, 45, 39, 50, 73,152,168,120, 46, -163, 20,215,253,200,253,166,102,183, 40,232, 17, 84, 66,162,148,164,139,137,218, 24, 98,140, 12,193, 83,105,203,214,141,212,133, -162,241,142,135,210, 32,146,224, 10,201,171, 74,177,171, 37, 94, 8, 62, 95, 20,124, 36, 5, 97, 24,115, 55,231,166,224, 23, 89, -230,155, 57, 62,223,133,220,148,171,172,124,166, 84,185,248,194,250,246,214,219,223,230,151,126,233,231,216,180, 46,131, 85,124, - 98,216, 14, 92,182, 3,149, 45,121,248,218, 13,118,155,130,222, 7, 8, 57,101,205, 76, 64, 35, 73,162, 31, 60, 91, 23,104, 93, -194, 74,137, 53,249, 53, 12, 36, 98, 72,140, 33, 48,186, 56, 61, 88, 50, 39,158, 20,233,221, 52,149,247,158,147,118,228,162,115, -180, 62,131,102, 46,199,108, 99, 25,198,158,232, 3,115,101, 89, 52,101, 22,211,125,243, 99, 94,187, 10,236,123,193,221, 91, 5, -143,174,223, 27,149,124,153,206, 86,146,207, 58, 33,193,131, 18,154,252,250,213,141,226, 70, 83, 48, 43, 11, 14,235, 57,165, 54, - 40,107,176,214, 18,133,192,143,142, 97,219,211,110, 91,132, 53,212,149, 69, 10,232, 6,199,229,118, 96, 24, 29,163,243, 68,159, -208, 66, 82,207, 53,133,209, 84,139,146,215, 15,231, 28, 29, 52, 44, 22, 21, 85,109,176, 69,206, 92, 55,141,102,119,111,134, 20, -145, 79,158,108, 88, 46, 74,234,218, 80, 87, 6, 99, 21,139, 66,113,179, 80,236, 91,195,172,210,232,198,176,179, 44,217,158,245, -180,219,158,110,219,161, 43,205,108,183,192, 26,137,114,129,184,245, 96, 37,221,186,227,234,209, 25,103,127,248, 61,254,232,111, -255, 35,174,126,243,219,168,143, 71,222,252,143,191,204,235, 95,125,192, 31,254,218,111,240,214, 63,120,155,215,191,112,151, 54, - 70, 46, 98,160,182,130,170,176, 88,173,208, 11,195,229, 7, 29, 95,118,138, 97,188,162,171, 74,116,109,249,162, 27, 24,147, 32, -218, 2,105, 45, 97,127,151, 79,198,145, 95,253, 59,255, 59,199,127,237,231, 40, 94,249, 12,183,239, 29,177, 58,184,193,108,181, -135,106, 26,154,101,197,172,177,212, 86,103,122,160,247,232,209, 81, 14,158, 57, 30,237, 28,115,109, 56, 48, 5, 59,163,103,214, -181,236,246, 35,111,218,130,207, 55,115,142, 46, 79,249,209,122,198, 23,234, 25,111, 44, 86,188,214, 44, 89, 21, 13, 69,217,112, - 65,100,102, 5,172,118,216,111,102,220, 61,216,229,196, 40,130,206,205,126,144,154, 31,155,207,168, 4,120,239,113, 49,208, 59, -199,199,235,109, 14, 91, 57,187,130,203, 22,113,118, 65, 26, 60,195,101,159,183, 59, 50,175,156,196, 4,208,249,127, 12,171,178, - 19, 58,187, 48, 25, 82,163, 77,126,182,125, 90, 36,252,255,245,143,148, 47, 79,145,159, 38,226,148, 22, 10, 75,119,182,201,124, -245, 36, 56,216,169,120, 56,111,184,211,204,153, 43,141, 85,134, 72, 98,207,150, 92, 5,207,188,208, 52, 82, 82, 40,195,162,108, -168, 35,236, 38, 65,153, 28,209, 71,124, 20, 84,202,176, 40,106,106, 99,153,233,130,133, 20,212, 50, 79,150,141,176,148,202, 80, -151,115, 36, 54,171,250, 83,162,158,175,168,202, 57,133, 45, 41,164,160,180,150, 89, 89,178,154,213,220, 60,216,227,230,193, 46, -183,247,151, 28,220, 62,228,232,112,193,155,183,110,114,127, 94,242,198,254, 42,111,193,148,102, 43, 18,201, 65,210, 50, 39,103, -126,159,130,254,231,252,252,113, 90,183,199,148, 7,174,235,201, 61,168,140,201, 86,102,154,162,205,203,215,109,130,200,160, 12, -226,186, 41, 51,121, 53, 30,147,160, 52,138, 66, 41,198, 24,137, 19,235,100,155, 34, 66,107,198, 16, 49, 69,197,133,243, 28,218, - 2,132,164, 81,138,185,178,108,100,230,151,100,198,135,153,232,158,229, 11,160, 87,146,138,207, 21, 13, 91,169,179,218, 62, 9, -180, 86,236, 34,121, 79,192,171,218,210, 11, 65, 43, 20, 23,227,128,156,182,202, 3,144,148,101, 37, 37,167,126,228, 94, 81,225, -124,160, 52, 5, 78,106,182, 33,226,141, 70, 26, 67,151, 96,144, 18, 79, 34, 12,110,154,250, 38, 79,122, 97,242,107,164,174,183, -216,230,229, 16,169, 36, 86, 10,130,209, 63, 96, 81,151, 19,143, 56,193,201,199,207,184,248,222,211, 9,101, 39,255,244, 77, 74, -234,151,197, 93,201,172, 50,245,125, 22,169, 44, 22,160, 4,105,116,176,238, 50, 37, 39,201, 9,123, 23,114,135, 44, 21,140,158, -202, 74,132,130,185,214,180,206,103,228,235,208, 35, 83,190,131,131,228,233,118,224,108, 66,143, 18, 32,133,144,115,192,211,244, -166, 49,246,133,170, 92, 10, 73,175,114, 13,168,117, 66, 41, 77,129,100, 87,103, 2,207,214, 7,110,106,195,165,119, 92,186,200, - 43,165,224, 59,237,200, 16, 37,141,200, 69,189, 83,137,116,253,206, 82,217, 7,253,162,129,241,147,234,220,121, 80,130, 82,102, - 20,226, 43,205, 12,161, 20, 34, 6, 42,109,112, 49, 32, 17,184, 24,241,126,164, 52,154, 98, 28, 89, 37,193, 54, 38,110, 21,154, - 93, 45,105, 99, 98, 68,114, 71, 75, 78, 82, 96, 12,129,171,160,178, 40,143,240, 50, 16,199, 95,175,228,253,203, 53,141, 79,121, - 69, 86,218, 23,144,130, 95,248,247,127,129,187,175, 30,177, 94,119,180,219, 22, 55,142,140, 19,225,109,103,177, 64, 72,197,106, - 86, 49,159, 23, 64,166,227, 73, 33, 24, 66,162, 31, 61, 67,240, 88, 18,221,144, 3, 92,140,150, 36, 9, 33, 10, 66,140,196,152, -178, 47, 61, 68, 34,249,207, 17,129,144, 80,164,108,183,233,187,145,181, 11,108, 83,196, 13,142, 34,230,200,213, 49,100,238,128, - 78,153,141,220, 1,191,246,214, 35, 68, 23, 41, 37,136, 33,113, 62, 70,190,114,183,225, 39,238,204,248,185,210,240, 83,175,214, -188,118, 88,210, 61,172,216,155, 75, 78,199, 8,165, 64, 42,197,172, 52,212, 70, 50,183,150,253,197, 46, 50, 66, 81, 87,216,178, - 64, 11, 73,236,115,116,106,136,129,166,170, 88,148, 6, 23, 2, 39,235,142,227,179, 13,237,101, 71,215, 13,120,159, 83,241, 12, - 18,165, 65, 25,133,109, 10,230,149,193,216,220, 56, 6, 35, 73,149, 70,107, 56,220,105,176,133,102,177, 83, 83,149,134, 40, 21, - 74,201, 28,202,151, 18,133,139,148, 61, 36, 33, 24,172, 64, 43,201,106,127,198,114, 89,226,189, 39, 8,193,191,250,149,223,229, -189,111, 62,226,198, 98,135,245, 39,151,124,247, 15,255,132,239,254,238,159,240,123,255,203, 31,243,248,183, 62,200,233,119, 40, - 36, 1, 22,145, 31,254,233, 31,226,222,143,127,158, 94, 25,126,235,215,255, 25, 7,183,143,184,212,138,221, 90, 83,219,108, 13, -221,169, 44, 39,251, 13,247, 14,231,204,223, 63, 99, 45, 34,135,165,102, 39, 68, 46,158, 93,177, 45, 11,234, 89, 65,219,123,214, -169,192,124,229,171,148, 70,177,218,171,152,151, 6,163, 20,218,228,207,122,109,196,139, 39,182,117,158,114, 24,144,219,145,153, -246, 28, 10,201, 13, 93,240,197,162,226,168, 42,121, 80, 46,184,191,115,131, 7,119, 30,242,224,246,125,142,118,110,113,115,182, -207,222,114,159,157,131, 61,234,162,166,218,205, 81,153, 85, 80,244, 30,134,228,152, 23, 5, 55,155, 37,141, 49,236, 23,146,247, - 7, 15, 72, 66,138, 52,140, 28, 25,195,156,196,243, 97,195, 63, 60, 59, 39, 73,248,194,162,164, 22,158,139,147,233,110,238, 70, - 16, 2, 33,114, 40, 19, 58,175, 43,179,216, 52,252,121, 32,135, 41,243,218,211, 76,159,111, 61,177, 33,162,255,139, 23,245, 79, -107,139, 94,168,233,203,188, 54, 45,154, 12,194, 41,243,234,118,183, 48,220,168, 13, 71,166,100, 89, 20,204, 76,137, 4,106,165, - 8,164,156, 82,153, 50,169,177,138, 17,225, 6,172,243, 84,222, 81, 41,203, 24, 35, 85, 81, 33,133,164, 48, 10, 37, 36, 18, 65, - 74,130, 74,107,164, 0,107, 42,170,229, 14, 66, 90,116,105,145,218, 98,154, 6,101, 76,230,195,199,136, 20, 57,153, 82, 41, 77, - 89, 55,104,101, 41,139,146,217,124,151,133,169,185,189, 60, 96,175,106,216,173, 27,238,204,230,216,194,240,112,103, 65,242,129, - 79, 4,164,249, 33,209,119,153,143, 30, 35,233,251, 20,116,241,233,194,206,167,132,188,215,156, 20,117,189,158,143, 47, 99, 70, -175, 29, 60, 90,252,169,190, 64, 76, 95,188,117, 17,167, 37, 46, 38, 26,153,208, 90, 35,164,230,156,140,204,141, 49, 23, 79, 23, - 35,117, 89,210, 37,197, 40, 36, 27, 20,133,212,204,164, 96, 43,212,196, 9, 17,211, 10,126, 66,112,203,130, 59,182,224,105,130, - 91, 90, 83,107,197, 59, 18,238,170,130,103, 4,142,164,224,189, 16, 88, 41, 77,157, 18,167,198,114, 11,120,230, 51,151, 69, 24, -201,101,146,252, 84, 85,225,130,231,245, 89,195,190,150, 84, 86,243,165,217,140,189,186,225, 94, 97,121, 88,215,156,166,200, 37, -146,116,157,228, 70,200, 53, 48, 94,231,128,144,201,173,215,129, 95,218, 66,146, 36,242,249,246, 7, 43,234, 33,228, 78, 75, 76, -119,246, 52, 37,241,148, 38,119,184, 97,202, 85, 15, 33, 23,255,235,187,210, 56, 78,111,244,204,114,167, 29,178,186,187, 31,243, -135, 69, 77, 10, 63,171, 94, 78,235,165, 69, 68, 88,104, 77, 39, 97, 97, 45,235,209, 49, 51,154,110, 74, 20,218, 6,143,210,138, -139,126,186,133,167,188, 14, 15, 62, 76,112, 28,253, 18,126, 35, 68, 22,124, 69, 8, 99,164,148,217,163,222,135, 64, 35, 5,109, -140, 40,160, 19, 76,111,116,193, 71,193,115,168, 36, 39, 67, 96,144, 2, 23,179, 55, 49, 75,193, 95, 6,138, 76,161,228, 83,145, -141, 47,188,168,103,189,231, 51,203, 25,125,138, 84, 74,224,147,160, 16, 80, 75,141,115,142, 82,105,180,204,162,182,165, 82, 24, - 50,145, 46, 41,145,255, 10, 37,153,135,196, 25,130, 61,173,168,148,230, 56, 74,156,152,254,174,126,200,239,114,165,114,160,139, -148, 89,128,120,189,194,113,126,210, 61,100,229,100, 88,204,248,202, 23, 31, 50,244,158,174,115, 4,231,240, 19,250, 85,164,196, -195,215,142,152,213, 5, 59,179, 34,115,117, 2, 72, 45, 9, 33,178, 25, 29,151, 87,158,110, 12,164,152,111, 65,102,250, 62, 37, -146, 20, 18,129,196,232, 34, 99,200,104, 74,145, 34, 86, 64,149, 50, 38, 22, 31,216,142,158,245, 24, 24, 59,135,115,142, 2,120, -238, 60,235, 20, 72,222,209,199,192,108, 49,231, 81,187,229,215,255,201, 7, 60,146,129,247,206, 28, 31, 92, 57,134, 51,207,199, -207, 29, 31, 94,246, 28, 24,184,245,165, 59,252,200,195,215, 41,142, 14,184,163, 3, 63, 84, 43,126, 98, 94,177, 42, 18,181, 16, -164, 4,203,210,114,179,217,161,158,205, 40, 22, 53, 86,233,204,100,146,249,119, 22, 2, 44,230, 53,135,179, 18, 66,224,252,116, -195,241,211, 51,182,235, 43,252, 48,226,188, 35, 57,143, 74,137,224, 61,206,193, 48, 38, 98,161,137, 74,210, 43, 65, 42, 13,205, -178, 64,156,111, 40,254,245, 19,222,189, 88,227, 17, 72,151, 72,218, 80,104,157, 5,133, 36,132,139,200, 36,136,133,202, 41,130, -217, 9,136,213,138,157,155,115,102,251, 53, 95,254,201,207,241,141, 47,191,198,215,239, 46,217,185,183,199, 87,190,244, 6,255, -252, 95,109,217, 14, 11,228,113, 64,208, 79, 69, 29, 22,111,214,232,162,228,225,205, 5, 95,255,252, 17, 15,126,244,179, 60,223, -175,216, 43, 53,149, 75, 84, 74,162,173, 70, 22,146, 7,187, 37,197, 97, 69, 58,168, 89,188,187,229,234,124,160,235, 70,254,232, -120,160,154, 43,124,136,140,235, 17, 51, 4,118, 18,148,203, 18,229, 19,138, 68, 97, 36,113, 59,146,188, 71, 38,137,116, 1,209, -142,212,253, 72,108,183,104, 34,183,133,230,205,178,225, 70, 89,112,179,110, 88,205,102,212,203, 5,229,206, 28, 93, 26,172,178, - 24, 4,182, 44, 49,179, 10,213,212,232,202,162,171, 2, 85, 20, 88,107, 88,120,205,111, 15,129,207, 53, 13,101,213, 80,107,139, - 72,145, 66,120,158, 62,187, 36,125,112,204, 7,255,215,247,216,185,111, 24,199,150,199, 23, 23,188,211,122,126,246, 96,151, 47, -238, 30,242,234,206,146, 15, 82,160,221,110, 50,222,118,162, 41, 10, 49,185, 69,234, 10,154,102,138, 48,253,148, 86,136, 41, 2, -238,122, 82, 20,249, 62,154,113,157, 67,254, 44,253, 69, 7,159,235, 33, 71, 22, 57,113,171,106, 96, 94,231, 7,180,214, 44,172, - 98,169, 36,123, 11,131, 1, 30, 86, 53,145,108,169, 45,165, 32,166, 56,125,174, 96,244,217,109,161,200,216,106, 43, 4,115,105, -176, 73, 98,173, 38,133,152, 83, 19,125,100,219,181,108,251, 43, 68,116, 8, 4, 82, 40,164,136, 24, 85, 32, 85, 66, 8,131, 42, - 12, 56,151, 49,206, 82,230,144, 24,231, 16, 90,163,109,129, 68, 99,108,133,178, 21,214, 52,216,170, 65,106,141, 45, 42,138,162, - 38, 42,195, 65, 61,103, 67, 98, 89, 21,124,243,108, 64,223,219,197,159,158,229,154,108, 20,233, 26, 64, 38,167, 9, 94,235,191, - 24,126,220,232, 28,212, 99,228,196, 43,153,238,235, 98,138,245,142,113, 18,253,102, 56, 24, 70,210, 38,184, 97, 45,181, 53, 12, - 82,146, 84, 14,185, 84,202, 18,100,110, 70,163, 84,196, 32,152, 87,150,109, 18, 84, 74, 19,164,160, 81, 6, 33, 5,133,146,116, -241, 90,155, 52, 21,118,165,153, 11,197,171, 69,197, 73,204,191,155,165,178,108, 17,116, 40, 66,146,220,144,138, 36,178, 88,120, - 30, 35, 31, 2,165, 41, 9,228, 96, 46,165, 21, 59, 82,114,171, 50,220,211, 37, 91, 4, 51,105,216, 74,197, 74,149, 12, 74, 83, - 40,205,205,178,102, 16,130,211, 48,109, 42, 70,247, 82,139,161,204, 20,179, 42, 94,164,222,161, 45, 74, 25,146, 82, 4, 85,254, - 37,228,169, 95,175, 76,174,253,155, 77, 61, 21,177,235, 28,239, 79,197,203,169,201,203,221,141, 89, 24, 81,152,233,126, 49, 21, -160, 41, 44, 5,145,253,206, 47, 86, 11, 50,175,151,157, 53,204,180,230,187,155, 45,243, 66,179, 52,134, 53,153, 94,212,198, 64, - 7,116, 78,112, 17, 2, 98, 12,153,169,155, 34, 47,118, 52, 98,250, 30,194,212,125, 43, 5, 62, 32, 75,205,166, 31,153,149,138, -218, 26,146,247, 44, 11,203,214,123,218,224, 9,192, 54, 38,138,152, 56, 13,137,237, 48, 78, 65, 41,215, 30,252, 63,251, 65,158, - 86, 38, 76, 63,127,120,201,163,126, 60, 70,110, 53, 22, 71, 98, 71, 74,118, 76,193,102,220, 98,180,129, 48, 16,164,193, 6, 79, - 99,114, 51, 82, 41, 73, 36,161,149, 68, 75,197, 73, 74,236, 33,121, 26, 3, 43,109,176,181,228,233,224,167,201,156, 60,141, 79, - 62,234, 23, 98, 69,145,166,135,213, 84,153,125,142,171,187,120,118,204, 87,127,236,135,113, 99, 94,135,199, 4, 33, 36, 54, 93, -143,235, 3,139,221, 37,187,243, 38, 39, 1, 78,248,211,124, 51,207, 2,184,182,243,116,131,207, 73,142, 49,162, 84,142, 61, 84, -211, 41, 98,188,158,210, 67,164,154, 4, 40,253,132,142, 44, 82, 78,243, 75,131,231,162, 27,113,221, 64,233, 61,142,200,198, 59, -182,126,200, 27, 38, 91,112,120,231, 38,207,187,150, 63,126,247,241,116,190, 73, 83,124,108,130, 70, 48,158,120,254,205, 89,207, - 31,111,174, 8,203, 72, 89, 85,188,243,241, 83,202,229,140,163, 89,195,254,238, 62, 7,209,115, 11,248, 92,221,176, 55, 91, 98, -171, 26, 91, 26,202,194, 98, 11,149,213,185, 8,162, 15,220,152, 87, 28, 46, 75, 84, 72,156,157,181,156, 95,158,211,119, 67, 78, -132,242, 25, 23,156, 98, 32,198,252,190, 12, 41,226,198,196, 0,244, 72, 22,115,203,124,102,184, 58,121,206, 91, 31,124,196,163, - 16, 56,187,234,185,120,118,198,187,223, 62, 97,126, 50,240,222,224,217, 45, 53, 58,129, 83,137,160, 97,227, 3, 94,100, 11, 91, - 2,124, 18,140, 82, 49,147,146,135,115,195,106, 89,179,191,204,119,208,159,255,107,175,243, 31,253,228, 3,126,242,139,183, 88, -251,199, 60,126,255, 2,137,227,175,252,215, 63,199,143,191,114,192, 50,228,237, 87,153,224,187, 23, 29,231,143, 79, 57, 18,154, -198, 72, 76,109, 16, 38, 71, 69, 26,165,184,122,187, 69,188,239, 49, 79, 7,206, 79, 47,232,195, 5,118, 54, 67, 95,110,177,155, -150,230,170,231, 48, 36,106,163,120,181,150,124,205, 74, 62,155, 34,175,199,192, 43, 41,242,211,179,146,215,140,224,118, 33,185, -242, 3,201,195,129,210,220, 87,134, 90,231,237,200,162,154, 97,234, 18, 89, 24, 68, 93, 34,173, 65, 40,137, 72, 18, 33,115,244, -174,104, 42,196,162, 0,171,145, 90, 33,149, 68, 43,197,225,178,225,212, 5,222,108,106,246,139,138, 91,166,228, 63,251,247,126, -140,159, 53, 21,127,239,234,156,120, 88,243,157,147,142, 63,252,232,146,119,158,174, 73,223, 59,231, 27,111,222,229, 70, 85,211, -166,200, 31, 5,199,152, 52,244, 30, 49,246,249, 4,165, 64, 20, 5,114, 81,243,250,174,197, 91,155,197,174, 62,188, 12, 18,145, - 50,175,129,175,201,142,110,204,214, 55,247,255, 67, 48,167,116,142, 41,109,106,216,153,229,130, 94,217,188, 58, 45, 21, 43,171, - 40,132,228,103, 87, 21,135, 2, 94, 45, 11,130,148,200, 24, 41,164,198,165,152,131, 26, 73,196,224,185,232,182,180, 33,144, 82, - 30, 52,124, 10,104, 18, 82,105, 84,136,156, 15, 3, 2,193,218,245,140, 33,112, 25, 70, 92,138, 68,239,208, 74, 99,141, 37,165, -136,110, 26, 68,200, 14, 22, 97, 44, 20, 10,161, 20,201, 59,132,202, 9,139, 66, 8,164, 84,153, 68,109, 43, 32, 33,172, 70, 74, - 69, 82,154,164, 20, 90, 25,182, 8, 74, 83,208,138,200,157, 18,196,122,203,113, 31,241,101, 69,242,144, 76, 65,180, 53, 41,138, -108,115,150, 6,172, 68, 76, 91,222, 63, 79,233,211, 47,239,200,105, 42,224, 70,189,200,137,167,152, 10,237, 20, 20, 99,203,146, -160, 21, 86,106,154,210, 18,165, 66, 75, 67,105, 52, 87, 99,162, 49,134, 36,179,184, 13, 4,115,109,137,133, 69, 36,155,183, 33, - 74, 81, 73, 75, 75,160, 81,146,203,148,240,198,144,194,116,198,156,148, 79,181, 50, 84, 41,112, 46, 4,149, 54, 52, 34,242, 84, - 40,246,101, 22,167, 5, 96, 76, 2, 39, 37, 59, 82,242, 28, 8, 41, 32,148, 69, 16,105, 80,220, 22,154, 55,230, 11, 62,244, 35, - 75, 85,176,197,177,178, 11, 62,113, 61,171,114,198, 58, 65, 79, 98, 71, 75,122,105, 88, 71,159, 27,153,110,152, 26,163,105,237, - 46, 5, 66, 23, 40,109, 40,180,196,203, 44,162,147, 50,253, 37, 8,229,174,189,155,117, 57, 69,135,166, 79,201,237,139, 23,222, -194,151,164, 32,145,249,239,238,218,214, 96,115, 81, 15,254,165,216, 44, 77,121,226,253,244,239,146,135, 82,179,144,130,211,126, -224,235,111,126,142,243, 71,143,248, 36, 37,106, 43, 57,117,217, 50,225,250,200,243,216,177, 91, 20,156,140, 46, 79,174, 74,229, - 78, 79,126,106,101, 99,213,203,239,187, 80, 68, 23, 40, 76, 14,162,217,211,129,193, 90,206,219,204, 11, 54, 90,178, 29, 61,117, -130, 51, 36, 55,172,224,217,116,147,207, 96, 23,253, 41,110,190,250, 62,183,180,235,117,146,134,232, 9,253,192, 31,159,110,248, -252,193, 18,105, 52, 79,182,107,246,170, 26,215,247,152,162, 98, 24,174, 16,186,196,122, 15,182,164,247, 89,201, 95,105,141,247, - 57,208,224,116,116,220, 16,154, 45, 9,147,200, 97, 20, 35, 80, 68, 24, 38,223,250,181, 53,240,251, 61,127, 12,153,206, 4, 88, - 43, 1,205,213, 69, 32, 78, 83,202,188, 44,233, 59, 79,112,129, 16, 67, 6,172,132, 72,165, 37,227,224, 81, 50,177, 29, 60,155, -193,177,222, 58,116, 27,217, 93, 20,212, 70,226, 67,194,170,156, 84, 38,175, 51,129, 72,116, 41, 7,168, 68,160, 21,130,128,160, -209, 57, 77,105,150, 96, 45, 4, 43,165, 24,130,100, 85, 20,108,250, 54,247,129, 68,202,202,226,214, 87,217,214,135, 7, 27,225, -142,205, 10,119, 18, 44, 53, 92,193,229,123, 29,191,117,252, 1,247,127,102,203, 7, 62,112,218,119, 28, 23,138, 55, 23, 59, 12, - 85,195,221,221, 5,183,186, 17, 37, 20,167, 68, 68,128, 69,109, 49, 70,177,141,145,203,148,137,178,115, 33,144, 33,209,141, 30, - 70,135,244, 9, 27, 34, 82, 41,164, 16, 83,202, 85, 66,248, 97,202,156,246,244,222,177,137, 3,108,103, 92,218,132,208, 13,255, -242, 60, 17, 67,164, 54, 6, 33,225,160, 40,217, 21, 35, 95, 60,118,252,195, 63,254, 61,126, 39, 58,110,127,253,135,152,223,152, - 99,154,130,164, 53,203,202,210, 21, 5, 99, 74, 68,173, 9, 62,243,248, 69, 20,164,144, 25, 28,131,212,148, 18,202,251, 13,175, -222,126,149,255,230,103,255,115,206,223, 57,230,119,199,192,177, 10,108,149, 68,196,136, 1,194, 24, 56,253,149,223,231, 79,254, -231,223,231,183, 80,252,213,255,224, 62,191,248, 95,252, 13,230,159, 57,152,214,152,130,219, 63,126, 3,126,244, 16, 98,228,205, -206,227,207,122,190,245,127,188,197,193,189, 67,218,222, 79, 28, 1,137,117, 26, 61, 72, 74, 41, 40,102, 51, 68, 61, 67, 76,228, -200,250,170, 67, 94,108,185, 85,150, 60, 25, 19,115, 37,169,181,162, 68, 48,223,153,163,119,102,136,114,194, 23,199, 4,163,200, - 19, 72, 57,137, 52,108, 49,173, 58, 65, 76, 42,100, 17, 37,210, 40, 30,116,154,187,171,125, 60, 9, 71,194,141,240,247,255,241, - 31,240,175,135, 62, 7,144, 72,133, 44, 21,194, 42, 36, 37,241, 48,241,203,223,250, 46,255,195,143,126,134,181, 54,108, 66,132, -189, 5,194, 42,210, 39, 37,162,189, 36,181, 27,192, 19,235,130,103,193,114, 41, 4,204, 42, 4,146,212, 78, 32,154, 97,132,226, -122, 16,136,223,159, 16,247,255,182,118,215, 21,203,195, 57, 93,146,220,222,169,137, 72, 78, 17,108, 66, 70, 98, 43,153, 27,183, -175, 47, 53, 7,149, 97,134,193, 5,120,220,118,148,117, 69, 55,108,153,219, 18, 43, 2,155,161,231,180,109,249,216, 15,156,219, -134,187,141,100,140, 30,145, 52, 79, 66,207,118, 27, 16, 66,178, 50, 37,207,198, 30, 69, 68, 4,143, 8, 3, 39,192,205,114,134, -211,185,161,211,245, 44,247,245,171, 26,233, 2, 30,137,138,145,224, 71,164, 85, 48, 90, 82,202, 91, 9,193, 20,196,148, 34,178, -172, 72, 49, 98,154,138, 24,242, 48, 23,181, 99, 87, 72, 68, 81,177, 34,178,213,138,163,242,140, 47,204, 12,143, 29,156, 13, 35, - 66,106, 46,124, 96,140,224,194, 4,240,217, 76, 1, 60,166, 32, 13, 49,115, 78, 94, 12,138, 38, 59,163, 82,132,178,196, 54, 5, -152,130,170,202,110, 33,172,166, 2,182,218, 80,106,141,139,158, 3,157, 73, 17, 86, 91, 74,107,115, 70,133, 82,172,180, 70,107, - 3, 8, 10, 41,144, 82, 19,133,162, 34,114, 28, 18, 21,137, 82,229,230, 98, 95, 23, 92, 12, 14, 77, 68,135, 64, 48, 10,229, 50, -113,242,129,214, 60,119, 35,162, 44,152, 69,176, 9,190, 23, 35,175,105,120, 39, 38,142,164,164, 6,158,197,200,109,224, 17,208, - 76,224, 27,162, 71, 34,248, 90, 93,114,219,104,206,188,227, 78, 81,115,236, 28, 11,179,195, 24, 71,110,207, 86, 92, 12, 27,118, -140, 69,104, 67, 43,224, 78,225,185,223,236,115,188,217, 82,204, 12,111, 61,223, 18,165, 70, 12, 46, 71,217, 18, 40,129, 82, 40, - 14,136,160, 18,131,212,127, 9,147,250,167,163, 12,109,153, 63, 0,122,234,180,124,152,248,180, 83, 60,166,184, 78, 12,155, 80, -176,106,154, 28,211,100,123, 99,154, 52,167,238, 48,139,240,166,197,147, 15,168,210, 50, 83,138,211,205, 26,173, 52, 94, 73,188, - 80, 92, 37, 40,147,162,149,176,246,145,171, 97,164, 16, 34,231, 18, 95,159,203,164,192, 22,138, 48, 38, 48, 10, 37,196, 11,135, - 4, 70, 17,134,145,206, 37,118,172,164, 78, 57,181,205,167, 72,244,121,157,213, 35,152,201,200, 73,159, 88,143, 97,106, 24,228, -203,117,126,186, 78, 81,147, 47, 15, 72, 82, 76,234, 73, 61, 53, 0,185, 38,141,201, 51, 55,146, 89,105,114, 67, 33,166,147,247, -208, 83, 26, 75,240,142, 78, 8,230, 72,198, 24,209, 54,195,254, 21,146, 32, 52, 90, 66, 23, 35,143, 99, 64, 10,205, 19, 38, 11, - 70, 63,117,117,147,157,231,229, 42,241,207,110, 87, 66,214, 22,148,134, 31,255, 43, 63, 65,140,208, 94,181,116,109, 75,187,237, - 40,138,130,161, 31, 80,210,178,183,191,195,173,221,134,224, 35,150,140, 56,236, 92,164, 29, 3, 97,140, 92,181,142,209, 7, 54, -206, 83,151, 58,135,183,136, 44,164,243, 41,209,133,124, 23, 43,132, 96, 12,137, 33,229, 48, 28,231, 35, 54, 69,108,231, 24,122, - 71, 57, 56, 86, 81, 32, 37, 84, 64,116,129, 24, 50,242,240,193,141, 67,222,251,224, 17,239,157, 92,241,122, 23,121,254, 73,128, -117,128,165,130,199, 14,250,200, 44,129, 38,113,184, 48,216, 16,168, 14, 42,214,231,125,158,104, 54,103,180,209,241,165, 47,125, -137, 27,111,188,194,182, 48, 92,110, 91,170, 4,203,101,195,124, 86, 80, 89,195,210, 40,118,203,130,189,121,137,150,146,161,115, -116,151, 45,169,235, 41, 68,182,134, 25,157,225, 14,122, 90, 20,232,148,208, 50, 82,132,132, 30, 28,202, 57, 70,239,105,235,154, -205,108, 70, 82, 21,171, 24,216,155, 27, 78,188, 64, 12, 61,103,238,138,127,122,118,142, 25,215,188,251,157, 15,233,223,126, 76, -251, 27,223,228,157,247, 79,248,253,223,121,143,187, 23,145,117,109,184, 24, 29, 73, 75,180,149,248, 49,135,197, 92, 33,216, 2, - 49,102,151,136,239, 28, 91,153,120, 63, 37,250, 82, 19, 77,129,145, 26,143, 96,140,129,113, 12,188,242,230, 29,254,229,123,239, - 99, 30,141, 60,250,246, 57,255,244,127,251, 67,126,225,111,254, 8, 98,178,194,166, 33,226,175, 6, 82, 76, 25, 7, 92, 26,110, -125,227, 30,205,221, 29,246, 63,187, 98,247,181, 93,230, 71, 11,138, 69,133, 80, 18, 93,106,180, 80, 40,163, 81,133, 38, 78, 13, -243,198,121,198,152,185, 2,135, 83, 20,239,222,124, 78,185, 63, 71, 86, 57,194, 22,159, 72, 99, 36,174, 59,146,115,164,174, 39, - 57,135,176, 42,127,212, 11, 77,242,137, 56, 6, 92, 63, 18,188,199, 71,159,243,173, 75,131,170, 11,236,254,146,195,197, 46, 55, - 69,197,126,165,113, 54,242,180, 31,137,195, 72,252,206, 25,137,192,189,253,146,191,253,181, 47,243, 57,101,249,213,147, 99,174, -124,204, 83, 94, 85,228, 38,216, 84,224,122, 68,187,165,247,242,101, 64,134, 49, 8, 49,129, 61, 72, 19,123,252, 58,222,242, 83, - 39, 68,173,255,252,132,121,157,139, 81, 90,104,230,168,229,140,207,237,204,120,184,187, 96,111,209, 80, 88,205, 65, 83,240, 60, - 66,144,137, 74, 27,172, 12,252,120, 83, 49,183, 42, 67, 84,124,158,194,207,183, 3, 49, 68, 6, 55, 82,144,159, 63,111, 11,120, -171,218,227,222,124,201,221,253,219, 24,109,179, 64,109, 24, 56,139, 35, 67,244,180,192,198, 15, 92,185,142, 77,116,108, 82, 2, -107, 89, 43, 65,221, 52,216,162, 64,218,124, 42, 10, 49, 76,196,115, 8,163, 35, 77, 27,197,224,186,252,222, 16,146, 20, 28, 66, - 24,146,202,226, 87, 89,214, 89,189,164, 44,113,130,225, 68,107, 9, 68,162, 46,217, 4, 71,176, 22, 93, 85, 72, 43,121, 80, 87, -152,218,240, 96, 94,113,119, 86,112,123, 81, 49, 8,201,225, 94,205,185,158,234,133,212,249,249,101,235,151, 89,225,218,192,124, -206,237,221,138,195,186,164,153, 21,172, 26,195,194, 90,118, 11,197,110,101,217,151, 26, 37, 51, 91, 98,161, 11,230, 69, 73, 97, - 20, 51, 91, 17, 68,100, 49, 21, 72,133,100,174,114,240,151,151,154, 65, 8, 46, 93,100,174,115, 2,227,220,102,232, 76,235, 70, -106,149,127,239, 27,239,169,100,118,242, 52, 36, 28,146,221, 20, 25, 66,126,110,245, 66,240,154,214,188, 59,140,220,183, 5,199, - 33,178,163, 36,149, 82,156, 35,185, 15,124,148, 2,114, 10, 2,251,233,106, 70, 29, 97, 97, 21,115, 99,240, 66, 80,153, 76,180, -171, 76, 65, 31, 60, 11, 83,209,138, 68,166,241,123,140,214,184, 40,153,171, 68,151, 12, 43, 3,167, 67,200,246,241, 24,121,189, -106,216, 81,146, 90, 10,110, 74,201,162, 40,177, 66,253,128, 69, 93, 79,235,165,235, 44,118, 57, 81,129,196,148,223,157,166, 34, -173, 39,240,252, 11, 68,172,123,121,167, 26,211, 68, 26,242, 83,138, 88,238,170,178,170,217,230, 73, 83,128, 42,203, 44,136, 52, - 5, 59, 90, 65, 89,224,164,101,140,137, 70, 91,158,120, 71, 23, 34,193, 22,132,190,207,228,159, 77,159,191, 23, 99,144,133,196, -162, 40,172,197, 39, 71,140,137,125, 83,208,199,136, 85,138,224, 60,193, 7,118,180, 96, 16,208,133,128,137,130,109,242,148,211, - 26,204, 36, 56, 29, 60,173,144,249,254,239,252, 20, 65,153,160,170,242,207, 48, 78,105, 76, 97,122, 16, 88, 59,145,244,166,230, - 71,100,111,230,170,177, 36,159,216, 45, 10, 90, 55, 96,101, 86,226,187,233,181, 49, 86, 51,142,142,178, 52,136, 0, 73, 78,164, -163,152, 94,172, 78,157,146,252,193, 38,135, 3,188, 72,107,187, 22, 38, 94, 43, 39,191,223,237,170, 46,167,219,191,224, 75, 95, -255, 42,101, 83,208,111,123,218,245, 38, 99, 5,180, 65, 70,193,197,249,134,162,156, 51, 95,212,204, 27,141, 84,130,118, 72,244, - 62,208,247, 1, 23,161,247,142,182,119, 88,171,184,123,208, 32,200,247,248,156,214, 22,179,149, 45, 68, 90, 31,232, 67, 64, 8, -145,197,250, 46,160,131,167,234, 51,107,125, 24, 28,125, 8, 60,139,142, 62, 70, 26, 41, 25, 82, 98, 37, 21,175,220, 62,228,195, -199, 79,184,250,246, 57,247,172,228,246,107, 37,162, 86,188,118, 88,112,187, 11,252, 59,243,130,207,110,115, 51,240,229,160,216, - 93, 74, 52,176,187, 44, 16, 8,246, 2, 92, 68,199, 16,224,141, 55,239,243,218,103,110,113,220, 58,174,250, 1, 91, 21, 20,133, -166, 41, 52,133, 82,236, 46, 43,234,202, 98,164,160,219, 14,108,215, 45,105, 24, 49, 66, 80, 26,141,145, 18,155, 18, 50,100,171, -158,140, 9, 69,206,153, 55, 17, 52, 17,213, 57,180,119,136, 33, 97, 48,244,197,140,131,253, 93, 98, 57, 39,154,138, 43, 13,101, -123,201,237, 30,158,186,142,195,214,113,233, 6, 94,237, 19,207, 66,135,252,246,187, 92,125,247, 9,255,228, 55,254, 57, 79, 30, -117, 60,122,188,229,195, 62,208, 91,141,208,146, 46,130, 12,158,174,117,124,180, 30,248,206,105,199, 58, 37,164,150,124,102,101, -241, 66,147,140,230,208, 9,182, 50, 49, 68,197,236, 51,175,242,229,159,126,157,195, 7, 37,238,189, 51,254,207,255,233, 55,249, -233,191,241, 21,164, 80,184,179,129,177,115, 4, 41, 80, 66,162, 76, 78,181,147, 11,139, 40, 52,178,204,235,240, 24,179,203,196, -141,121,122, 39,228, 7,125, 18,137, 97, 12, 92, 56,135, 46, 13, 61,176, 50, 57, 4,104, 86, 91,244,117,218,152, 75,132,103, 91, -134,247,143,241, 31,126,194,248,201, 49,227,232, 16, 49, 32,166,160,161,216,142,248,193,227,186,158,182,235,184,188,220,224,198, - 1, 93, 40,164,209, 8,173,161,208,116,222,211, 38,193, 85, 10,196,148, 40, 45,168,186,228,188,214, 68, 45, 56,247,240,209,211, - 71,252,183,111,125,151,231,103, 93, 46, 30,243, 69, 86, 52, 47, 26,196,238, 46,236,237,193,124,137,120,126, 9,174,205,197, 68, - 76,226,223,186,156,232,141,226,229, 42,254,211, 27,184, 79,255,249,186,200,235, 38,175,150, 15, 14, 88,204,107,126,226,104,151, -251,243, 57, 55,155,134, 90, 27,118,148,228,196, 7, 90, 1,253, 20,203,176, 39, 36,187, 5,220, 84,185, 9, 47,133,224,184, 31, -248, 23,207,214, 84, 74,240, 30,145,161,168,248, 94,189,226,247,203, 21,174, 90,240, 87,239,222,227,160,168, 88, 53,187,196,144, -232, 72, 28,183, 3,155,152,136, 41,224, 98, 96, 27, 3,231,126,196, 9,193, 58, 38,188, 18,216,186,196, 24,203, 40, 35, 42, 9, -134, 20,137, 50, 15, 55,227, 56, 18,194, 72, 26,122, 82,136,200, 20, 73,110, 64, 40,155, 61,255, 73, 65, 85,101,207,182,148, 36, -163,242, 57, 74, 11,164, 81,180, 33,209, 7,199, 32, 37, 99, 76,180,201,179, 99, 42,148, 49,220,169, 42,180,206,246,180, 85, 61, - 99, 85, 88, 6, 45,169,235,130, 81,104,196,188, 33,212, 85,174, 37,139, 6, 22, 85, 22, 15,214, 5,119, 87, 51,144,154,210, 42, - 42, 99,137, 72,246, 75, 75,161, 13, 23, 94,176, 83, 91,108,212, 84, 69,241,162,168,121, 18,141,170,112, 49,167, 74, 90,153,165, - 95, 73,106,208, 2,147,160, 46, 10,182,227,136,143, 9,143, 32, 6,135, 16,138, 75, 63,144, 98, 96,144,137,198,185,156,149, 78, -100, 39, 5,108,206,240,100, 38, 18, 46, 36, 54, 66,112,168, 13,143,253,192,131,178,225,210, 59, 82,138, 44,129,143, 8,184,224, - 16, 62,113, 71, 27, 14,165,226,176,214,168,144,144,198,190, 8,146,140,147, 91,170, 52,150,203, 16, 88, 25,195,218,141, 84,182, -100,240, 30, 41, 18,103,163, 67, 39,176, 82,115, 44, 2,171,178,226,117,163, 9,202, 98,148,226, 64, 9,148,212, 52,133,100, 33, -220, 15,170,126,159,146,217,132,205,147,185,158,176,175,218,188, 12, 88, 86, 58,123, 62,153,140,253,253,116,131,239, 93,158,212, -245, 52,237, 42, 61, 77,187,215,201,110,217,248,159, 1, 16,144,148, 66,148,138,186,176,180,218,160,149,194, 40,205,229,116,243, -174,180,229,185,243,132,190,195,206, 23,140,235,171, 73,192,150,183, 0, 73, 43, 42, 33, 72, 41,210, 40,137, 16, 18, 99, 36,189, - 15,153,123,110, 52, 12, 35,235, 40,184, 91,105, 46, 93,160, 86,138,153, 84,156,199,196, 92, 75,206, 98,224,196,101,228, 96, 34, -195, 83,242, 14,138, 44,240,211,122, 42,188,241, 83,170,127,159,109, 35, 34,253, 41,110,244,105, 23,121, 56,171, 24, 68, 94,255, -244,221,128, 22, 9,161, 50,227,184,237,123, 10, 99, 81,225,165,176, 47,251,230, 51,135,121,144,138,167,222,113, 25, 36, 65,155, -220, 16,197,137, 12,120,205, 7, 78,225,251,223,255,164,156,110, 86,112,247,238,125,118,247,119, 25,122, 71,244, 14, 31, 34,221, - 48, 98,180, 33,196, 72,221,204,152, 47, 22, 28,173, 26,148,140,249, 53,117,105,186,149, 7,146,136, 8, 37, 9, 99,192, 88,197, -178, 54,140, 33,101,180,233,148, 19, 45,128,113,186, 1, 54,147,222,192,133,144, 93, 61, 41, 18,134,192,170, 15,120, 23,152,161, -216, 79,145, 48, 6,130,132, 74, 43, 86,203, 57,223,124,250,148,183, 30, 95,240,137,243,188,211,122, 78, 54,158,167,223,107,121, -114,191,224,116,166,249, 23, 91, 79,120,189,224, 96, 71, 50,215,154,102,167,228,167,230, 11, 22, 46, 81,140,129, 98, 49,167,243, - 45, 85,185,195, 27, 15,111, 48, 70,193,232, 19,125,202,177,177,213,100,127,156,205,107,234,202,162,148,196,199, 68,215,122, 92, -223,147, 98,156,208,182,145, 20, 34, 41,166,172,128, 23,153,160,167,132,202,182, 62,173, 40,181, 98,111,165,121, 77, 69, 22, 51, -203,237,189,134,207,220,222, 97, 86, 89, 62,142,134,214,214,236,220,184,133,187,119, 31,127,239, 53, 14,191,242, 25,110,126,254, - 13,206, 84,197, 59,103,199, 60, 59, 89,243,215,247,102,252,163,139, 13,225,233, 39, 12, 79, 62, 66,187,200, 86, 20,156, 78, 97, - 29,214, 69, 62,217,122,222,189, 26,120, 54, 58, 58, 37,249,252, 94,193,225, 60, 55, 37,167, 81,113, 94, 72,238,161, 56, 51,138, -155,135, 51,110,223, 95,113,227,243,247, 89,252,252, 23,216,251,236,138, 95,254,239,255, 1,221,255,248, 29, 94,251,165, 55, 17, -133, 66,207, 44, 74,171, 44, 65,185,214,184,196, 12, 49, 74,189,167, 61,105,249,224,116,195,105, 55, 16, 58,199,213,186, 99,187, -238,216, 58, 79, 31, 35,163,204,186, 2,124,224, 42, 37,230, 70, 97,138,108,191,137,125, 96,120,116,193,240,225,115,210, 59,223, -130,211,143, 8,237, 37,177,191, 66, 10,133, 8, 16,186, 14,223, 13,244,219,142,171, 77,203,135,151,151,124,216,109,144,193, 33, -133,204,205, 65, 97,137, 34, 49,106,197, 38, 6,206, 60,244,147,194,186, 20,145, 7,171, 25, 71,243,130, 7, 51, 67,159, 50,151, -240,164, 11,121,157,254,252, 12,179,103,219,153, 0, 0, 32, 0, 73, 68, 65, 84, 49, 43, 97,103,143,159, 63, 92,241,239,222,188, -193,157,198,242,237, 56, 64, 81,231,207, 75, 31,167,103,153,206,195,198,162,225,206,209, 62,159, 59,152,243,113,159,207, 49, 88, -253, 50, 90, 90,216, 60,180, 44,151,176, 83,103,235,221,238,140,175,222,220, 97,223, 88,142,170,134,156,105, 24,168,116,129, 13, -129,142,196,137,207, 91,139, 43,159, 83,233,110,218,140,191, 62, 27, 6,254,238,227, 45, 79,202, 25, 79,246, 15, 57,221,185,201, -191,169,119,121, 82,204, 17,186,228,111,222,187,205,151,202,154, 31,154,205, 57,136, 9,233, 19, 9,129,151, 35,155, 33,208, 19, - 8, 34, 39, 87,110, 93,224, 60, 70,174,132,160, 37,159,152,102,133,161, 52,134,181,243,200, 24,241,131,231,249,230,138, 20, 2, -109,219, 18,131,199,140, 35,113, 26, 46,210,181,232, 87,233,108,113, 20, 57,200,200,123,159,173,107,218, 48, 58,207,152, 18, 27, - 53, 97, 70, 68, 94,217,123, 41,217,181,118, 18,170,105,118,170, 25, 93,138, 20,166, 96,223, 22,244, 18,150,179, 37, 74,165,220, - 88, 47,102,217,150,166, 52,187,243,134, 59, 85,201,210, 40,202,166,162,214, 6,109, 21,179,162,100, 20, 9, 37, 53,135, 77,157, -239,225,182,194, 40, 48,214, 96,117, 73,161, 12, 99,154, 68,189, 34,163,176,209, 37, 86, 73,186, 16,209,218,112, 53,120, 74, 35, - 16, 73,146, 66,142,220,214, 36,174, 82,164, 77,145,185,243, 24,161,153,145, 61,255,187, 41, 32,146, 71, 7, 79, 18, 96,137,244, - 67,203, 24, 34, 71,218,242,214,176,229, 72, 25,106, 41,120,199,121, 98,138,144, 2, 70, 75,110,203,204, 71,185, 95, 22,116, 74, - 82, 2, 35,137,153,210,180, 74,178,212, 37,155,228, 89,105, 77, 39, 4, 43,107, 57, 31, 29, 51, 93,240,164,237, 49, 66,210,225, - 9, 74,241,229, 89,197,158, 12, 68, 81, 80,106,201, 61, 35,153, 27,131,146,145, 50, 9, 46,199,248, 3, 22,117, 37, 95,168, 15, - 51,133,199,194,188,252, 83,118,131, 23, 89,175,144,167, 71, 33,242,250, 87,132,188,110,105,202,252,223,221,148, 34, 22,166,105, -189, 42, 51,196,134, 41, 98, 78, 68, 82,105,136, 90, 35,140,101, 84,154,115,231,152, 23, 21,206, 88,158, 13, 91,234,178,202,201, - 97,125,151, 39,231,179,171, 92,120,165,162, 40, 53, 67,136, 20, 34,145,132,192, 74,232, 92, 96, 33, 37,165,146,116,237, 0, 82, - 18, 58,199,211, 49,242,234,220,208, 69,207,241,152,184, 89, 91,158,185, 17,159, 12,107, 4,209,249,252,179,251,144, 27,150, 48, -137,253,226,132,245, 75,188, 92,205, 15, 33,223, 46, 99,122,169,250, 28,243, 42,207,169,196,145, 53, 92,141, 35,149, 54,108, 6, -151, 85,241,215,255,111, 8,140,211,170,135, 16,113, 82,230,104, 83,145, 85,153, 35,137, 62, 36,182, 99,151,155, 38, 61, 61,104, -220,164, 69,232,253, 68,156, 11,127, 6,126, 33,166,252,250,200,219,223,252, 22, 63,245, 11, 63,195,246,226,138, 52, 53, 40,222, -123, 78, 54, 27, 98,128,189,249,146,229,114,198,206,220, 82,200,124, 90, 24, 93,162, 29, 3,227, 24, 25, 7,207,186, 27, 8, 46, -210,133,192,162,182, 72, 18,133,146,217,191, 42,193,165, 68,140, 89, 13,111, 98,100, 41, 35,229,148,191, 62,159,236,110,201, 69, -116, 10, 44, 98,162, 65, 48, 79,129,149, 84, 25,146, 49,171,120,247,248,140,254,108,205,158, 18,172,162, 96,150, 2,103, 49,191, -201,174, 62,232, 72, 67,100,125,225,121,123, 27, 57,173, 18,106,105, 56,186,125,132,159,215,168, 24,185,217,148,220, 48, 21,242, -236,130, 81, 23, 52, 82,177,152, 87,116, 33, 16, 66, 36,141, 14, 21,161,170, 11,202, 74,163,181,202, 33, 54, 33, 50,116, 14,239, - 60, 49, 4,162,115,140, 46,160, 98, 14, 91, 40,144,152, 36,104,180,166, 50,154, 89, 89, 80,151,134, 29, 35,184,111, 10,246, 18, -180, 38,195, 33,206, 29, 92,249,132, 85,145,164,225,162,247, 20,109, 96,121, 99,206,193, 43, 11,110,190,121,196, 63,246, 43,254, -214,195,187, 20,119,143,120,253,141,251, 44,191,250, 5, 62, 60, 89, 83,110,207,217,188,255, 33,227,157,187,204,166,165,205,249, -232,121,127, 51, 34,198,136,142,145, 89, 89,176,168, 12, 27, 4,239, 14,145, 11, 31, 89,203,196,122,240, 28, 84,138,203, 33,114, -188, 25, 25,125,228, 11, 63,241, 26,223,248,197, 31,230,141,255,228,115, 96, 18,197, 65,133,174, 52,114, 74,193, 74, 27, 71, 58, -235, 9,103, 61,227, 89,203,230,233,150,167,167, 27,190,117,185,230,100,112, 60, 31, 71,130,130, 86, 11,156, 72,244, 10,130, 18, -184,148, 19,249,132, 82, 52,149,101, 32,178, 25, 61, 93,244,172,183, 45,177,219, 32,151, 13, 65,130,223,221, 37,218, 2, 49,145, -214,198,237,150,243,110,203,201,176,229, 73,244,188,221,173, 57, 9, 35, 49, 70, 26,107,241,147,186,216, 25, 69, 23,225, 34, 37, -206, 93,224, 50,228,109,153,214,185,209,223, 49,154,185, 54,220,108, 26,238, 26,197,235,171,154,219,251, 75,158, 8,197, 92, 65, -247,228,148, 95,124,245, 85,238,214, 21,231,179,125,254,228,234, 60, 47, 23, 11, 3,149,134,170, 70,204,106,168, 10,238,172, 22, -252,200,209, 1,183,119,246,112,181,228,249, 58,193,238, 14,234,230, 33,105,190,128, 41,209,140,163, 61, 40, 43, 22,139, 57,251, -214,176, 44, 13, 7,186, 32, 76,155,132, 66, 26, 68,138, 8,165,240,209,241,193,232,179,240,110, 8, 28,247,145,141, 72,180, 90, -241, 39,209,114,182,127,139, 7, 55,110,178,191,123,131,122,182, 75, 40, 26, 70,169, 16, 69,195,207,148,150,219,101, 65,147, 4, -157,243, 44,181,102,219,181,156, 12, 61,207,186,237,148,254,156, 8, 49, 48,184,145,205,232,120, 22, 28,163,213,244, 66, 82, 89, -131, 11,142,194,106, 78,182, 27, 58, 63,114,225, 19,103,253, 21,231,109,230,209,111, 93,135, 26,187,140,144,158, 54,111, 72,147, -167, 93,161,136,211,102, 54,105, 67, 76,137, 81, 66,235, 61, 66, 26,206,156, 35, 73,193,152, 34,181, 41,178,204,204,150, 84, 82, -211, 73,129, 45, 42,146, 27, 9, 85,205,202, 88,182, 62, 81, 23, 37,187, 69, 69, 8,145,253,170,102, 86, 84,188, 54,179,148,218, -178,103, 45,179, 20,152,149, 13,115, 83, 51,151,130,170,168,168, 76,137,181,150,202, 20, 24,171,209,194,100,122,162,146, 89, 56, -175, 20, 74,192, 76, 11,172,212,140,201, 51,164,196, 66, 74,250,148,155,213,130,200,136,199, 8, 73,105, 52,253, 56, 32, 99,164, -115, 35, 11, 33,168, 98,196, 71,199, 46,145,245, 56, 80, 2,115, 1, 46, 4,116, 74,244,192,211,209,113, 66,228, 32, 69,158, 6, -143,136, 9, 29, 28, 62, 9, 84, 12,200, 16, 89,145,248,242,172,230,147,118,100,215, 26,164,146,204, 76,201, 57,129, 27,186, 98, - 67,100, 71, 91,122, 36,134,136,155,116, 59, 33,229,199,244,198, 7,182, 34,159, 23, 31,106, 73,101, 44,251, 70,112,168,178, 5, - 86,147,120,197, 20, 92, 6, 79,173,126, 16, 75,155,214,211, 52, 46,167,123, 72, 9,123, 77, 46,192, 70,102,133,187,152, 10,250, -181,229, 75, 78,124,242,232,178,207, 96, 53,135, 38, 43, 24, 25,167,152, 81,107,243,218,125,188, 70,154, 78,225,240,246, 26,219, -167, 25, 34, 12, 50,162,138,134,173,119, 12, 8,132,208,140,227,196,240, 53, 22,174,218,169,128, 14, 80,104,102, 86, 35, 82,162, - 81,138,243,214,101,229,168, 75, 44,106,201,133,203,118,188,212,141, 16, 61,169, 48,156,141, 9,165, 37,143, 93,226,204, 37,156, -212,156,250, 64, 76, 42,111, 24,194, 52,205,244,253, 75, 23,166,156,238,112, 87,221,196, 18, 30,243,125, 45, 77,247,245, 16, 95, -198,210,138,196,149, 75, 57, 71,103,202,118,175,124,164, 13,121,123, 81, 39,193,243,232,209, 66,231, 84, 43,145,104,125,190,177, -182, 41,113, 21, 35,165, 86, 12, 62,228,149, 23,233,101, 68,235,181, 29, 68, 76, 14,132, 79, 11,124,226, 53, 14,113,218,146, 4, -193, 55,254,250, 79,226, 67, 36,248,108, 79, 83, 19, 36,168, 41, 74,148, 18,136, 24, 81,218,162,181, 34, 9, 69, 41, 21, 70,100, - 64, 66, 27, 61, 93,239,217,217, 45,168, 43, 69,231, 2, 82,230, 12,245,152, 82,238,231,162, 32,133,132,139, 1,231, 67,254,123, -166,181,150,138, 80,138,108,237,155, 43, 69,233,227,139,181,148,179, 6,107, 36,118,217,224, 70,135, 62, 61,103, 30, 35, 23,196, -220, 40,204, 20,213, 66,211, 25,160,150, 72, 45,176, 43,141,147, 2,243,180,227, 96, 79,225,110, 28, 49, 47, 13, 95,190,121,151, - 84,214,168, 24, 24, 90,135, 24, 2,139, 85, 67, 16, 10, 81, 26, 6, 31,208, 62, 78, 10,127,137, 86, 18, 17,114,247, 62,250, 72, -235,242,125, 51,184,140,185,181, 8,102, 66,113, 88,228,169, 99, 71, 27,246,170,146,121, 99,153, 55, 6,157, 34,214,106,170,166, - 98,167,201,202, 97, 73,100,159,158,131,246,146,221,227, 19,194,197, 57,188,255, 62, 23,107,199,108, 53, 39,117,158,149,146, 60, -158,149,140, 71, 13,199, 7,187,220,216,155,241,240, 11, 15,249,238,222, 17,171, 31,249, 28,162,212,184, 4,110,240, 92,180,142, - 95,249, 95,255, 62,223,254,239,126,157,253,111,188,193,113,204,211, 81,135,100, 59,169,104, 43, 33,184, 81,105,164, 20, 92,133, -204, 14, 88, 85,130,177, 29, 56,233, 35,175,172, 74,132, 22,164,148,232,149,228,163,199,107, 62,250,131,199,204,149,160,125,186, -225,248,233, 37, 39,235,150,239,156, 95,241,157,171, 45,199, 93,196, 37, 69,235, 35,114,166,152, 85, 10,109,228, 68,137,142, 88, - 41, 24,149,160, 49, 58, 91,141,165,164, 23,137, 77,136,156, 8,232, 45,108,202,130,171,131, 61, 78, 87, 11,134,217,156,203,186, -228, 98, 28,121,228,122,190, 53,246,124,100, 13, 31,147,184, 20, 21,149,130,243,162, 36, 26, 67,165, 20,131, 72,140, 66,240, 36, - 4,206, 66,228,147, 24,241, 62,177, 14, 14,164,193,136,124,103,221,177, 37,183,181,197,150, 37, 66, 42, 90, 34,179, 89,193,110, - 83,112,146, 4, 15, 54,199,252,135,175, 63,228,187, 23,167,252,222, 56, 66,114,136,113, 34, 48, 54, 37, 95,219,217,225,181,121, -195, 81,179, 32,200,146,203, 36,248,163,164, 9,171,134,175,223,186,195,231,143, 14, 89,206,231, 60, 45, 74, 88,236,228, 38,190, -176,204,165,162,182,154,185,148, 44, 16, 20, 41,161, 68,222, 24,100,146, 64,226,216,143,124,188,245,136,194,194,106, 23,102, 21, -207,237,146, 39,178,225,104,117,196,103,119, 15, 89, 53, 11,172,169,176, 69, 69, 93,228, 59,244, 95, 41,243,109,122,150, 96,112, - 35, 75,169,112, 67, 79,232,122,158,182,231, 28,187, 22,136,180, 67,207,118,236,249,240,124,203, 39,253, 64,231, 60,107, 63,208, - 69, 71, 63,142,212, 34,241,193,243, 99, 46,219, 43,158, 94,156,240,237,231,199, 60,186, 90, 51, 36,199, 89,191,229,241,213, 37, -142, 68,215, 93, 97, 98,192,232,146, 36, 18, 41, 10,146,206,185,222, 81, 43,162, 18,244,193,211,143,158,160, 53,155, 24,104,133, -167,243, 30, 33, 21, 26,137, 81, 38,235,105,116,193, 76, 23,104, 37,193,150, 8, 18, 73,106, 86,117,195, 16,179, 21,214, 90,131, -149,138,157,194,224,131,228,179,117, 69,210, 10, 93, 52, 44,108,153,217,235,198,114, 80,204, 24,165, 36, 10,153,111,224, 82, 33, -141,196,232, 2, 68,194, 24,133,115, 30, 37, 21, 82, 10, 80,145, 74,104,100,130, 49,230,137,187, 36,210,197,144,197,164, 34, 17, -189,195, 72, 56, 29, 71, 68,138,196, 20, 8,126,164, 74, 1,231, 71,118,132,192, 50, 18, 93, 96,166, 61,114, 76,140,222,179, 91, - 90, 54, 93,135, 35,177, 39, 18, 42,230, 51,163,242, 45,218, 7,180, 16,236, 8,137, 75,158,251,214,228,239, 89, 40,214, 4,110, -233,146, 45, 1,153, 36,157, 0, 43, 50, 28, 42,248,136, 54,134,222, 7,222, 27, 61,129,136, 16,146, 87, 74,147,183,129, 49,127, - 93,157, 18,165,144, 28, 20, 37, 41, 38,124, 12,184, 24,255, 45,213,239, 47, 60,231,211,138,249, 26,184, 31,167,137, 92, 76,106, -115,169, 94,218,189,226,132,126,189, 46, 44,133,252, 84,148, 94,156,176,140, 83,254,186,155,252,136,106, 42, 76, 46, 76, 80,155, -172, 6, 38,116,236,175,238, 80,232,154,199, 93, 59,121,179, 37,168, 42,103,188, 67,190,237, 63,217,228,244,154,202,226,122,199, -253,165,229,116,112,204, 4, 8, 31,120,101, 97, 88,247, 14,237, 18, 51, 11,103,151,227,139,168,211,161, 44,120, 60, 42, 80,146, -214,251,169, 72, 93,223,210, 84, 86,237,183,221, 20, 65,219,101, 37,255, 48, 64,169,114, 52,173,239,115,168, 72,159,149,251,249, -136, 18, 94, 42,239,123, 15, 54,241,193,165,228, 11, 59,138,231,219,158,193,104,252,182,229,158,157,115, 76,164, 64, 48, 70,135, - 79,224,199, 72,178, 26, 23, 18, 70,101,143,106,240,158,253, 82, 81, 68,201, 91,151, 25,115,187,238,251, 28,143,187,105,243, 93, - 16, 50,233,101,216,252,249, 45,139,203, 86,194,245,243, 53,213,178, 65,105,201,217,211,211,140, 75, 4, 62, 58,123,142,210,134, -102,194,183,174, 7,199,174,206, 54, 17,143, 98, 8, 16,146,160, 82,138,113, 8, 44,102,150,109, 55, 82, 89,197,162, 22, 47, 50, -217, 67, 8,116, 41,223, 97, 23, 82, 80, 41,201,149, 11,217,169,104, 21, 38, 9,140, 24,169, 10, 3, 11, 65,232, 6,234,168,209, - 34, 81, 11,133,217,157,115,239,106,197, 27,186, 38,205, 45,191,109,182,152,194,176,135,226,131,224, 89,223, 46,233, 93,224, 94, -128,181,130, 78, 9, 86, 11,203, 65, 8, 84, 9,202,197,138,249,182, 99,121,176,143,106, 22, 60, 13, 61,197,241, 25, 39, 66, 32, - 23, 53,213,222,156, 27,119,246, 24,182, 61,227,224,184, 90,183,164,193,160,129, 66,107, 94, 89, 45, 72, 81,242, 52, 10,124,234, -176, 12,212, 81,176, 82, 37, 15, 22, 11,230,117,153, 47, 81,133, 70,206, 11,212,126,141,112,145,174, 29, 57,181,160,241,148, 46, - 71, 34,142,155, 45,233,108,195,205, 51,199,113,215,209, 17,185,241,232, 17, 23, 31, 63, 97,185,127,192, 23,159, 28,243,171,139, - 57,143,126,248,179,236,237, 6,102, 8,206, 90,199,205, 82,179,237, 60, 90, 11,158,117,158, 15, 79,182,252,246,223,250,187,164, -113, 11, 88,126,237,191,252, 59,240,230, 14,219,255,234, 63,229, 55, 69,228,222,221,125,190,182, 99,185, 41, 4,171, 2, 46,199, -196, 70, 9, 22, 90, 82,218,188,133,120,190,241,252,206, 71,151,124,182,201,123,211,143, 46,182,124,240,124,192,104,201,179,231, -103, 52, 9,168, 4,207, 93,228,121,136,180, 1,122,145, 16,120,218,157, 25,183, 10,112, 2, 10, 23, 80, 90,230, 16, 13, 23,112, - 70,241,209, 85,207, 92, 9,172,150,212, 70,179,117,129,103,131, 99,225, 19,214, 7, 80,146,153, 53, 60,171, 13,189, 89,208, 46, - 42,186, 39,167, 60, 31, 19, 85, 33,104, 77, 67, 21, 3, 79,229,140,253, 90,242,110,155,120,146, 34, 53, 18,127,177, 97, 99, 13, -109,136,120,224, 60,105,162,174, 89, 39, 71,140, 5, 59, 74,176,180, 69,118,144,196,128,183, 5,190,149, 68,231, 48, 49,112,171, -105,248,229,167,103,244,127,244, 7,252,189,243, 1,209, 84, 48, 95,146, 70, 16, 58,191,247,247,173,198,104,141, 23,146,111,246, - 61,231, 33,230, 48,214,249, 46, 95,187,123, 23, 33, 5, 71,253,192,219,103, 23,180, 67, 55, 9,131, 35, 46,140,180, 99,228, 44, - 70,118,108,102, 93,204,133, 98, 19, 34, 81, 36,174,124,207, 99, 12,172, 10,246,139,154, 93, 99, 48,170, 98, 71, 9,140, 84, 52, -186,194,106, 67, 81, 53,212, 19, 28, 81, 38,207,129, 20,124,219, 69,238,110,175,184, 37, 11, 36,146,110, 28, 72,131,227,188,221, -240,241,122, 77, 27, 7, 78,183, 1, 82,224,124,240,140,231,107,100,140,200,182, 39,236, 47, 56, 5, 46, 27,203, 91, 49, 98,156, -199,120, 48,253,136,105, 59,204,106,201,219, 82, 83, 55, 5,133, 72, 60, 42, 37,159,193,162, 22,145, 33, 4,172,182, 44,118,110, - 32, 6, 72,186, 96, 28, 28,222, 57,194,164,111,186,220,174,113, 42,159,222,144,154,146, 72, 80, 2, 41, 18, 30,195, 18,137,176, - 6, 53, 58,208,138,133, 15, 60,243, 3, 6,193, 66, 36,156, 51,204, 82, 98, 8,121,176,104, 22, 26,169, 20, 77,240, 36, 99, 48, - 34,159, 29, 27, 83, 77, 48,155,200,210,148,108,125,255, 66, 7,132, 75,104,105,240,113,164, 44, 52,206, 37,164, 76, 8, 15, 27, - 6, 42, 1, 58, 9, 28,137, 62, 58,144,150, 16, 28, 18,168,148,225,188, 27, 88,166,196,113,112,164,113, 64, 43,129, 9,129, 82, - 71, 66, 76, 52, 62,208,165,196, 14, 5,107, 61,178,227, 4,155,171, 11, 10,109,177, 41,111,121,181, 72, 84,228, 36, 55, 77, 22, - 74,175,240,236,136, 18, 81, 86, 28, 36,184,240,158,215,237,156,247, 92,207, 74,151,108, 36,236, 11,193, 59, 67, 98, 17, 61, 66, - 73,234, 4,143,198,192,158,182, 60, 1,132,239, 57,176,138, 62, 56,140,148, 92,245, 91,230, 82, 18, 99, 96,219,245, 8, 41,120, - 67,106, 30,199,241,223, 98, 82,215,250,165,239,156, 9,239, 87, 78,247,114, 59, 17,151,122,151, 39, 65,239, 94, 78,168, 76,114, - 97, 55,249, 64, 69,122,233,255,108, 39, 11, 86,156,214,198,101,145, 85,170, 90,229,253,195, 68,174,194,170, 60,133,207,114,128, -198,195,155, 15,120,124,117, 78,136, 1,188, 67, 74, 75, 66, 65,187,201, 19,115, 55,192, 48, 32,165, 98, 81, 21,216,148, 81,168, -181, 21,236,105, 56,235, 71,102, 74,130, 27,233,187,172,220, 37,133,236, 37,213, 58,223,207, 84,190, 99,167, 52,169,247,205, 36, - 22,136,211,244,173, 85, 62, 19, 88, 13,114,130,204,139, 73, 92, 99,204,116,110,152,176,185,195,116,175,187,158,214,123,143, 19, -137,199,157, 71,151,138,183, 62, 89, 83, 87,138, 15, 47, 90,180,209,104, 41, 8, 42, 11, 82, 70, 37,208, 66,224, 66, 38,185, 21, - 82,225,137,204, 80, 12,209,211, 88, 69, 67, 98, 75,206, 59,199,231,108,230,204,225, 23,147,160, 47,190,180,223,201,233,116, 18, - 4, 71,175, 28,113,112,235,144,118,155, 69, 50,193, 71,182,125,139, 17,154,131,213, 33,123, 7, 75,102, 77, 65,112,137,194,106, - 84,132,166,212,200, 49,112, 57, 6,124, 74,180, 67,192,185, 72, 83,107,148, 20,104, 57,173,223, 17,120,242,135, 53,166,148,131, -247,144, 68, 1,137,188,174,213, 58, 79,235,248,152,161, 62,133,194,214, 6, 45, 53,101,169,249,191, 89,123,179, 88,203,210,243, - 60,239,249,167, 53,238,233, 76,117,106,174,174,174,234,110,246, 64,145, 77,138,148, 40, 91,178,132,152, 6, 18,197, 73, 46, 20, - 7, 65, 4,196,185, 73,128, 32,185, 8, 2,248, 46,176,238,156, 27, 35,200,125,144, 92, 4,112,132, 12,130,108, 40,138,172, 33, -214, 16, 73,164, 73, 90, 36,155,221,173,110,178,187,171,107, 62,243,217,227, 26,254, 41, 23,255, 58, 85, 69,137, 18, 20,197,167, -177,113, 80, 5,116,157,179,246, 94,123,127,255,247,125,239,251,188,178, 54,204,109, 36, 28, 28,227,181, 96,145, 75,124,109,216, -100, 18, 95, 72, 30, 73,207,246, 40,103,119,167,100, 57,206, 24, 95,158,178,181, 61,229,114, 85,115,185,183,188, 81,111, 51, 13, -145, 93, 93, 48,186,177, 13,166, 96,220,246,100,173, 99, 45, 5,179,237,154,171,151,183, 40, 75,147, 0, 99, 77, 75, 92,246,200, -206, 83, 74, 69,169, 36, 69,132,222,167,209,158, 16,138, 76, 24,246, 71, 35, 46,239, 77,153,108,215,148,163,156, 98, 82,144,207, - 10,178,210, 80, 76, 43,138,113, 73, 17, 34,198, 58,100,239, 56, 95,172,217, 57,106, 48, 46,242,193,193, 33,242,124, 69,238, 5, -166, 52, 92, 11,240,242,227, 5,223,113,199,184,137, 96,218, 45,184,255,219,127,128,207,182, 89, 29,172,216, 44, 26,214,235,150, -223,254, 95,126,149,143,254,209,239,113,239,215,191,145, 52, 13, 72, 2, 38,233, 60,142, 27, 62,250,103,127, 72,248,167, 95,167, -236, 63,229,214,157,171,124,121,183,100, 87,107,254,120,229, 56,232, 2,158,200,165, 82,209,161, 56,149,138,199, 66,114,127, 99, -121,180,238, 89, 53, 30,109, 36, 94, 66, 44, 32,138, 72, 75,160, 35,224,100,128,152,196,139,215,239,236,145, 95,153,114,164,115, - 62, 61,119,252,225,183, 62,230,206,254,132,222, 71,158, 90, 79,171, 69, 74,226,206, 4,247,159,204,105, 93, 74, 88,180,189,101, -221, 89, 66,111, 25, 75, 65,166, 4,185,144,244,121,154,250,185,178, 32,232, 12,171, 51, 84,157, 97,235,146,179,141,101,113,190, -100,213,119,228, 85,198,131,243,158, 77, 20,172, 93,135, 15,145,163, 69,135,146,146,181,210, 56,149,225,163,100,119, 54,166,145, -130,105, 94,208, 33, 57,246, 17, 43, 5, 79,150, 45, 71,189,101,172, 20, 71, 82,241,222, 89,139,232,186,228,145,207, 52,140,170, - 4, 95, 57, 93,115,165,144,236, 85, 5, 7,155,134,119, 87,107,172,237, 17, 82,241, 70, 53,226,181,233, 4, 41, 37, 66, 73, 86, -173,229, 64, 12,217, 7, 62, 21, 84, 21,159,239,202,107, 37,105,133,224, 8,136, 66, 50, 42, 74,246,234,154,207, 86, 19,238, 78, -119,208, 67,224,138, 70, 82, 12,194,178, 92,105,156, 15, 8, 33,200,134,157,117,227, 61, 15, 87, 11, 94,145, 1,215,245,220, 8, -145,213, 98,206,124,115,198,251, 71, 79,248, 96,126,206,199, 39, 27,206,155,142,229,233, 28,123,118, 68,180, 29, 97,179, 33,246, - 45, 97,177, 76,143,249,138,112,190,196, 47,214,248,243, 57,174,239,241,222,225, 86,107,220,217, 25,253,241, 9,253, 98,197,241, -162,225, 97, 72, 57, 26, 45,129,237,188,164, 35,164,172,141,224, 17, 70,211,122, 79, 23, 28,115,239,105,133,224,164,107, 88,217, - 30, 97, 20,189, 28, 38,124,153, 65,101, 25,121,102,104,165,160, 42, 43,180,148,172,165,167, 50, 25, 27,239,208, 89,137, 84, 34, - 33, 94,181,166,202, 4,179,172,196,135,128,202,138,164, 90,143,142,186, 26, 35, 98,192, 6,207,118, 85, 99,173, 69, 68, 65,150, -231,244, 46, 29, 44, 83,109, 25, 36, 70, 18, 92,231, 80,120,140,136,180,193,211, 58, 75, 22, 61,189, 16,104,103, 19, 63,159,136, - 12,142,198, 53, 52,182, 39,118,107,108, 84,212,222,146, 73, 71, 17, 2, 51,151, 92, 90,151,132, 96,227, 44,179, 0, 10, 79,244, -129,245,186, 37, 23,129,232,146, 56,249, 10,130, 55,180,227, 21,165,248,146,209, 92,215,134, 27, 69, 70, 21, 34, 91, 38,231,178, -150,156,217,150,151,202, 17,139,104,217, 86,134,143,219,158,155,133,226, 60, 70, 74, 4,143, 86, 61,133, 84,124, 18, 28, 69,140, - 92, 54, 6, 31, 4,187, 90, 38,212,109, 12,105, 13, 32, 82,131,183, 29, 3, 62, 6,148,253,235, 20,117, 53,136,182,226, 11, 68, -223,160,158, 71, 94,118,131, 23,189, 27,186,235,206,191,128,140, 29,138, 77, 28,188, 52,222,167,248,193,139,241,240, 5,125, 77, -229, 41,147, 92, 13,130,187,186, 30, 22, 12, 42, 1, 7, 68,242, 63,126,218,181,216,126,232,204,163, 32,186,254, 57,201,237,240, - 60, 33,103,125,131, 44, 10,148,137,216,206,177,167, 21, 49,120,250, 33,138,180, 68, 17,131,163,233,124, 26,223, 55,131, 29, 76, -233,225, 80, 49, 88,195,244, 16, 29,171,196,112, 24, 25,104,121, 82, 36, 80,142,237,210, 65, 38,134,164, 13, 8,126,128,234, 12, -120, 63, 63, 8, 78, 46,216,235, 74,190, 16,254, 18, 88, 46, 82, 80,203,201,241,138,185,143, 60, 92,118,204,170, 12,231,122,148, - 84, 8, 33, 89,117,150, 74,167,209,247,210, 59, 42, 33, 89, 13,182, 47, 25,160, 11,145,157, 44, 41, 81,173,190, 56, 68,168,244, -179,109, 24,216,240,242, 57,138, 49,166,157,244,124, 60,225,237,215,239,178,217,180, 4,231,240, 49,146, 9,195, 89,179,100, 90, - 86,124,241,205, 91, 52,157,199,185,152,246,223, 50, 37,177, 17, 2,110,128,205,152, 76,226, 58, 71,219,121, 84, 62,184, 23,124, -196, 1,173, 13, 52,222, 33, 7, 38,188, 38, 82, 75, 65,227, 3, 75, 31,169,135,221,144, 18,176, 81, 96, 50,133,206, 52, 54,147, - 8,173,200, 50, 77, 63, 46,121,122,255,152,147,186, 32,142,199,156,103,138,121, 38,209,185,161, 45, 12,182, 46,240,101, 78, 99, - 20,125,136,156,183, 45,139,224,120,208, 52, 44,124,203,229,122, 11,218,134, 88, 87,228,187, 35,124,227,185,228, 35, 93,174,232, - 37,228,117, 78, 89,230,104,163,144, 33, 64,107, 81,214,161,122,143,110, 92, 58,128,173, 45,110, 72,120,141,218,144, 85, 57, 59, -147,146,108,156,161, 42,157,118,178, 90, 18, 43,133, 50, 18,165,210,107,165, 4, 72,165,168, 66, 36, 39, 18, 58,203,172,177,172, -207,206,185,172, 11, 20,145, 85,111,137,202,113, 52,171,120,237, 23,254, 22,111,254,212, 91,188,252,133, 55, 57,222,116, 60,249, -230,215, 56,248,232, 67,222,251, 23,223,166,253,253, 57, 33, 13,228,210,154, 34, 33, 65,136, 67, 60,208,197,247,213,247,142,121, -247,159,124,139, 3,113, 66,244,138,239,127,248,132,211, 63,253,148,187,183, 47, 35, 28,172,165,160,137,176,238,147, 45, 78, 75, -104, 91,203,253,195, 5, 34, 70,158,156,110,168, 8,116, 77,199,166,117, 68, 37,240, 34,114,181,214,252,189, 47,222,224,149,137, -225,105, 27,248, 80,107, 30,223,185,204,111,170,130,223, 89, 5,190,254,233,146, 91, 59, 53, 50,120,172,130,211,165,103,165, 37, - 78, 68,214,173,195,123,143, 36, 98,100,122,109,173, 20,116, 33,160,165,224,112,227, 88,123, 88, 72,201, 34, 51, 44,182,198, 28, - 8,201, 83, 12, 70, 26,158,108, 90,106, 33,217,116, 45, 58,203,217, 52, 3,225, 47, 4, 50, 34,219,165,228,218,172, 38,100, 25, -178, 40,113, 90, 97,165,102,174,224, 97, 19, 8, 66,177, 17,145,163,182,229,149,170,224,104,112,146,252,196, 36,231,118,145,115, - 67,102, 60, 52, 57,162,206,185,191,106,152,202, 2,111, 45, 55, 98,203,184,239,184,148,103,160, 52, 55,243, 28, 73,164,105, 59, -222,221,108, 88,134,128,176, 61,149, 20,104, 15, 27, 41,184,162, 20,103, 66, 17, 85,198,125, 23,168,114,195, 38, 40,138,220, 48, - 42, 38,232,188, 66, 75, 69,192,208,250, 64,102, 12, 2,129,247, 22,109, 36, 74, 39, 87,197,166,105,112,214,113,238, 26,150,221, -154,247,238,191,199, 72, 10, 30,158, 61,229,227,147,199,124,114,124,204,119, 78,206,248,224, 96, 65,152,207,137,237,130,184,216, -164, 60,243, 1,249, 28, 95, 0,177,198, 16,240, 65, 18, 36,120, 41, 9, 3,174,195, 7,247,156, 46,237, 61,174,235,105,219,200, - 19,219, 17, 8,104,145, 88, 25,203,190,193,232,156,181,235, 9, 82,208, 11,193,113,179,162, 23,145,179,222,177,192,211,116,233, -231,134,204, 36,239,184, 41,232,181,162,136, 18,165, 37, 94, 72,140,144,180, 50,129, 90,156,181,136,152,116, 79,224,201,117,142, - 17, 9,239,108,132, 78,201,153, 89, 65,173, 19, 61, 51, 55, 26,163,100, 90,193, 41,205,102,211,162,181, 26, 0,158,105, 84, 77, -244,180,109, 79,244,145,133,237, 81, 62,209, 54,181,119, 56, 33,145,125,135, 14, 1, 17, 3,181, 8,244, 93,159,250, 79,191,193, -218, 64,230, 27,172,181,108, 11,216,142, 9,249, 61,139,130, 16, 2,187, 82,224,189,103, 18,160, 20,129, 76,120, 88, 54,188, 94, - 74,222, 86,146,187, 69,198,142, 52, 92, 49,154,155, 89,197,101,147,244, 60, 19,101,200, 66, 18,240,109,103, 57,103,222, 50,145, -154, 3,219,242,242,168,230,163,174,227, 90,158,241,104,217, 16,148,228, 3,107, 25,133,192, 90, 10, 94, 45, 52, 70, 5, 86, 33, -176,133,160,150,146, 86,192, 76, 72,174,102, 5, 77, 76,248,142, 59,229,232,175, 81,212,165,252, 33,114,239,179,204, 91,173,135, -157,114, 42,248,183, 62,255, 50,243,163,249, 15, 51,224,187, 48, 20,195,129,231, 46,101,242,118,196,161, 8,184, 97,223, 91, 22, - 73, 49, 94, 94,140,224,229, 32,198, 19,168, 60, 79,172,117,161,136,182, 75, 16,123,103, 81, 66, 18, 69, 76,123,236,174, 75,249, -200,171, 21,224,137, 22, 46,103,146,177,150,180, 81, 16,188,227,192,121,118,178,140, 96, 83,190,239,225,106,243, 60,205, 76,136, - 84, 0,171,122,208, 5,196,231, 96,156, 48,116,192, 65, 12, 34, 57,255, 92, 52,199,160,182, 15, 46,173, 36, 20, 41, 11, 93, 12, -215,135,228,153, 41,253,162, 99,183, 3, 90,246, 34, 59, 55,244,176, 89, 66,231,120,108, 35, 91,101,134, 18,130, 34, 10, 70, 42, -237,169, 69,239,201,133,192,185,200, 88, 43,150,195, 13,166,149, 36,120, 40,117,196, 68,193,218, 15,188,247, 56,188, 94, 34,197, -159,166, 53, 73,120, 22, 5,185,190,255,128, 87, 63,247, 38,121,150,209,173, 26,178, 44,231,115,159,125,147, 7, 15, 30, 18, 93, -224,230,173, 27, 44, 22, 29,101,149, 2, 97,178, 76,147,105,201, 38,122,162, 75, 66, 26, 41, 35,174, 75, 59, 91, 31, 82,216, 75, - 80,113, 24,141,201, 20,150, 35, 21,106, 80, 72,119, 33, 97,111, 51, 41,216, 49, 9,113, 42,226, 16,101,172, 36, 85,166, 89,155, - 36, 12, 68, 75,186, 81,206,159,220, 63,230,211,205,130, 42, 6,214,125, 67, 71,160,141,129, 40, 37,107, 17, 89, 74,146,120, 69, - 10,142,133,103,225, 98,194, 84,146, 34, 46,139,178,194, 4, 65,233, 33, 76, 75, 70, 42,199, 40, 73, 27, 3,217,186,199,108, 85, -137,100, 38, 37, 2,208,157,199,204, 91,212,188, 37,156,174,209,157,101, 76,100, 44, 52,133,214,120,173,113, 70, 34, 50,133, 53, - 10,151,168, 52,196,182, 71,103, 10, 97, 20, 81, 74,132, 82, 72, 69, 42,244,101, 70, 81,231, 20, 69,193,254,107, 55,152, 92,219, - 98,182,232,217,139,146,251, 49, 18,191,252, 58,175,189,121, 21, 45, 20,162, 42,153, 92,153,146,141,183, 17, 93,228,225,241, 33, -155,143,151, 4, 28, 1,193,115,170,182,127,246, 16, 67,137, 7,137, 64,242,232, 27, 15,249,250, 63,253, 54,159,252,230,119,121, -252,123,223,227, 91,239,191,207,207,126,245,109, 92,227,152,175, 59,214, 79,151,228, 71, 11,126,229,127,250,101, 14,191,245, 14, -155,119,223, 39,223,157,177, 62, 95, 50, 63,111, 6,203,141,192, 9,193,153,202,169,162,229,245,189, 49, 95, 59, 89,243, 63, 31, - 54,124, 48,132, 13,233, 76,163,198, 57,241,214, 54,247, 39, 37,183,125, 96,177,232,104,242,140,243, 85,199, 92,102,136,214, 99, -178, 68,137,195, 59, 74,163,105,136, 8, 4,199, 93,143, 53,112,224, 20,231,117,205,122, 84,242, 56, 51,220, 31,229, 28,103, 5, -227, 73,206,104, 58,225, 32,192,178,237,176,243,115, 86, 46, 80, 25, 69,239, 58, 10,229,168,132,166, 54,134, 66, 27,162,150,220, -219, 4, 30, 58,135,146, 57,167, 38,103,187,172,216,213,169, 27, 26,153, 12,175, 4,119,243,146,253,178, 64,106,205, 86,145, 51, - 18,201, 42,187, 95,143,201,180,230,149,113,205, 36, 47,217, 31,215,148,218, 80,200, 12, 27,225,254,106,193, 19,107, 89,132,200, -202,123,118,242, 18, 75, 96,173, 32, 70,137,149, 10,175, 52,103, 82,115, 42, 53,175,151, 5,159,203, 51,238,148, 53, 51, 97,112, - 82, 34,148,193,105, 69, 8,145,198,167,166,192,123, 75, 8, 61,193,167, 81,190,239, 58, 86,221,146,229,234,156,147,239,191,203, -103,174, 94,226,143, 62,125,204, 59,143,142,120,239,116,201,123, 7,199, 28,159,157, 67,183, 33, 10, 71,108, 59, 34, 63,204, 91, -127, 33, 82,235,217,232, 58,132,231,143, 11,183,250,197, 93,116, 81,220,189,239, 89,197,192,131,181, 35, 55,130,214, 91,206,109, - 75,144,130,149,183, 68, 36,143, 54,115,172, 16, 60,106,214,172,162, 39, 6,112, 66, 16, 68, 98, 58, 40,147, 17, 68, 64, 75,133, -200, 52,113, 72,124, 68,107, 86, 33, 32,135, 96, 43,149,105,108,235, 24,103, 57,153, 76,204,248,220,100, 56,111, 41,139,156,145, - 49,195, 86, 54, 75,107,172, 16,200,180, 65,105,141, 50,154, 24, 61,182, 79,133, 89,196, 64,183,238, 16, 17,214,253, 6, 25, 61, - 39,157, 69,135,148,230,185, 27,147,144,176, 22, 2, 17, 29,222, 90, 84,112,132, 24, 41,125, 96, 26, 60,165, 20, 76,130,167, 6, - 74,169,152,136, 84,231,106, 18,226,122, 23, 40, 17,204,136,220,201, 50,238,102,154,109,101,216, 42, 71,236,154,154,151, 70, 83, -246,138, 41, 38,194,180, 26,145, 73,137,150,130,113,145, 81, 41, 67,239, 3, 69, 76,147,213,153,202, 56,114, 61, 91,218,176,116, -142,243, 62,242,129,237, 56,141,240, 52, 6,198, 49, 48, 27,228,104,183,170,130, 16, 5, 19,149,177,165, 12, 59,166,162, 9,158, -207, 84, 51,118,140, 70,248,191,142,250,253,153,208,234,197,162, 62,180, 47,106,176,176, 33,152, 63, 57, 75,133,171,117, 47,140, -156,197, 11,123,119, 1,190, 75,194, 20, 25,147,120,142, 0,186, 74, 49,114, 91,227, 84,248, 7,131, 62, 49,133,195,199,182,135, -178,130, 96,169,162, 99, 52,100,165, 79, 99,160,233, 91, 38, 70,209,217, 62, 9,216, 66, 72, 59,245,144,212,141, 74, 42, 66,232, - 17, 81, 50, 35,208,216,164, 82, 60,237, 44,222,250,148,225,173, 92, 74,251, 42,203,103, 96,154,164, 68, 31,186,110, 35,146,138, -127,224,185, 99,195,115, 2, 94, 28, 10,189, 24,162,240,218,102, 32,202, 57,112,195,168,222, 69, 40,205, 51,150,123, 18,171,197, -231,246, 56, 63, 48,166,189,133,188,100, 82, 42,148, 79, 52,182, 82, 41,162,183, 88, 33, 49, 33,177,212, 55,206,179,157,105,172, - 76, 41, 94, 94, 10,102, 81, 80, 69,207,147,139, 72, 82, 23,210, 59,187,247,131,203, 64,254, 57,112, 70,190, 61,227,230,237,155, -116, 93, 67,211,108, 56, 62, 60,167,183, 45,222, 11, 66,200,113,125, 96, 52, 41,201, 11, 77, 46, 37, 82,165, 53,132, 37, 34, 66, - 26, 5,249, 16,159,197,185, 71, 98, 18,217, 9,153, 68,249, 17, 42,117,161,221,139, 76, 85,154,168,184,232,137, 81,146,105,153, -242,198,133, 72, 97, 20, 46, 89,115,188, 73, 40,211, 62, 83, 28, 29,173,152, 68,205,164,168,104,148,164, 42, 38,136,170,100, 60, -154,146,107, 77,102, 12, 70,128, 42, 50, 10,169,240, 90, 64,150, 83,153,156, 75, 89,129,247,158,124, 92, 33, 71, 5,178, 80, 84, -251, 35, 74,169, 48, 33, 82,180,142, 48,201, 16, 90,161, 98,130,238, 25,231,201, 26,139, 89, 89,100,215, 36,245,171,212,140,132, - 98, 90, 24,178, 92,177,214,146, 53, 73, 28, 22, 50,133, 68,144,109, 28,213,253,115,196, 36,195,103, 26,151, 15,200,211,224, 49, -157,199, 28,204, 81, 43, 11,215,167,232, 89, 77,121,125,135,124,107,204,150,211, 92,113,145,122,209,144, 61, 90,146,159,244,248, - 15, 14, 56,179, 61,227, 75, 19,222,250,220, 43,236,255,141,215,248, 65,213,225,254,244,152, 56,252, 39, 0,161,114, 68,108,249, - 7,255,233, 23,248,227,119, 22, 8,223, 13, 61,187, 76,145,184, 72, 4, 26, 30,117,252,237,255,224, 75,108,154,150,205,241,138, - 98, 57, 71,111,230,124,229,141,187,220,249,177, 59,212,183,111,210, 89,135, 11,130,102,216,223,197, 62,105, 47,100,111,249,181, - 63,250, 38,149,174,248, 71,135,158,249,178,195, 91,139,111, 45,221,186,167, 93,117, 8,155, 50,193,139, 42,231,111,142, 4, 71, - 94,112,214,123,150,235, 22,163, 36,163, 82,226,101,196, 74,197, 82,128,244,145,141,117,156,119,142, 69, 11,199, 85,198, 81,102, -120,164, 36, 79,144, 92, 53,138,191, 49,202,184,189, 83, 51,173,115,150, 94,240, 3, 97, 56, 90,174, 97, 53,231,160,153,115, 41, -215, 20, 17,148,201,208, 70, 17, 98, 96, 29, 35,153,144,156,249,200,227,229,156,187,121,150,150, 20,166,224,238,168, 96, 17, 18, -244,100,171, 44,217,173, 10, 74, 83,208, 42, 77,235, 83,225,216, 42, 74,118,137,212, 89,134,150, 26,149,143, 82, 98,154,209, 28, -117, 14,173, 51, 22, 49, 34, 72, 22, 84, 27, 3, 27,161,137, 3, 14,121,172, 52, 39, 66,210,168,130, 45, 37,121, 43,147,108,153, -130, 66, 24,118, 76, 70, 46,147,122,255,160,237, 88,218, 14,223,247,156,247, 13, 27,219,114,214, 52,116,109,203,106,181,228,225, -201, 99,142, 78,142,120,116,240, 20, 58,199,225, 39,143,225,201, 99,226,242,156,216,109, 82, 19, 19, 2, 81,133,225,192, 30, 94, - 40,222,127,182,152,243,194,116,231,135,163, 84, 46, 30, 23, 41,168,238,226, 97, 19,186,249,163,243,142,127,117, 62, 71, 2,173, -183, 28,186, 13, 79,109,203,169,183, 44,188,229,180,111,232,189,163,245,150, 60, 43,113, 3,231,189,146,233, 64, 56, 49,134, 77, -215,165,224, 24, 2, 77,140, 72, 4, 46, 6,164, 46,112,174, 35,203,179,100, 15,149,146, 66, 43,172,143,148, 69,158, 4,134, 17, -170, 44, 27,166,141,138, 92, 25,162,212, 4, 36,173, 13, 8, 23,105,250,134,205,166,165,239, 45, 49,244,201,135,142, 39,122,143, -119,150,169,209,136, 16, 88,251,142, 82, 72, 68,240,248,190, 69,138, 64,231, 58,180, 15, 72,231,200,134, 98, 45, 66,100, 91,164, - 73,107, 37,161,148,146,145,148,204, 98,138,161,222,146,134,155,245,132,153,206,153, 20, 21, 91,227, 41, 35,149,177, 55,217, 99, - 55, 31, 49, 85, 25, 87,183, 46,145,133,136, 70, 50, 45, 42,108, 76,113,211, 82, 72, 78,241,136, 8, 31,119, 27,154, 24, 89, 17, - 88, 71,193,119, 54, 27,130,208, 60,244, 61, 45,130,147, 16, 24, 33,120,171,206,217, 56,203, 75,101, 73, 64,177,109, 10,142,250, -134, 55, 71,187,116,161,227,122,189,195,189,118,245,215, 84,191,251, 33, 17,236, 17, 13,114,221, 0, 0, 32, 0, 73, 68, 65, 84, -226, 54,113, 46, 41,219,141,121, 62,166,190, 40, 38,249, 16, 69,122,225,235,116,225, 5,181,248, 32,132,243,118,160, 3,248, 68, -122, 26, 15,100, 33, 53,208,231, 46,166, 3, 97, 56, 12, 72, 65, 78, 10, 57,176, 93,203,158,214, 28,246,237, 16, 81, 60,116,166, -171, 53,204, 87,208, 89, 38,117,218,255,120,160,145,130,104, 61, 74, 73,186, 62, 36,142,114,136,116,157, 69,170,152,210,221,130, - 29,124,170,102,136,105,189, 32,198,169,139, 25, 86, 42,136, 66, 12,227,250,161, 19,238,251,116,141,189, 75,187,236, 48, 76, 38, - 98, 76,235, 9,157, 63,139, 9,140,109,178,192,141,148,162,247, 33, 9,251,172,135,104,193,201,180, 20, 90, 45, 56, 93, 90, 84, - 93, 32, 69,226,141, 71, 9, 19, 20, 14,143,139,158, 32, 34, 42,200, 36,110, 19,130, 60,192,177,237,113, 90,113, 89,195, 97,231, -159,171,244,197,160,107,136,195, 26,228, 5,104,253,163, 15, 63,226,179, 63,249,227, 9, 9,233, 3,173,239,137, 65,144,235,140, -157,221, 61,242, 34,167, 42, 50,198,101, 78,110, 20, 34,130, 80, 2, 61,252,123, 33, 68,178, 66,167,216, 85, 23,136,131,100,162, -115, 46, 69,125,170,212, 63,154,139,179,161,136,233,252, 18, 35, 35, 45, 40, 5,100, 74, 83,168,228,245,246,131,240, 74, 12,216, - 80,149, 25, 22, 89, 70,191,182,212, 58, 97, 92,215,221, 6, 27, 60,189,107, 19,220,196,123,148,201,185,122,229, 38,211,122,198, -100, 54,227,242,246, 30,179,170,198, 8, 67,173, 13, 35, 33,153,236, 78, 40,140, 70,219,136, 44, 13,126, 0,207,100, 82,224, 51, -153,130,185, 66, 68,217,128,233, 60,210, 38, 84,107, 52, 10,101, 82, 54,187,201, 85,202, 73, 55, 10, 35,192, 32, 41,140, 66,231, - 26,187,233,153, 29,116,240,104, 5,109,143, 47, 21, 20, 26,169,147,175, 93, 54, 1,185,238, 16,147,114, 72,235, 3,129,194, 92, - 25,147,141, 12,246,116, 69, 55,239,105, 30,156,112, 37, 56, 94,201, 13,227, 66, 51,207, 53, 87,246, 39,188,245,153, 59,132,105, - 75,245,214,132,203,111,223, 68,124,110,159, 47,254,199, 63,199, 23,126,226, 10,127,255,239,254, 44, 89,222,240,237,111,126,130, - 28, 60, 6,233,221,147,182,239,146,192,233,201,199,236,190,246, 42, 58,244,200,222,167, 4, 47, 37,209, 90,178, 38, 38,176,144, -119,116, 65,112,190, 88, 34,176,248,213,138,222, 90,156,204,249,181,143, 62,193,127,242,125,194, 39, 31, 19, 30, 63, 34, 60,252, -148,112,178, 32, 60, 58,160,107, 2, 99,239,249, 79,174, 22,124,241,202,148,173,105,206,135, 75, 71,179,108,112, 66,160,165, 71, - 32, 56,247,145, 50,194,201,166, 73, 34,178, 16, 88, 91,193,169, 80,180, 90,178,118,129,214,121,254,118,173,249,185,253,146,215, -102, 25, 61,138,211, 32,120,191,113, 56,173, 57,148, 38, 9,180,150,167, 24,215,147, 69, 64,102, 88, 37, 89,245,176,238,122,116, -111,169,136, 56,219, 49, 82,129,109, 19, 41,178, 12,239, 36,186,200,145,217, 8, 35, 13,101, 85,209,184,200, 89, 20,120,147, 49, - 14,142,203,163,154, 82, 41,164, 54,152, 40, 81, 90, 35,133, 64, 72,195, 19,239,145,210,240, 88, 4,148,144,116, 41, 35, 47, 29, -200,149,166,208,249,128, 39,141,188, 82,100,188, 42, 35,123, 72,138, 44,167,150,130, 17,146, 67,219,241,131,166,229,164,223,112, -220,119,124,212, 44,121,186, 89,114,116, 62,231,241,147, 39, 60,190,255,132,179,123, 15, 89, 31, 29,192,106, 9, 7, 39,131,246, - 40, 29,158,163, 74,107, 71, 84, 24,232,152,241, 47, 12, 74,249,255, 82,224,253, 11,223,159,141,227, 93,143,235, 58,238,109, 60, -223, 94,174,105, 68,228,219,203, 13, 39, 6, 30,186,200,121,148,144,231,228, 91,151,232, 84,202, 81,232,133,194, 5,143, 82,138, -121,223,225,148,196, 59,199,121,219, 64,132, 54, 56,132,179,200,152, 68,164,209, 90, 54, 62, 48, 46,203,244, 60,155, 68,111,204, -148, 76,177,164,190,199,199, 72,136, 2, 33, 37, 82, 36,253,135,183,145,179,118,205,178,235, 89, 7,203,218,182, 52, 33,176,218, -172,232,250,158,211,102,131, 11,158,243,182,195,117, 29, 83, 13,190,239,145,206,146,135,128,237, 58, 42,161, 32,132, 20,144,131, - 64, 17,153, 74, 65,231, 29,219, 66,160,165, 96, 36, 36, 59, 58, 99, 58,154,178, 95,212, 76,243, 17, 85, 81,145,231, 35,234, 98, - 76,105, 74,242,188,102,183,170,153,228, 57,179,186, 70, 56,199,100, 60,166, 48, 57, 10, 65, 41, 82,116,120, 16,137,115,242,196, -245,212,198,176,112,145, 54, 6,126,176,110, 25, 73,201,119,108, 71,140,105,149, 32,130,227,117, 99,232,156,227,237,209,132, 15, -218,150, 61,169,177,193,242,198,100,155, 15, 55, 43, 62, 51,222,229,187,103, 7,252,248,222,149,255, 31,150,182,240,124,124,251, -108, 44,159, 13,194,176, 11,116, 42, 67, 76,222,133, 26, 62, 14,133, 94,136, 84,236,132,120, 62, 32,106,237, 96, 63, 75,169, 73, -148, 58,221,176, 82,253, 48, 74,118, 24,141,251,206, 83,233,228,121, 63,233, 82, 33,151,128,240, 73,248, 64,103, 97,221,128,111, -233, 84,218,223, 33, 20,219, 3, 12, 69,249,200, 88, 72, 22, 33,125,208,117,109, 32, 10,255,124,140,222,117,105, 5,112, 1,212, -201,139,212,133, 63,139, 50, 29,138, 54,131, 98,191,115,207,119,234,132,193,242, 22,158,157,164,211,255, 51,168,250, 93, 76,138, -120, 37,233,219, 33,231,188,237,159,219,226,164,127,190,247,206, 37,139, 54,114,212, 56,164, 12,212, 8, 54,222,145,107,133, 33, -162, 93,160, 23,129, 12,137,141,224,162,195, 40, 69,219, 57,162, 16, 52, 65,208, 55,125,250,157,220,102,152, 46,252,217,193,220, - 96, 24,216,155,113,249,242, 21,144,130,233,100, 11,219,116,140,235, 17,123,151,118,168, 70, 57, 91,147, 2,136, 24,165,159, 49, -131,252,160,103, 80, 67,208, 11, 2,156, 15, 68, 23,177,189, 35,120,200,242,148,128, 55,214, 34, 9,229, 34,100, 82,166,167,139, -148,140,214,133,200,169,117, 4, 17, 49, 33,210,251, 64, 39, 65,169,100,157, 49, 74, 97,234,156,229,167,135, 28, 46,150,172, 68, -164, 87,154, 94, 27,114,157,113,119,251, 18,183,182,246,169, 39,219, 76,102, 51,174, 94,221,229,141,187,215,249,201,183,110,145, - 77,167,212, 91, 83,246, 71, 53,178,117,100,147,146, 50,203,160,115,104,163, 17,179,196,149, 86, 90, 17, 10,153, 44,121, 17,164, -243,136, 65, 71,208, 35,240, 90,130, 78,153,241,218, 40,140,145, 20, 82, 81, 74, 40,163, 72, 0, 27, 31,121,231,196,113,184, 95, -210,198, 21,253,147, 19,186, 71,167,248,117,139, 40, 51, 68,110,144, 34, 32,164, 70,230, 26, 25, 34,162, 75,239, 5, 17, 98,250, -187, 42, 71,204,114,244,245, 49,249,172, 68, 25, 69,172, 37, 49,151, 72, 9, 7,167, 43, 58, 89, 82,141,102,136,106,196,143,239, -141,249,207,189,227, 11, 46,242,155, 31,220,231, 35, 17,120,237, 43,183,217,125,185, 96,116,189,100, 45, 3,156,244, 40,224,171, -255,240,231,249,151,255,195, 59,124,231, 87,190,206,171,127,231,243, 20,206,162, 67, 64,134, 64,101, 45, 7, 77,143,127,250, 41, - 31,254,234,183,216,236,103,216,245,146,157,245, 9,187,243, 83,182,207, 14, 16,177,227,126, 16, 92,157,108,115,125, 52,166, 48, - 25,186,219,240,213,246,140, 59,221,130,141, 50, 60, 93, 52,188, 62,202,185, 57, 46,248, 90, 11,191, 83,228,168, 33, 71,104, 99, - 10,140, 49,196, 40,240,235, 53,210, 57, 92,107, 57,183, 61, 93,159,172,138,197, 98,141, 88,110,232,187,192,219,181,230,213,105, - 65,110, 52, 39,125,228, 55, 14, 27,150, 4, 76,157,145, 85, 37, 93,208,220, 59, 58,228,252,228, 0,225, 26,136, 17, 43, 20, 62, - 6,214,109, 79,227,122, 70, 64,180, 61,133,134,138,180,139,205,140, 36,203,106,234,178,164, 55,134,141,147,136,178,164,172, 70, - 4, 23,152,106,205, 56,215, 84, 58,199, 40,147, 24, 11,121, 18,226,158,186, 64, 39, 53,231,209,115,210,247, 20,164, 3,209,102, -200,189,184,156,101,156, 73,201, 76, 41,150, 81, 48,149,145,215,178, 20,222,179, 21, 61, 75,215,179, 10,142, 7,182,227,215, 79, -207, 56,177, 27,150,139, 57,113,177, 72,141,200,201, 25,177,109, 97,125,142,144, 33,133, 96,245, 3,179, 67,166,136,105,140, 68, -244,225,133, 83,114,130,217, 64,248, 43,125,124,255,168, 34, 31,254,146,226,238,242, 12,167, 75,156, 16, 56,105,120, 98,114,206, - 46, 93,226, 81, 94,115, 54,222,101,119,186,203,108,119, 31, 47, 36, 50,175, 88,106, 73,231, 45,182,239,105,186, 22, 99, 12,193, - 57,154,152,178, 36,186,118,131,183, 22,221,119, 8,151,162,108, 51,239,144, 17, 86, 93, 71,149, 25,182,124,164, 9, 30, 33, 37, - 89,219, 13, 33, 43,142, 82,128,243, 14, 47, 37,116, 9, 39, 61,119, 61,139,232,120,218,119,184, 64, 58, 68,132, 72, 46, 2,219, - 72, 70, 2,218,174,199,250, 84,107,174,229,134,130,136,114,158,145, 78,246, 75,233,147, 48, 80, 18,153, 42,141,140,130,189,114, - 4, 17,246,171, 41,187,229,132,253,233, 30,120,207,184,218, 66,153,156,158,200,118, 61,195, 71,136,202,144,143,106,118, 77,193, -168, 30, 97, 16, 20,121, 73, 32,173, 76,147, 36, 77,162, 17,116,125, 79, 67,164, 18,146,135,182, 67, 16,121,220,116, 76,144,252, -174,179, 67, 51,155,106,233, 76, 74,238,249,192,127,180,179,205,135,253,134,175, 20, 21,167, 10,246,178,130,247,230,167,252,244, -246, 62,239,109,150,252,196,222, 85,126,235,224,225,191, 38,246,251, 51, 16,141, 25,184,237, 67,215, 13, 67,142,164,122,110,233, -202,205,115, 97,220,139, 7,128,126,192,154, 74,157,210,140, 80,169,216, 5, 63, 76, 1,178, 36,170, 67,160,180, 98, 44,147, 7, -247,172,237,168, 68, 26, 3, 27,159,130, 71,112,126, 16,135, 13, 30,242, 24,241, 81,242, 90,145,161, 73, 5,232, 40, 68,116,112, -236,104,201, 88, 72,142, 93,155,198, 87, 23, 42,241, 48,164, 50,169, 60,173, 8,172, 27,210,214, 6, 73,129, 15,233,141,166, 72, - 42,255,174, 31,236,119,109,242,224,251, 54, 21,244, 23,167, 27, 58, 79,227, 35,165,211,225, 70,203,231,192, 26, 49, 8, 1, 47, -212,243,118,216,215, 91, 7, 93, 67,140,146,243, 85,199,198,192, 52,164,147,164, 28,222,137, 54,198, 52, 60,144, 49,217,110,172, - 67,239,237,241,157,165,227, 53,229, 56,246, 49,121,240,237,176, 99,151, 60,103,209,191,240,245,224,253, 31,240, 99, 95,126, 27, -162,160, 91, 55, 52, 93, 75, 12,112,114,188, 32, 56,205,229,253, 41, 50,138,164,110,207, 82,184, 9, 49,237,246,189,136, 88,231, - 81, 33,210,181, 46,105, 1, 69,234,180,145,145,202,104,106,157,186, 25, 31, 35, 27,235,159,229,255,246, 62,157,180, 54,222, 51, -239, 35,185, 74,123,248, 16, 97,233, 28, 77,136,120,163,104,148, 98,215,148,232,233,140,107,245, 4, 47, 12, 74,101,140, 77,201, - 91,147, 45,234, 24, 57, 62, 61,161, 95, 47,144, 62,224, 54,150,178,183, 76, 16, 92,158, 86, 76, 47, 79,241,163,156,172,177,140, -148, 34,100,169,135, 21,153, 70,150, 25,162, 48,132, 33,198, 81, 93,160,252,125, 28,130, 43, 36, 82, 43,116, 72, 7, 12,161, 69, - 50, 63,132,136, 70,144, 41,137,138, 17,233, 61, 15,207, 44,246,220,226, 99, 78,254,210, 22, 71, 33,195, 44, 55,184,239, 31,208, -172, 91,226,162, 69, 54, 29,172, 59,226,162, 33, 62,221,224, 30, 29, 33, 90, 75, 92, 54, 72,169,209,181, 70, 79, 42, 86,179,130, -197, 86,193,114, 82,225, 70, 37, 22,193,193,201,138,213,233, 41, 70, 6, 68, 94,242, 31,206, 74,174,232,140, 42, 42, 38,120,238, -105, 69, 94, 20,140,119, 46, 49,189,122,137, 27,175,220,226,246, 87,238,144,125,249, 37,254,179, 66,243,210,207,222,225,105,181, -224,157,255,254,143,248,147,223,120,151,207,127,229, 22,255,227, 63,249, 29,142,190,249, 1,211,109,197,150, 44,120,245,213,125, -174,120,203, 79, 42,193, 87,203, 49,111, 86, 51,102,249,136,135, 70,179, 46, 39,124,245,165, 43,188,117,117,143,219, 87,118,184, -148,143,248,169,157,171,188, 49,221,230,229,224,248,189,222,242,255, 60, 60, 69,202,130,127,220, 75, 78, 51,197,189,113,201,189, -237, 17, 31,205,106,244,164, 98, 60, 42,208, 42,163, 95,108, 56, 63, 95,128,136, 40, 29,185,225, 54,124, 81, 9,222,232, 87, 92, - 19,158,243, 78,176, 18,146,167, 22,254,217,131, 13, 31,158,174,233,137,200,113,201,206,172,228,242,168,166, 18, 37, 11, 20, 31, -157,159,115,182,217,160, 67, 67,215,183, 40,231, 19,238,183,235,217,207, 37,165, 72,110, 11, 39,101,138, 90, 21,145,133, 11,228, - 82,160,133,164,115, 22,215, 7,140,132,105, 93, 83, 73, 67,149, 41,114,149, 72,123, 81,192,153, 13,116, 49,221,215, 22, 40,149, - 98, 41, 36, 75, 36, 47,231, 25,175, 21, 53, 39, 81, 98, 5, 92,215,138, 93, 37, 57,113,129,195, 16,249,183, 71, 99, 58,151,238, -199, 39, 1,190,190, 90,178, 21, 45,135,135, 39,233,253,127,190, 30,216, 26, 46, 9,111, 59,143,232,134,184,228,139, 28,114,169, -147, 94, 98,208,246,136, 48,172, 38, 73, 90,158, 11,144,231, 95,244,248, 75, 11,187,214,196, 34, 35,150, 37, 33, 31, 19,242,138, - 80,143, 8,245,132,176, 53,195, 95,217,199,223,186,140,187,178,143,187,126, 11, 55,221,198,141,118,233,138, 17, 55,242,146,237, - 73,133,208, 6,235, 3,167,203, 6,103, 91, 68,244, 24,231,232,135, 88,236,190,217,224,125,106,128,100,183, 38,244, 45, 83, 34, -218,182, 20, 49,160, 9, 72,215,147,133, 68,165, 28, 41, 77,215,247,168,220, 16,218,110, 88, 69,166,130,231, 87, 29, 70, 40,230, -237,134,181,237, 57,179, 13,202, 7,100,244, 20, 65,240,165, 50,227,181,170,224, 70, 89, 48, 53,130, 50, 66,215, 56,148,128,137, - 18, 76,149, 98, 44, 53,106,200,166, 24,101, 25,219,121, 77,129,160,154,108, 39, 52,116, 86,176, 83,207, 64, 42,182,234,105,154, -234,148, 19,108,244,228,229,132, 50,171, 88, 71,203,104, 60,101, 84, 86, 76,165,162, 30,143, 17,222,145,149,229, 51,108,118,136, -129, 60,203,211,164,161,239,176,222,179,118,150, 35,223,209, 6,199,161,235,153,119,158,223,107, 27,162,179,105, 10, 3,140,165, -100, 25,225, 31,236, 76,248,229,179, 37,191,184,181,197,159,180, 13, 87,165,226,126,219,240, 51,219,251,252,225,114,206,151,234, - 41,255,114,121,202,191,121,227,206,191,166,148,182, 11, 16,188,139, 41,199, 91,188,128,145, 45,179,231, 9,108, 65, 13,187,105, -249,188,219,247,110,240,153,155,231,184,216,222,131,242, 84, 49,176,233, 3, 85, 85,160,131, 39,148, 37,141,119,196,102,195, 56, -207, 57,219,180,228, 82,176,177,142, 92, 11,172,181,100, 34, 69,126,166,159,153, 65, 88,131,148,236, 23,146, 54, 66,239, 29,185, -130,235, 74,243,212, 5,178, 40,208, 56,240, 58, 21,226, 63,155, 62,183, 57, 79,227,248,233,236,249,117,108, 6,150,123,166,211, -206,126,211, 63,247,226, 67,218,203,255,168, 44, 21,111, 65,141,135,160, 23,255, 67,214, 54,138,148, 18,151,186,127, 9, 34, 7, - 29,210,239, 0, 16, 59, 32,227,248,112,133,218,139, 92,178,130,221,188,160, 42, 13, 83,224,208,123, 64, 82, 2,141, 81,168,195, - 67,126, 66, 73, 22, 62,114,213,120, 30,106,153, 18,220, 46,172,117,127,193,215, 39,247,238,115,247,206, 93,188,116, 24,163, 80, - 66,113, 54,159, 51,221,154,114,112,176,230,234,229, 9, 40,137,136,130,177, 17, 44, 8,184, 76, 17,219, 52,134,180, 49, 32,181, - 72, 1, 36, 34, 29,220,188, 77,138,239,165, 76,250, 66, 41, 32, 87, 41,172, 38,196, 52, 94, 35,132,164,234,143,158,115, 11, 15, -186,158,206, 57,114,160, 48,146,210, 24,150, 34,242,250, 94,205,149, 60, 35,168,136, 50,154,229,201,146,147,179, 99, 26, 21,217, - 22, 5, 63, 51,221,166, 46, 75,182, 46,141,209,163, 28,217, 69,108,105,136, 70,210, 58,199,165,221, 9,106,119, 76, 53,239, 89, - 57,203,121, 8,228, 49, 32,137,104,163, 80,133, 30,244, 21, 32,181, 67, 12,150, 74, 37, 4,194,250,180, 22, 25,226, 99,133, 15, -105,250,137, 74,163,238,232, 9,153,230,223,248,220,140,227, 71,107,138,203, 91,204,246, 74,158, 78, 86, 60, 62,172,177,149, 37, -211,145, 8, 92,162,227,180,105,185,254,210, 62,157,236,249,214, 31,124,135,187, 69, 75, 49,170,200,166, 19,140, 74,153,235, 31, -182, 13, 7, 25,124,235,227,251,100, 85,141, 81,146,163,245,138, 27, 59,151,144, 1,166,221, 49, 71,118,143,203, 82,161, 0, 17, - 2,215,102, 99,108,132,166,245, 44, 59, 75,159, 37,182,194,127,153,149, 76, 17,252,164,146,228, 63,253, 83,252,224,115, 43,234, -227, 67, 54, 31,126,143, 95,124, 99,151,229,106, 13,167,115, 94,223,209,236,230, 37, 86, 73,176,145,220, 36, 91,209,182,140,188, - 33, 34, 97, 58,230,234,222,140, 81,153, 19, 4,236, 8, 69, 17,210, 65,108,164, 4, 63,119,220,240,251,173,227,151, 63,124,140, - 95,156,227,110,222,132,151,247, 97, 84, 32,164,224, 88, 75,222,172, 43,222,190, 50,130, 43, 99, 62,125,103,206,131, 39,247,153, -246,107, 94, 25,101,236,196, 64, 94, 84,220,113, 29, 31,206,159,242,127,124,175,225, 35,149,232,100, 58,147,196,160,216,180, 26, -145,101,108,215, 57, 87, 94,185,206,102,123,130, 59,188,196,236,248, 35,246,215, 11,114,215,242, 56, 43,248,104, 25,153, 24,197, - 90, 20, 68,165,200,138, 60,241,190,157, 37, 68,201, 44, 51,116,222,178,233, 28, 83,173,200,202,140, 3,219,225,188, 64, 27,201, - 90,192, 72, 41, 64, 49, 95,109,208,178, 96, 37, 90, 78,176,236,100, 5, 51, 41, 89, 57,207, 29,109,240,209,113,179,204, 57,160, -229, 82,208,140,149,230,172,111,121,173,204,112, 68,126,165,177, 60,104, 58,246, 11,197,217,186,101,108, 20,244, 61,213,100,196, -230,124,158,166,120,157, 27,178, 28,210,174, 42, 14,152,103, 49,196,184, 70, 13,194, 5,162,145, 63, 84,164, 5, 36, 46,190,115, -127,174,120,191, 88,192,127, 84, 65, 39,207,146,190,167,168, 17, 87,174,240,229,235,151, 41,178, 49, 31,135,192,227,205, 26, 17, - 93,226,238, 3,152, 10, 17, 83,116,109,180,142,168, 3,149,146,136, 34,167,111, 28, 90, 70,150,237,146,245,106, 78,219,183, 76, - 67, 67, 57,217,162,105,150, 88,219,130,144, 8, 2,210,123,116,240,212, 82, 80,111,230, 20, 58,103, 25, 28,151, 90,199, 90,103, -180,202,160, 17, 44,108, 79, 37, 20,174,235, 25, 27,205,122,189,192, 75, 1, 93, 64, 11,201,252,252,156, 85,136,172,250,134,162, -119, 72,239, 16,120,246,137,220, 44, 74, 10, 37, 81, 49,176, 4,156,118, 52,163,140,104, 35, 99, 97, 24,229,154, 45, 93,226,189, -103, 42, 20, 54,146,220, 42,179, 75, 4,239,240,163, 29,172,235,144,229,104, 64,177, 26,148, 78, 77,204,246,100,139,229,102, 73, - 94, 84,132,168,201,164,129, 76, 49,174,199,216,182,101, 50,174, 17, 46,164,120, 89, 36, 89, 38,177, 93,159, 8,155,218, 48, 95, -156,178,244, 61,171,174,225, 9,145,123,155,150,247,205,208, 60,102, 25,248,228,192, 90,153,146,255,250,210, 22,255,237,193, 41, -255,221,141,171,252,227,167,135,252,253,237, 41,247,108,207,141,114,196,255,122,112,192,191,119,233, 18,255,124,121,206,191,123, -233, 26,191,127,248, 20,197,206,221, 95, 34, 31,216,225, 38, 27,196, 96,234, 57,149, 44,252, 21,198, 57, 90,167, 16,147, 11, 75, - 26, 47,140,213, 61,207,169,112, 23,208,149, 11,113,221,179, 64, 4,159, 58, 94,235, 83, 39, 92, 21,100,163,154, 24, 35,151, 71, - 37, 85, 8,200, 92,147,245, 14, 19,192, 32,152,219, 62,177,197, 67, 36, 58,139,119,201,228,227, 90,151, 14, 23, 82, 38, 21, 57, -201, 74,214, 10,197, 37,173, 89, 74,168,133,102,233, 29, 19,173,105,188,163,139,146, 77, 8,233,116,244,103, 89,233,145,244, 4, -247,107,200,202, 84,152,241,233,119,189,232,212,173, 79,187,180, 24, 6,205,192,160, 48, 15, 46, 61,135,179,173,244,221, 13, 7, - 13, 72, 99,125,212, 48, 13, 48,195,140,203, 13,227,254,152,126,143,224, 94, 88,111, 12,138,124, 21, 89, 55, 29,135, 86,241, 82, -161,120,106, 29, 82,169,148, 74, 23, 19,205,205, 13, 7,129,167,173,227,212,246, 44, 93,196,218,144,198,250,222, 15,215,240,163, -191,238,189,247, 33,175,252,216,103, 40,234,146,172,168,184,125,247, 37, 66, 23,147,208, 79, 73,102,211,154, 66, 43, 2,130, 60, - 87, 73,188, 31,160, 15,150,174, 77, 98, 63,231,211,148, 48,248,128,141,129, 73,101,104,123,143,144, 2, 45, 34, 82,165,209,123, -231, 35,185, 86,212, 90,210,184,144,124,236, 33,210,249,192, 73,219, 19, 34, 84,185, 73,147, 1,163,120,184,105,185, 34, 97,247, -251,167,156, 29,156,210,172, 55,188, 90, 21,252,120, 61,229,198,254, 22,179,237, 9,123,121,201, 40, 42,140,117,112,214, 34,231, - 27,138,121, 71,239, 35,125,231,169,124,164,152, 84,132, 92,113, 26, 29,143, 36,204, 53, 24, 45, 17, 90,162,202,156, 40, 85, 90, -209,132,180,139,198, 70, 2, 73, 39,128,124, 30, 81,160,132, 64, 41,133, 48, 73,193, 27,149, 74,196,191,253, 49,163,203, 99,230, - 81, 97, 90,199,189,243, 6,191,182, 72, 37, 41,242,140,160, 12,148, 21,217,229, 93,102,151,198,232,155, 59,236,237,238,241,222, -135,223,231,192, 40,158, 68,248,211,249,156,127,241,209, 39,252,223,191,252, 33,223,253,173,143,121,242,221,115,238,127,235, 41, - 63,248,230, 1,143,191, 51,231,189,175, 61,225,221,211, 35,238, 77, 36,127, 18, 35, 47,111,111, 17,235,146,249,143,221,162, 51, -134,217,155,183, 17,215,118,161,168, 57, 63,239,153, 20,138,151,115,195,142, 0, 35, 4, 65, 74, 44,176,223, 54,188, 28,160, 78, - 87,136, 48,146,219,163, 41, 69,158, 92, 23,214,167, 52,177, 72,160, 19,145, 21, 2,103, 50,182,171,130, 40, 18, 71,193,104,197, - 40,207, 48,133,230, 20,201,147, 40,249,194,213, 25,183, 38, 99,122, 10, 38,235, 6,113,186,100,125,180, 68,228,134,185,139,108, -103,138, 91,165,225,202,164, 96,186, 91,161,119,118, 24,159, 58,110,133,134, 92,105,100,140, 16, 5, 83, 1, 69,220,240,253,195, -167,248,205, 28, 86,235, 20, 61,217,123,106, 36,219, 66, 82,107,193,164,202,248,210,229, 9, 63, 87, 78,121,115,179, 65,207, 15, -120,180, 90,240,125, 31, 49,194, 18,237, 6, 17, 3,189,117,196, 24,113, 94, 80,122,203,117, 26,110,216,158,171,194, 83,216, 13, -125, 51,103, 79,151, 84, 50,114,110, 29,211,188, 2, 34,167,235,142,162,200,152,247,150,117, 8,188, 57,158,240,199, 77,207, 79, -140,106, 76,150,113, 24, 2,159, 41, 11, 58, 27,184,149,101, 84, 69, 77,229,122,174, 22, 21,235,232,169,179,156, 83,103,217,209, -154,153,146,132,216,177,105, 61, 75,235,120,228, 67,154, 84,246, 22, 86, 77,106, 30,130,123,158, 14, 23,211, 71,133,208,105,133, - 39,244,112, 95, 94,136, 36, 7,221,132, 4,100, 8, 63,252,231,103,154,138, 23, 10,191, 76, 66, 89, 97, 52,236, 94, 38, 78,167, -112,247, 54,188,242, 38,255,254,235, 95,228,165, 91, 55, 25,143,119, 57,245,112, 96,138,164,198, 71, 19,116, 70,140,142, 32,100, - 42,122, 74, 16,186,150,118,179,132,213, 57,151,148,199, 45, 78, 56, 61, 63,224,119, 30, 61,162,136, 61,149,150,204,155, 21, 82, - 43, 54,109, 75, 41,192,119, 27,100,215,176, 75,100,199,187,148,150, 40, 21,187,182, 39, 71,176, 45, 5,165,179,232,190, 65,199, -200,194,183,172,251,134, 85,187,193,246,142,195,243, 51, 54, 77,199,217,249, 9,125,211,176,238,214,136,174,167,196, 81,186,158, - 50, 4,222, 30, 21, 84, 74, 81, 75,137, 33, 50, 70,144, 9,207, 30,138, 59,153,228,229, 66,179, 47, 4,183,117,198,231,138, 17, -149,183,188, 85, 76,168,198, 59, 92, 67, 83,142,182, 80, 49, 80, 84, 51,164,209,104,147, 51, 46, 70, 72,149,161,243,156,206, 91, -242,170, 6,165,168,181, 65,228,134, 74, 25, 60, 80,215, 37,222, 38,237, 72,146,140, 37,139, 31, 64,223,245, 4,215,163,162,224, -160,155, 51, 15, 61,143,154, 5, 31,250, 72,211, 54, 4, 33,137, 46, 37, 38, 34,224, 23, 70, 25, 95,223, 88,254,171,253, 75,252, -195,199,143,249,111,174, 92,229, 55,207,230,188, 90,230,252,243,179, 57,255,206,238, 46,191,219,172,248, 74, 61,225,187,109,195, -207,236,239,163, 24,223,249, 37,134,228,234,103, 40, 87, 31, 82,241,177,253, 95,173,176,135, 11, 5,248,144,141,174,228,179,177, -119, 42,218,242,121,161, 18,164,221,180,148,207,147,217,132, 76,105,109, 98,144, 71,215, 37, 91,101,129,145,146,206,167,206, 38, -119, 1,105, 36, 65, 8,106,239,232,108, 79, 31, 34,113, 16,233, 41,231, 9, 46, 32,227,160, 7,158, 47,210, 1,165, 11,168, 42, -137,164,158,120,203,174,212, 52, 70,176,140,130, 22,207, 18, 48, 58,121,149,125, 55,168,216, 95,188,222, 11,218,221,197,186, 32, - 12,192,157, 16,134, 34, 62, 4,212, 68,159, 58, 96, 51,232, 0,156, 75,133,120, 50,133, 73,145,242,162,155, 52,129, 64,103, 3, -144, 39, 41,250, 25,186,236, 52, 22,143,195,212,162, 75, 7,132,100,190, 76,207, 87,140,207,179,157, 61,220, 91,119,188, 58,206, -121,208, 58,218,144,246,236,243, 62, 32,124,100,222, 59,244,176,159, 62,105,147, 24, 48,177,224, 47,226,129,254,226,215,244,149, -183, 94, 99,182,183, 77, 57, 74,251, 69,173, 76,242, 23, 11,157,212,168, 6,252,144,128,100,148,120, 54,146,111,173,195,217, 56, -128, 51, 34, 46, 68,188, 79,162,188,186,214,140,139, 11,223,182, 24, 50, 34, 4, 82, 8,250, 24,217, 88,139,141,145,214,185,103, - 33, 18,142,136, 25,124,169, 79,206, 27, 78, 91, 75, 89, 23,108, 13,177,186,181, 82,148,101, 78,221,123,132, 23,200,117, 79,214, -121,124,215,226,251, 64,167, 33, 40, 73, 62, 42,168,148,196, 52, 14, 19, 4,186,179, 20,227,138, 32, 21, 15, 6, 64,210, 44, 55, -216, 16, 17,117,145,196,107, 34, 9,245,144, 98,200,102, 18, 16, 99, 18,238,137,132,193,149,198, 36,196,170,148,200,152, 70,184, -253,172,128,227,142,145, 48,132, 43, 35,212, 89, 75,253,141, 71,212, 55, 50,194,106, 73,189,238, 9, 27,216,222, 42,216,158, 21, -148, 85,142,237, 29,110,171,224,165,215,111, 48, 63, 92,179,152,207, 57, 56, 60,226,254, 59,103,184, 24,113,235,126,176, 26, 41, - 2,142, 56, 60, 56,237,176, 77,203,222,103,239,210,188,121,155,241,237,109,102, 90,240, 55,103, 35, 94,149,138,167,125, 75, 62, -169,216,185, 49, 99,186, 63, 33,107, 60,223,118,142,243,174,167,115,158,105, 81,240,165,124,130,107, 23, 24, 37, 8, 58,226, 46, - 95, 35,247, 45, 74,192,218,182, 60, 42, 10,158,110,206,233, 92,199,166, 89, 51,239, 90,142,188,227,220, 11, 58, 36,167,173,165, -223,244, 84, 85,198,121,107, 57,207, 52,215,246, 42,182,170,140,105,109, 88, 96, 56, 12,146, 71,239,127, 3,115,126, 68,190, 17, -184,147,134,251, 66,113,117,148,115,187,204,120,121, 39, 71,100,138, 75, 59, 53, 91, 78,145,183, 93,250, 40,146, 2, 47,224, 84, -106,102, 89,205,229,190,165,223, 28, 51,251,228, 29, 86,135,247, 40,124,129,237, 28, 58,128, 80,146,215, 13,236,201,136, 89, 55, - 28, 62,125,200,159,156, 46,248,160,235, 41,130, 77,136, 99,107,105, 90,203,198, 10,246, 84,207,181,216,243,102,132,219, 72,118, -109, 2, 47, 85, 82, 37,102,119, 8, 72, 21, 57, 93,174,153, 55, 61,107,111, 17, 94,178, 83, 87,188, 61, 29, 35,165,226,199,202, -146, 81,149, 49, 69, 32,155, 13,143,150, 75,214,222, 49,210,154, 49,142,135,206,210, 44, 78, 41,148, 97,175, 40,184, 92,213, 68, - 33,120,119,189,230,188,233, 56,179, 61, 31,110,154,180,186,115, 46,233,138,194, 48,241,107,125,170,222,147,113,250,174, 50,132, - 73, 66, 64, 97,116, 18, 87, 14, 17,199, 23,133, 91, 13, 69, 93, 93, 24,145, 46,254, 14, 80, 90, 35,140, 70, 78,119, 16,251,123, -136, 59,183,224,245, 55,225,218, 13,184,250, 18,236,221,228,238,238,117, 62,191,191,197,116, 84, 80, 22,134,211,206,242,201,226, - 20,188, 37, 70, 71,236,122,194,102, 77, 88,159, 17,150, 11,226,227,199,132,213, 25,241,195,143, 56,222, 44,248,238, 71, 31,113, -255,244,128,239,190,127, 15,119, 58,231,112,221,112,180, 88,147, 27,120,112,124, 76, 17,122, 14,142, 78,152,224,216, 18,145,157, -102, 67, 38, 21,133,128,202,246, 76,165, 70, 18, 40, 92, 64,185,158, 16, 28, 85,179,102,215, 89,122,103, 25,183, 13,133,235,152, -250,150,151,155, 21,175, 7,207,155, 50,240,122,215,242,213, 76, 51,113, 45, 55,137,236,234, 68,104,219, 86,154, 26,216,213, 5, -149,115,236,133,200,109,173,184,161, 4,175,168,130,151, 76,206,181,124, 76, 25, 5, 87,202, 45, 84, 86,176, 43, 11,172,150,236, - 25, 3, 85,157,146, 25,235, 26, 83, 22, 88, 4, 58, 87, 24,173,145,131,102,204, 72,129,212, 89,170, 33, 33, 82, 21, 9,243, 26, - 69,250,188,216,180, 61, 82, 43,122,107,217, 52, 45, 17, 79,192,209,249,150,165,237, 88,118,107, 14,188,231, 7,203, 22,111, 45, - 65,184, 36,202, 13, 22,132, 66, 70,248,185,209,152,223, 89,110,248, 47,118,183,249,223, 79,231,252,244,180,228,107,231, 27,254, -222,222, 46,191,124, 50,231,239,110,111,241,141,126,195, 79,143,198,252, 95,243, 51, 20,147,151,127, 9, 61, 40,217, 7, 16, 26, -153, 74,163,104,147,253,165,138,202, 63, 87,216,229,160,198, 20, 50,117,118, 46,166,150, 77,136,231,106,241,190, 29,238,198,193, - 43,205,176, 87, 87, 67,216,184, 76, 79,230,222, 40, 25,234,199, 82,160,140,164, 9,145, 82, 73,198, 42,112,210, 36,144,128,247, - 17, 33, 35,177, 11,207,206, 35,193, 37,186,220,179, 29,126,232,152,152,140, 69, 27,217, 26,167,200,187,131,181, 99,100, 20,157, -144,228,153, 34, 72,129, 68,146, 27, 69,215,118, 63,250,122, 47,196,125, 74,167,195,142,144,207,135, 88,201, 83, 4,114, 56,180, -244,118, 64,222, 14,172,119,100, 2,225,244,205,160,210,203, 6, 40,204,144, 51,159,107, 38, 10, 58,149, 14, 63, 25, 17, 47, 84, -218,129,203,240,156, 0,199,112,224,146, 98,144,175, 40,158, 6,199, 37, 35,217, 81,146, 67,235,217,143,176, 12, 48, 65, 96,173, -103, 17,161,233, 2, 34, 4, 98,102,210,193,227,226,223,252, 11,190,158, 84, 21,159,189,243, 18, 16, 89,175, 54,116,155, 6,231, - 60,101, 93,179,119,105,130, 12,130, 44, 55,212, 70,167, 4,164, 16,201,134, 32, 16, 31, 99,234,134, 92, 68, 32,153,212, 6,103, - 61,253,224,248,203,179,164, 24,143, 34, 21, 65, 49,176,124,146, 35, 39,117,233,193, 71, 58,235,233,250,192,249,198,114,180,234, -152,175,187, 52,234, 30,229,124,239,225, 49, 79,219,142, 85,140,108,156,227,241,102,195,185, 0, 21, 60,217,118, 69,147, 27,178, -189,154,234,198, 14,242,165,109,182, 62,115,153,226,198, 14, 98,167,166,120,105,139, 77,149,161,131,164, 28, 21, 60, 94,183,148, - 70,112,100, 29,171, 16, 17,101, 78, 81,164,113,100, 16, 67,204,164, 2,171,161,147, 18,127, 1,202, 41,116,202, 8,207,146,134, - 68, 9,129, 46, 53,147, 50,103, 60,183,244,203, 13, 92,174,104,103, 21,197,237,109,202, 73,137,253,100,201,225,161, 32, 8, 69, -115,214, 48,177, 29,217, 52,167,239, 28, 75, 23, 40,182, 42,110,189,113,157,197,227, 57,255,234,183,222,199,125,216,224,214, 61, -110, 40,229, 23,126,226,100,100, 75,247,159, 56,111,152,127,237, 62,229,205,138,171,119,175,242,153,222, 51,126,247, 4,117,222, -178,127,222, 49, 89,109,184,150,193,205,121,203,229, 16,248,172, 48,188, 90,140,184, 51,154,242,242,213, 61,202,233,132,221, 98, -151,157, 87, 95,226,234,181,107, 92, 63, 92,146,119,150, 32, 10, 94,255,249, 47, 51, 89, 69,190,181,110,249,188,202,200,219,150, -223, 62, 59,229,228,248,152,135, 15, 62,225,254, 71,223,231,193,135,127,202,175,127,227,187, 92,159,237,144, 21, 25, 81, 39,192, - 74, 84,138,168, 52, 42, 74,158,116,129,167,197,152,240,107,255, 27,246,221,111, 34,154, 99,100, 95, 33,246,118,248,183,174, 20, - 92,159, 22,236, 26,144, 54,208,244,144, 91,139,142, 17,235, 28,157, 86, 72, 36, 91, 50,114,107, 50,226,243,245,132,219, 85,205, -151,138,140, 75,199,159,194,226, 9,247,142, 78, 57,235, 34, 51,235,224,120,206,251,143,239,241,235,159, 60,228,119,143,214,248, - 62,176,136,130,220, 91, 38, 50,162, 20, 92,201, 97, 11,197, 77, 34,159, 81, 25,123, 66, 82,233,156, 66,104, 38,166, 2, 33, 9, -121,198,178,143,172, 17, 92,157,141,184, 52, 25,179,157,101,236,150, 5, 74, 40,174,103, 25,123,185,193, 7,207,121,179,228,201, -124, 78, 29, 61, 27,223,211,245, 61,206,121,206,219, 53,125, 12,196, 24,152, 72, 65, 93,105, 74, 60,149,239, 8,182,227,157,174, - 29,236,178,253,224,178, 25,194,171,242, 28,246,182,224,202, 46, 76, 70, 48,173, 17, 85, 9, 89,134, 48, 5, 66,167,213,131, 80, - 73,247,241,172,144, 59,135, 26, 18,177,245, 80,208,117, 85,160,198, 91,200,235, 87,145,175,220, 69,220,190,131,184,126, 23, 49, -189,130, 24,109, 67, 61, 67,100, 5, 72,137, 81,138, 27, 82, 83,106, 65,179, 90,243,240,232,132, 7,167, 79,137, 39,135,196,131, - 35,226,209, 9, 60, 57, 32, 30,158, 19,159, 30, 19,207, 78,137,199, 39,196,213, 2, 78, 78,136,231,115,154,163,179,212,104,185, - 14,214, 61,221,124,197,227,249,134,211,206,114,127,177, 97,164, 2,211, 16, 40,154,142, 81,174, 49, 49, 48,138, 1, 33,135, 84, -200, 0, 27,215, 99,164,161,114, 29,193, 59, 74,101, 24,117, 13,133, 84,212, 62,240,182, 50,188,102,114,110,168,156, 61, 41,184, - 82,148,236, 11,195, 29,165,185, 45, 52,175,161,216, 87,154,207,232,130,155, 89,205,110,136,220,150, 57,147, 16,184,161,115,182, -132, 34, 71, 50,173,102, 24, 4,117, 62, 3, 34,121, 94, 33, 76,198,184,168, 64,107, 76, 89, 16,164,162, 71, 32,181, 68,152,180, - 34,246, 8,138,204, 96,148, 65, 9,153,112,194, 68,230,182,167,245,158, 24,211, 52,108,221,117,104,173, 89,174, 86,244,193,179, -106,215,232,224, 88,180,107, 62,217,204, 33, 90, 54,209,243,209,217, 25,143,172, 39,244,158, 16,210,106, 37, 70, 73, 84,154, 27, -198,144,101,154,183,138,140,239,181, 45, 63, 89,231,252,105,215,241,246,164,230,183,206,151,252,194,206, 22,255,231,209, 25, 63, -191,189,197,175,157, 44,248,197, 27,151,135,162, 78,120,238,109,144,131,141, 44, 27, 10,186, 16, 9, 90,242, 87, 17, 85, 6,159, -246,204,113, 40, 28, 23,124,120, 6, 49, 71,176, 63, 44,144,123, 81,129,221,167,195,132,168,198,212,211,138,141,115,236,141, 42, -188, 79,128,130,105,150,130, 68,142,150,107,114, 96,221, 56, 92,151,196, 86,105,172, 45,137, 93,155,130, 96,252, 0, 89, 89,183, - 32, 3, 93, 7,251,147,156, 32, 5,199, 93,228,165, 73, 70, 47, 83,146, 88,144,130,177, 16,108,124,100,221,165, 40,209, 31, 25, - 87,122, 49,141,232,125,154, 60,200,144,174, 71, 12, 45,126,116,233,201,179,131,143,223,133,231, 93,126,240, 73,137,127,209,113, -203,129, 31,175, 21,228,154,237, 12, 22, 46,178,149, 9,234, 76,178,236, 6,225, 92, 74, 32, 72, 1, 57,241,197, 3,196,176,202, - 80, 17,239, 60,109, 4, 17, 36, 70, 68, 14, 99, 68,133,192,177,183,228, 90,114,218,245,180, 33, 32,163, 32, 51, 17,223,251,212, -173,255,168,107,188, 96, 4, 61,120,204, 91, 95,248, 28,163,233, 24,188, 71,162,121,114,248,104,208, 58,100,108,207,106,182, 70, -121, 26, 30, 12,231, 18,165, 5,189,141,207, 94,234,222, 5,214,182, 99,213, 88,164, 6,219, 6,156,135, 34,229,148, 38,170,152, - 72,236,240,214,122, 70, 42, 57,169,227,112,141,109,111, 17,192,122,227,112, 3,113,204,122,207,238, 86,197,162,241,204,231, 75, - 30,247, 61,243, 81, 73,190, 55,193,111, 23, 92,185,182,141, 40, 13,187, 47, 95,162,188,190, 13, 59, 37,155,182,231,147,147, 57, -199, 71,115, 30,156, 47,121,178, 89,115, 30, 2,203, 0,123,179, 10,165,224, 97,223,113,214,122, 62, 58,183,156,116,112,115,167, - 76,113,178, 98, 48, 52, 8,153,222,220, 82,208,137, 20, 3, 28, 11,147,166, 44,133, 70,101, 6,145, 25,188,148,100, 59, 5, 38, - 87,104,231, 40, 15, 86,152,101,159, 14, 0,153, 34,191, 54,161, 13,208,156,247,216,190,225,254,123, 31,114,115,225,169,175,111, - 35, 8,220, 91,121, 86, 86,113,235,141, 91,180,249,152, 7,239,253,224, 89,151,158, 30,138, 4,122, 77, 15, 8, 8, 52,130, 53, -199, 95,251,148,211,218,241,234, 43, 55, 48,227,196, 65, 8,181, 98,147, 43,186,220,160, 34,140, 60, 84, 66,160,103, 53, 98,127, - 66, 48, 25,178,208,112,109, 10, 70,164,108,237,195, 5, 90,101, 68,149,163,119,119,248,212, 20, 60,169, 39,252,157,207,191,204, -246, 75, 47,243, 73, 52,220, 47,115,186,173, 45,150,213, 22,171,106,196,141, 75, 99,222, 63,123,202,175,127,247, 29,126,245,227, -202,128, 32,160, 0, 0, 32, 0, 73, 68, 65, 84, 7,124,245,165, 59, 84, 69,198,163,222,243,237,133,227,221,206,211,245, 14,166, - 21,188,243, 77,196,227, 71, 8,191,225,120,114,139,217,108,196,213, 12,214,125,224,253,121,207,102,213, 50, 81,130,176,106, 88, -180,107,122,157,225, 98,164,170, 43,114,173,153, 25,195,165,178,102, 87, 41, 94, 26,111, 33,122, 75,190, 62,166, 57,123,196,239, - 61,120,196, 31, 60,121,200,111,124,250,136,251, 77, 64,138, 36,128,148, 67, 66,217, 76, 5,110, 41,201, 37, 4, 87,116,198,171, - 89,197, 94, 62,162, 30,111,145,229, 5, 85, 94, 33,141,102, 82,214,156, 5,207, 90, 75, 38, 69,141,204, 52, 99, 83,160, 77, 10, - 28,217,205,147,207,124,229, 60, 62, 4, 86, 49,249,237,181,210, 16,225, 90,150, 83,232,140, 76, 8, 58,151,160, 39, 99, 41,216, - 82,234,255,229,236,205, 98, 52, 77,207,243,188,235, 93,190,237, 95,107,239,174,238,233,233,238, 89,201,225,112, 68,138,164, 40, - 75, 98,168,213,202,130,196, 65,156, 88,200,102, 69,112, 16, 64, 8, 16,228, 44, 1,124, 66,192,201,137,207, 28, 32, 1,146,200, -128, 3, 40,113, 2, 91, 32, 98, 71,118, 44, 75,150, 21,209,220, 68,114, 72,206, 62,189, 76,239,181, 87,253,219,183,190, 91, 14, -222,175,186,123,134,155,236, 2,126, 84,117,119,161,250,223,234,123,222,231,121,238,251,186,217, 81, 10,213,180, 12,132,229,237, -186,141,109,141, 76, 98, 78,195,112, 13,198, 83,216, 88,139, 81,174,147,205,232, 4, 26, 78,249, 11,107, 57, 47,108,140, 25, 76, - 51,142,165, 64,166, 89,188,169, 4, 53, 29,163, 54,182, 25,188,252, 60,159,120,249,101, 94,125,245,167,152, 95,189, 76,184,254, - 34,234,202, 85,244,245,231, 81, 59, 87, 80,147, 29,228,120, 3,161, 52, 34, 73, 16, 82, 61,177,231, 54, 53,101, 83,243,156,175, -169,231,199, 28, 31,239,241, 79,223,122, 19,110,125, 0,123,199, 80,206, 96, 81, 18,108, 67,112, 29,161,173,163, 96,237,169, 6, - 40, 60, 93, 7, 92,191,146,116, 29,194,116, 96, 90,124, 80, 44, 2,188, 58,204,184,156,167,100,125,150, 70,166, 83, 50,169,112, -222,146,244,209,210,214,199,119,122,174, 51,164,109,201,210,140,145, 74,184,144,102, 76,133,100, 59,201, 24, 34,152,232,148,137, -212,228, 74, 49,206,198,228, 18,182,134, 27,108,138,148, 66, 37, 12, 68,194, 16, 65,138,100,154,230, 72, 23, 24,164, 5, 69, 82, -144,168,148, 44,159,162,116,130,146,241, 57,209,249, 16,153, 42, 66,154,129,140,155,215,144, 36, 24,169, 8, 64,235,124, 44,226, -198, 68,144, 40, 2,235, 61,199,229, 10,227, 5,149, 49,164, 50,238,207,165, 15,212,101, 69,227, 45,117,221, 34,130,231,184, 62, -101, 97, 13,173,173,217,107, 74, 58,215, 49,146,146,155,203,146,198, 58,188,148,132,198, 16,180,130,208,114,162, 19,158,215, 9, - 7,174,229, 83,217,136,111, 85, 13,175,165, 25,239, 52, 13,159,155, 12,249,191,143,206,248, 43, 23,182,248,221,131, 99,254,234, -238, 54,191,123,103, 15,197,228,218,151, 30,239,181,207,241,175,169,234, 45, 20, 42,182, 87,169,254,137, 35,219, 15, 41, 54,206, -119,235,198,199, 23, 86,208,123,175,195, 19,127,251, 99, 59, 91,255,103, 5, 66,231, 80, 20,108,108,174,177, 83,196, 12,221, 52, - 31,176, 62, 24, 49, 25,229, 56,161, 9, 4, 58,227,233,172,137,204,119,223,171,200,203,182,247, 95,244,227,240,178,142,130,181, -206,130,212,148, 4,106,175,185, 58,148,212, 8,106, 4,195,158, 77,126,210, 5, 20,208, 56, 27,173,112,222,253, 24,240, 78,191, - 74,120,140,120,237,119, 94,162,159, 60, 72, 17,213,239,189,248,235,241, 27,252,233,142,191, 63,241, 33, 99, 10, 93, 93, 59,158, - 29, 74, 22,109, 96,213,122, 66,214, 7,192,208,131,105, 68, 63, 50, 87,231, 85, 38, 60, 41,242, 33,208,121,143,149,208,244,193, - 25,181,131,137,214,204,218, 14,153, 42,180, 11, 92, 72, 36, 75,239,113, 56, 48,242, 7,215, 12, 31,149, 73,108,174,241,210,199, - 95, 68, 41, 77, 49, 40, 80, 34, 33,205,115,108,227,144, 73,202,250, 90,193, 36, 79,250,194, 30, 98, 10, 27,158,166,117, 88,225, -105, 26, 67,211, 57,108, 99, 35, 87, 31,143,237, 28,203, 30,100,146, 75,193, 86, 30,139,143,146,145, 41, 46,132, 96, 51,141, 8, -200, 32, 4, 77,107,209, 90,145, 17, 69, 88,153, 80,172, 15, 50,172, 11,236,205, 74, 18,165, 9,233,144, 98,107,202,231,174, 95, -228,217, 11,235,220,153, 87,188, 89,214,140, 70,209,235, 51,239, 12, 75, 99, 48, 62, 80, 19, 56,177,129, 54, 85,124, 80,182,220, - 42, 43, 92, 34,216, 26, 23, 84,222, 83,249,192,229,245, 1,163, 60,146,175,188,232, 81,172, 33, 62, 93,149,241,156,185,192, 92, - 72,150, 82,210,106, 77,208, 10,159,164,184, 68, 81, 37,146, 71,139, 26,115,255,132, 97,145, 66,221, 33,239, 45, 73, 79, 13, 90, - 56, 76,170, 73,183, 11,144,158,211,155, 7,172,150, 71,220,124,116,151,231,221,136,201,230, 4,175, 60,195,105, 78,174, 20,207, -188,112,145,171,159,125, 14,207, 17, 15,222,217,195,145,227, 46,104,124,161,120,249,175,253, 69,126,227, 55,126,142,223,250,207, -126,137, 63,186,188,206,103,127,237,243, 60,248,211,155,156,125,235,251,252,225,226,148, 7,211,109,190,126,188, 0,223,241,135, -183, 30,241,198,195, 99,190,242,214, 13,222,153,207, 56,116, 49, 64, 35,117, 34, 34, 59,235,142,174,170,152, 61, 56,230,225,141, - 91,220, 63,188,203,172, 90, 48,115, 29,135,141,164, 29, 13,241,121,194,160,241, 36,235, 5,183, 27,207, 89,219, 69,142,148, 10, -180,217,132, 79,125,236, 5, 54,167, 59,188,111, 2,255,117, 6,227,195, 35,190, 38, 70,220, 91, 5, 94,239, 28,167,214, 16,234, - 25,225,224, 30,226,213,207,194,231,126,137,191,246,197,207,243,189,189, 25,223, 45,225, 52,207,113,149,229,230, 73,203,124,213, -178,142, 97, 77, 39,176, 40,185,107, 91, 6,217,128, 86,194, 40, 77,153,166, 26, 41, 96,152, 15,113, 82,145,228, 3,200,199, 12, -164, 96, 61,180, 28,183, 21,207,109, 79,120,105,119,157,207, 62,187,195,206,214, 58,175, 76, 7,204,140,101, 77, 9,174,167, 25, - 47, 36, 57,207, 38, 5, 23,139, 33,195,225, 4,157,230,120, 47, 16, 66,160,243, 28,129,128,222,150, 54, 24,164, 92, 28, 79, 25, -228,154,113,150, 50, 74, 53, 3, 45,153, 68, 21, 40, 37,240,168,118, 40,165, 49, 42, 33, 79,115, 6, 89,138, 78, 52,235,195,132, - 4,197,133, 60,229,229, 52,101, 67, 10, 84,103,168,131,197,250, 64,237, 3, 39, 58,139,157,121, 49,238, 25, 29, 27,144, 15, 96, -184, 14,131, 53, 80, 5,159, 31,141,121, 46, 79,153,166, 5,163, 44,225,134, 84,145,121,144, 36,168, 65,138,202, 51,210,205,117, -254,141, 11, 23,248,249,231, 94,230,194,133, 93,174, 76, 47,115, 43,159,146, 76,182,208, 58, 67, 43,133, 84, 10,233, 37, 82, 4, - 68, 83, 34,140,129,217, 30,156, 60, 64, 28,220,133,131, 7,188,243,254,123,188,113,235, 22,239,222,190, 11,135,143, 96,177,136, -141,137,233, 89, 36, 61, 49,244,252, 26, 25,254, 28,189,158,240, 62,174,173,178,140,124,115,194,120,156, 83, 46, 99,147,179, 61, - 28, 18,100, 92,153,106,161, 48,222, 19,165,110,113,216, 11, 1,167, 18, 50, 33, 41, 84,194, 24,197, 84,105, 82,149,144, 11, 73, - 34, 69,204,136, 72, 11,180,135, 60, 31,160,101,130, 78, 50,178,116,138, 82,146,172,216, 70, 39, 89, 4, 67,233,140, 68,231,232, - 36, 69, 39, 3,116, 62, 0,227, 80,121, 14, 89,134,212,154,144, 36, 40, 33,240, 34,174,126, 91, 4,171,224, 34,237,219, 71,158, - 99, 23, 34,153,239,164, 92,209, 4,208, 40, 78,218, 37, 45,209,198,108,186,142, 16,160,108, 42,172,181,212,166,229,164,158,145, - 72,205,202, 86, 28,155, 18, 37, 28,169,212,156,153,134,111,159,214,184,198,197,130,158,165, 96, 12, 97, 48,192,181, 49, 18,252, - 51,131, 17,127,127, 85,241,159,110,173,243, 59,167,167,252, 59,147, 53,190,124,114,198,191,191,190,198,223, 59,216,231,183,175, - 94,225,111,223,127,200,111, 63,127, 13,193,245, 95, 13,116, 13,232,252,113,199, 27,187,192, 52, 22,119,149,246, 34, 48, 34, 33, -237,233, 24,207, 31, 39,156,179,150, 39,218,250, 62, 4, 70,165,113, 44,253,244, 1, 32,190, 83,162,162,114,178, 1, 91,107,252, -236,218, 56,146,178,242,130,245,241, 6,153, 20, 81, 10,154, 72,230,203, 51,142, 23, 53,111,220,189, 19, 1,250,174, 15,135,233, -120,146,140, 38,125,196,196,218,250,137, 74, 61,201,216,152,228, 52,109,111, 21,200, 5,117, 31, 46,103,122,129, 86,181,172,227, -232,190,106,126,252,227, 27,228,209,190,199,135,207, 37,143,191, 62,247,129,123, 27,159, 7,251,145,174, 56, 27,197, 16, 28,157, -146, 41,137, 77, 19, 92, 99,144,153,194, 11, 17,119,223,222,163, 18, 21,179,225, 77, 27,253, 51,210, 63, 9,199, 57,159, 80, 60, - 29,178, 35, 50,178, 73, 70, 46, 20, 99,160, 72, 4, 11, 19,208,192, 18,207, 98,213, 33,117,136,194, 55,249,147, 31,231,127,245, - 55,254, 58, 91,187,235,172,230, 21,213,210, 96,203, 22, 65,194,213,107,187, 92,187,184,206,206, 70, 30,173,248, 46,208, 57, 71, -217, 57,102,179,134,206, 89, 14, 14,151, 52, 62, 16,188,167,173, 76, 68, 67,138,128,206, 36,215,118,198,108,140,115, 46,141, 19, -106,235, 9, 61, 89,202, 7, 72,130,167,181, 14, 27, 60,243,170,195, 4,200,165, 96,185,108,162, 74,117, 99,128,107, 13,124,103, -143,159,255,133,143,115, 79,122, 30,182,142,129, 55,152,163, 5, 15,171,150,195,174, 35, 47, 82, 62,249,252, 22,137,140, 32,140, -101,101,185,119,188,194, 54, 6, 43,161,154, 55,164,153, 34, 75, 83,190,240, 83,207, 32,147, 24, 42, 50,202, 82,210, 52, 33, 32, - 72,100,244,133,203,214,226,107,195, 73,217,177,183, 50,172,156,199, 17,131, 94, 38, 90,177,145,197, 0, 27, 41, 4,239,175,106, -230,239,157,145,221,127,196,171,121,202, 39, 46,172, 83, 92, 25,146,140, 51,194,131, 37, 85,145, 97,159, 29, 51,219,159,179,247, -250, 45,234,197,156, 66, 74, 62,243,234, 39,209,215, 54, 73, 47, 76, 57,182,142, 71,166,227,254, 89, 75, 82,151,236, 90,195,239, -126,253, 3, 94,122,113,135,195, 58,230,149,255,235, 87, 39, 12,115, 77, 3,252, 63, 55,207,120,176,106, 9, 85, 69,168, 43,218, -179, 35,194,235,239,240,220,231, 94, 98,224, 44, 95,251, 95,190, 79, 69,135, 66, 60,161,196, 95, 29,242,243,159,221, 33,155,142, - 96,186,206,188,172,217,120,230, 25,190,246,213,175,114,252,250,119,162,237,121, 48,226,139,175,188,198,197,151, 63,206,120,109, -139,170,156,113,227,224, 17,167,203, 51,106,229,185,127, 88, 51,188,184,205,231, 95,249, 36,172,111, 51, 48, 53,191,109,106,178, -214,241,245,197,156,255,166,216, 37, 76,135,228,120, 6, 18,190,119,120,138, 56, 61,224,123,127,245, 87,216,185,182,193,223,250, -211, 59,252, 79,239, 30,146,140,134,108,100, 9, 63, 55, 25, 32, 23, 21,175, 77, 37, 63,163, 19,210, 89,201,236,224,144,253, 44, -165, 73, 19,158, 25,228, 4,231, 16, 66, 98,165,160,171, 26,230,120,222,173, 91, 14,202, 21,123,173,225,164,109, 89, 27, 12,249, -194,230, 26, 71,213,130,177, 82, 72,107, 57, 62, 59,162,109, 74,174, 16,248,124, 62, 38, 79,114, 10,157, 50,154,110,129, 76,177, -193, 83,219,134, 90, 72,218, 52,225, 56, 4,190,221, 85,140,135, 3,108,154,179, 51, 46,240, 62, 48, 12,113,197, 52,206, 18,142, -202,150,183,155,134,195,210,176, 32,112,214,182,164,210,179, 22, 36,185, 2,235, 61,163, 4,158,243,158,103, 85,202, 56, 85,204, -234,138,239,174, 74,246,186,138, 47,175, 42, 58,231, 8, 73, 66, 72,114,130, 46,122, 32,151, 36,168,148,207,227,121,105, 90,240, -188,150,156, 86, 37,243,106,201,172, 58,101,191,238,248,238,170, 66,121,251,120,212,254,249,201, 58,159, 26,141,120,254,210,117, -198,131, 2,147,104,222, 61, 61,227,110,217,114,218, 25, 22, 77,205,161,115,184,230, 12,187, 60,195,204, 43,236,209, 25,246,240, - 33,118,178,137,179,101,236,137, 58, 27,107,182,181, 31, 86,200,255, 57,125,239, 63,170,207, 3, 16,151, 47,178,117,237, 18,215, -243,156, 11,243, 5,207,121, 79,158,167,172,165, 25,235, 58, 97,172, 19, 84,112,196,129,159,196, 57,131, 82, 17, 39,158, 73,205, - 80,104,118,101,194, 68, 39,100, 34, 68,236,180,233, 72,148, 6,227,208,249, 0,165,242, 8,109,209, 26,130, 66,166, 89,252,218, -152,199, 90, 29,172, 69,140,167,224,226, 66, 75,168, 72, 33, 68, 39, 88, 66,236,192,149,192, 33, 56, 1, 78,148,231,216, 65,173, - 35, 29,175,108, 12, 3, 33,104,172, 35,193, 19,172,163,234, 90, 12, 14,108, 84,229,111, 10,193,220, 52, 76,116, 70,103, 91, 62, - 88,158,176,165,115, 90,223, 48,146,158,214, 91, 2,129,131,106,201,239, 31,158,113,235,160,198,121,135,207, 51, 66,112,132,233, -152,224, 28,122, 99,141,207, 78,214,112, 66,241, 31, 93,121,142,255,126,111,143,191,190,187,203,223, 61, 57,226, 63,220,220,230, - 43,139, 5,127,121,235, 34,255,231,193, 62,255,197,149,203,252,239, 15, 30,245,101, 87,141, 98, 65, 20, 61, 14, 53,205, 97, 52, -130, 76,245,216,215, 65, 31, 88,210, 23, 21,107,127,252, 43,124,254,239,143,191,173,151,108, 42, 27,139,179,232,231,182,231, 5, -253,156,239, 62,204,120, 81,199,116,168,221,193, 24,161,115,214, 7, 99, 74,211,161,146,140, 86,104,182, 39, 41,139,230, 17,151, -119,119,120,120,231, 94,124, 51,153, 94,124,103, 1,209,244,224, 23,243,228,190, 8, 29,207, 4, 1,230,214, 19,180, 36,145,146, - 85,229, 24,165, 26,219, 89, 42, 47,158, 0,115,126,210,129, 5, 98, 55, 46, 68, 60, 21,132,167,222,185, 45, 17,135,123,190, 82, - 80,242,169,231,225,220,218,214, 64, 40, 64,200, 72, 92,243,113,204, 51, 32,198,204,154, 92, 65, 3,173,177, 40,149,226,154,158, -200,236,207, 45,105, 93,188, 31, 90,127,100,138, 96, 80, 78,147,104,193,161,243,172, 7,201, 64,192,178,127, 9,178, 92,210,214, -238,201,110,254,252,240,245, 35, 62,222,248,254,247,249,165,139, 95, 96,178, 54,192,217,146,249,209, 49,222,194,157,219, 2,235, - 2,163, 98,135, 52, 81, 72, 9, 34, 8,242, 62,196, 36, 24, 71, 62,201,209, 61, 53, 47,209,178,247,211,199,149,201,225, 89,141, -181, 17,212,179, 51,201, 88,116, 14,173,100,188, 96, 43,193, 64,107,132, 15, 36, 18, 58,235,232, 44,140, 70, 25, 4,207,122,150, -224,179,156,147,181,146,255,235,107,239,242,173, 7, 55, 49, 4,142,218,154,129,214,108, 14, 71,228, 50, 67,231, 41,139,163, 37, -195,201, 24, 33, 37,131, 81,130, 22,146, 70, 72, 78, 15, 78,104, 22,139,232, 58, 84, 18,153, 42,190,240,201, 43,209, 77,145, 9, -164,148, 88, 31,122, 65, 28, 88, 37,105, 83, 73, 85, 75,200, 21,174,141,235, 5,235, 5,173,115, 44,141,162, 72, 97,146, 43,252, -250, 6,249,238, 26, 73,119,133, 27,123, 43,110,188,113,200,231, 15, 13,215,118,167, 20,187,129,201,237, 57, 62,129,209, 48, 99, -247,167, 95,196, 55, 29, 77, 8,148,193, 50,108, 91,244,131, 19,100,158, 98, 69, 28, 63, 94,200, 53,137,151,252,230, 23, 95,228, -209,202, 32, 71,146, 89,166, 88,174,103, 12,148, 98,101, 45,131, 75, 19, 46, 47, 90,174,135,130, 45,189,141,224, 10, 27,191,246, - 51,188, 51, 43,105,170,138,255,224,111,190,200,124, 85,178, 44, 27,156,235, 96, 80,112,244, 15,255, 5,237,149, 43, 28,252,179, -215, 17, 87, 78, 16,163,130,157,151,174,115,248,250,119,158,160, 66,171, 21,255,228, 91, 95,197,125,235,171,216,203, 87,113,179, - 85,164,130,209,224,187, 94,211,245,240, 1, 55,206,142,248,212,171, 63,207,229,221, 11,180,235,107, 12,165,224, 89,224,139,123, -111,115,147,231,201, 70, 35,180, 13,184,151,174, 33,222,168,249,239,254,217,187,252,229, 87,118,249, 59,239, 30, 96,219, 14,225, - 44, 51,165,249,167, 39, 51, 46,102, 57,133, 83,124,236, 74,206, 51,151,214,185,168, 53,223,126,247, 77,182, 54,118,152,121,207, -133,209,128, 82,198, 14, 89, 21, 25,157,181,116,198,210,228, 19,156,168, 89, 75, 11,174,140, 52,167, 50,112, 97, 48, 65, 3,243, -176, 98,115,125,155,180, 42,184,140,194,119, 53,169,119,100,162,183,216,246, 57,243,193, 25, 72, 83, 66,103, 56, 9, 29,161,103, -115,111, 56,143,233, 44,178, 79, 62, 20, 46,176,240, 29, 77,127,206,214,120, 78, 59, 71,112,150,210, 56,146, 52,163,114, 14, 17, - 20, 99, 60,155,195, 33,211, 44,163,109, 13,149,202, 64,181,188, 97, 60,198,247, 90,156,115, 55, 80,240,100, 56,214, 70, 3,118, - 16,124, 58,207,216, 21,146,113,162, 72,139, 33,165,183, 20, 98,131,183,155, 99,132,214, 72,162, 96, 75,107,205,165,241,144,204, -121, 46,122, 24,121, 16, 85,205,101,235,185,215, 46, 16, 93,195,237,211,135, 84,135, 39,188,183,172,120,111,255, 4,149,128,169, -154,168,140, 95,156,112,174,210,249, 97,172,120,241, 19,138,118,248,136, 7, 62,252,168,127,111, 3,179,178,230,142,243,200,182, - 67, 89,195,101, 41,209,137,166, 9,130,179,166, 35, 65,160,149, 34,113,158, 84, 71,226,104,176, 30,165, 3, 66,122,132,140, 36, - 75,231, 3, 9,146, 36, 29, 18,108,131, 74, 7, 8,153, 18, 66,136,235, 5,145, 34,164, 67, 40, 5,198, 68,127,191,236, 31, 89, -154, 64, 83,130,206,145, 82,225, 93, 11, 40,130,181,136,158,143, 17, 2, 49, 92, 71, 43, 86,157,167, 9,129, 89,103,232, 84,204, -101, 95,153, 24, 36,212,118, 45,198, 70,226, 94,133,165,232,101,139,247,156, 97,164, 82,238, 87, 51,102,245,146, 84, 42, 62,168, -207,208, 66,112, 22, 28,101, 91,210, 25,203,235,103, 11,110, 63, 92,224,187,152, 65, 18, 86, 51,194,100,147,176,170,160,200,176, -167, 51,190, 97, 60, 63,187, 53,229,111, 62,186,203,127,187,115,137,191,189,255,136,223,218,186,192,223, 61, 57,226, 55, 55, 47, -240,229,195, 71,252,187, 91,155,252,157,253, 99,126,227,210, 46,138,209,115, 95,194,119,177,155,117, 54, 94,232, 7,195,152, 23, - 46, 68, 44,234,231,187,117,215,211,211,126, 82, 81,255,145, 65, 48,105, 52, 42,247,140,111, 66,140, 23,140, 49,160,154,193,176, - 96, 99,178,206, 88, 4, 58, 33,120,118,247, 42,137, 82, 20,197, 0,145, 38,140, 6, 25,203,198, 80,117, 13,206,195, 73,240,125, - 18, 27, 79,132,126,193,245, 33, 49,231,161, 37, 46,142,204, 73, 40, 3,164,131, 20,239, 2, 77, 27,177,166, 85, 99, 49,153,142, - 99,122,111,250,209,116,127,197,210, 58,250,199,165,140,143,253, 60, 4, 69,246, 48,115, 84,175, 72,127, 42,181,174,231,199,208, - 17,239,131, 15, 63, 8,122, 73,116, 20,102,232, 12,167, 85,159, 95, 46,216, 45, 4, 71,173,103, 43,133, 60, 17, 17,119,159,193, - 56, 81, 84,166,143,179,125,122,167,254,209,131, 84,162, 49, 45, 84,193,177,155,104,150, 62,208,122, 71,234, 37,171,208,197, 34, - 37, 60,104, 98,148,172,251,241, 35,248, 59,111,191,207,167,126,238,103, 25,142, 10,118, 54,214, 73,178, 12,103, 96,243,194, 26, - 73,162,201, 18,141, 18,146, 60,141, 99, 48, 2, 88, 23,250, 61,116,212,104,139, 62,197,206,135,120,225,132,128, 23,176,168, 13, -165, 13, 84, 33,208,250,152,230, 38,129,129,150, 88, 23,176,190,119, 10,218,248,124,183, 54,224,157, 64,229, 41,149,130, 47,127, -229,117,190,118,231, 38,167,109,203,237,179, 37,169,144,108,143, 70,116,206,144, 74, 5, 2,150,101, 73, 87,213, 52,166, 99, 57, - 43,169,140,101, 53, 95, 32, 16,188,246,234,115,124,246,181,231,216,125,102, 7,165, 36,182,115, 76,134, 25, 82,168, 40,133,176, -177,163,213, 90,245,246, 59, 79, 75,136,108,111, 2, 66,120, 52,129, 68,123,164,128, 65, 42, 25,166,130,253,147,150,121, 11, 42, - 83, 36, 91, 3,212,229, 9,179, 44, 99, 88, 40,242, 97,138,203, 4,170,181,100, 37,100, 13,164, 85, 75,162, 3,162, 72,104,206, - 42, 86,119, 78, 57,123,247, 30,195,195, 37,195,221, 33, 94, 9, 38,169, 98,154,105,214,165,228, 84, 9, 78,133,100,238,161,242, -129,131,206, 81,181, 14, 21, 4, 63,181, 57,100, 60,204,184, 58, 29, 48, 65, 49,237, 28,239, 46, 44,143, 42,207,137, 87,212, 94, - 81, 76,167,232,193,152,201,231, 95, 99,109, 52,225,149,159,126,137,245,221, 93,142,110,220,230,180, 58,163,104, 20, 7,181,197, -250,238, 9,255, 27,112,203, 57,214,212,184,182,194,183, 29,206, 70,107,142,111, 43,252,254, 62, 15,125,205, 67,161,121, 36, 20, -186,110,248,189,217, 25,223,156, 47,216,117, 21, 74, 15,200, 58,195, 39, 22, 11,218, 79,127,140,175,220,221,231,247,254,223, 63, -160,222,187, 11,123,119, 16,123,247,225,225, 7,136,211,135,212,203, 83,110, 39, 99,126,126,107,196,118,154,144, 2,215, 77, 66, - 53, 59,225,127,120,247,117, 94, 28,111,210,165,113,109,227, 66, 96,225, 28,251, 58, 97,101, 3,206, 71,254,193,206,184, 32, 15, - 32,180, 96,101, 44,153, 82,132,224, 81,214, 50,234,106,138,224, 80, 2,132,105, 81, 34, 65, 40,137,237, 58,140,119, 24,235, 88, -152,150,219,109,205, 94, 91, 99, 85, 66,161, 37,222,244,217, 11,198,145,166,138,202, 6,150,117,139, 50, 6,233, 91, 70,190, 33, -119, 29,151,165, 99,214,118, 40,161,120,175, 92, 33, 72,120,102, 52, 96, 71, 39,180,120,142,218,134, 63,154,205,120,189,105,159, -100, 60, 52,117,212,228,232,132,103,242, 2,225, 45,175,201,192,179, 90,144, 73, 9,198,177, 46, 37, 39,198,240,103,139,146, 67, -235, 80, 42,160,210, 20,157, 15,217,205, 11,174,101,154, 23,210, 9, 69,185, 96,179, 53, 76,150, 43,166, 77,197,165,174, 99,125, -126,196,206,170, 34,239, 58, 46, 34, 40,138,140, 71,171, 50, 94,123,123, 11,220, 15,116,213, 79,251,223,127,194, 77,126, 4,110, -243,248,179,214,136, 62,162, 22, 41, 17,222, 16, 74, 67,125, 86,179,119, 54, 99, 71, 64,235, 28, 71,193,209, 52,142, 36,141,185, -243,206,217,152,220, 71,143,208,150, 18, 47, 37, 99, 1, 67,149, 34,108, 67,174, 83, 68,240,136, 16, 80, 74,161,180,198,155, 14, -165,211,248,255, 42, 13, 66, 69, 56,143, 78, 30,175, 73, 67, 79, 50, 21, 8,130, 51, 8,165, 9, 62, 32,164,196, 57,135,119, 29, - 72,133,107, 27, 42,215,178,232, 90,142, 92, 71,165, 21, 43,211, 97,156,101, 86, 87,212,214, 48,175, 75, 90, 99, 56, 94,157,114, - 86, 47,113, 93, 76, 13,205,164,162,243,158,198, 25, 58, 91, 71, 62,153,141,211,202,224, 28,243,186, 98, 86,118, 60,168, 27,190, -117,127,134,171, 75,124,215,197,233,136,245, 4,215,198,201,185, 51, 80,164, 8, 27,120, 40, 2,191,144, 42,254,215,179, 57,255, -229,133,203,252,131,249, 41,127,105,178,206, 31,207,102,124,122, 48,224,125,239,249,226,120,200,239, 60,122,216,239,212,207,119, -232, 66,199, 87, 40, 43,162, 10, 83,233, 39,123,225, 44,235, 81,174,254, 39,238, 99,127,116, 81,239, 49,168, 42, 34, 95,133, 76, -158, 40,202,243,130, 43, 91, 35,156,235,152, 12, 70, 60, 63,216, 96,168, 82, 54, 46,108,176,190, 49, 97, 56,202,169, 92, 32,209, - 2,141,102, 81, 87,180,206,210,150,203, 88,212,211,254,196,123, 14,157,193, 61,177,111,133,168, 48, 71, 38,209,246, 41, 4,100, - 58,138, 78,179, 62,116, 70,136, 72,116,115, 54,118,194,217, 8, 46,108,194,120,210,155, 68,237, 19,113,153, 16,113,167, 46,228, - 19, 12, 46,125,222,186,232,223,222, 46, 64,222, 71,173,202,143,232, 17,156, 3,153,227, 68,212, 45,100, 82,162,164,199, 42,193, -118,166, 24,249,192, 44, 4,174,104, 1, 38,112,220, 24,130,147, 79,118,233,231,187,245,115, 84,237,121, 56, 75, 15, 87,223, 72, - 51, 14, 86,134, 81, 34, 24, 1,123,101,199, 52, 81,120,239,104, 90, 8,231, 62,254,243,215,246,199,124,172,239,110,113,245,185, -171, 28, 30,159,209,118, 22,235,162, 53,195, 7, 98,161,245,129, 60,213, 81,200,229, 3,109,239,130, 8, 38,250,194,131, 7,153, -136, 40,228,203, 20, 78, 8,188,141,135, 68, 21, 4,173,245,116,198,163, 19, 25,227,101,125,164,205,121, 41,113, 82,112,218,121, - 26, 36, 22,129, 81, 26,169, 5, 70, 4,246, 30,156, 98,219,142,141,124,192, 70,158,145,234, 24,178, 32,133, 68, 8,197,201,106, -201,170,109,232, 92, 71,211, 52, 52,109,131,176,130,203, 59, 59, 92,187,180,197,178, 54,220,188,125,192,173, 27,247,121,120,255, -128,147,147,134,139,187, 19,166,131,140,166,179, 4, 60,169,142,118,186, 32,192, 17,217,251,238, 28, 84, 67, 32,147,144, 73, 65, -145, 18,243,236, 19,201,234,246, 25,234,168, 36,109, 3,173, 13, 24,231,168, 51,197, 65, 90,176,187, 54,192, 6,129,210,144,109, -174,193, 89, 64,172, 26,228, 78, 70,216, 26,226,157,195, 46, 27,138,105,193, 96,154,197, 29,108,174, 24, 37, 41,131, 32, 72, 31, -174,152, 47,150,124,235,205, 7,248, 89,205,222,237, 19,150,143, 78, 80,171,146,176,114,236, 92, 24, 81,100,154,149, 11,116, 85, -199,119,206,106,238,204, 42,188,146, 12, 6, 57, 27,163,148, 53, 9, 83, 13,133, 51,252,133,181,130, 23, 54,166, 20,105, 66,121, -237, 89, 84, 39, 88,203, 4,207,174, 13,217,185,176,195,238, 51,151,152, 92,216,198, 14,167,204,100, 17,119,138,182,251, 16, 74, -244, 49, 63,252,240,144,166, 44,121,235,108,201, 31,180, 53,223, 52,146, 67, 33, 25, 89,199,206, 56, 97, 83, 6,198,153,226,149, -179, 51,174,143,135,108,109, 92,100,111, 56,197,222,125, 31, 30, 62,130,114, 9,143, 30, 33,142, 14,145,237, 9,121,217,241,146, - 30,145, 90,143, 50,142,113, 93,241, 41, 5, 55,170, 37, 95,105, 21, 23, 7, 9,251,198,114,199, 7,206, 42, 71,139,100, 17, 34, -187,123,144, 72, 70, 90, 35,137,191,255,169, 16,148,182,163, 51,134,196,180, 12,130, 39, 13, 17,141,235,157,197, 56,135,117,142, -218,118,236, 45, 79, 40,125,199, 94, 87,115,234, 13,123,171,154,205, 52, 69, 56, 71, 98, 12, 74,107,172,113,236,173,150,204,155, -146,196, 25,214, 77,139,176,158,173, 96, 88,115,134, 13, 33,120, 80, 46,168,108, 75, 73, 74,174,225, 97, 83, 49, 43, 87,188, 63, - 59,225,171,243, 83,154,122, 21,187,197,166,238, 29, 65, 30,145,103, 12,165, 68, 4,199,101, 60,133,130,129,183, 36, 33,240,230, -106,193, 55, 22, 53,111,119, 45,210,117, 72,157,162, 84,194,122,154,176,155,142, 25,203,132,237, 84,115, 17,201,150, 82,172, 15, - 10, 10,149,162, 59, 19, 41,154,190,141, 54,208, 76, 50, 29,143,112,227, 1, 71, 70, 34,122, 97,240,143, 42,236, 63,224,131,255, - 17, 30,120,249,209, 98,175, 53,164,186, 39,223, 41,240, 50, 14, 37,234, 54, 34,184,157,225, 65,211,114,203, 72, 86, 4,190,223, - 6, 58, 97, 88,217, 88,124,141,115,184,224, 64,169, 88, 12,165, 64, 6, 72,137,144,171, 92, 72,164, 80,104, 2, 34,196,107,153, -210, 89,244,134, 88, 19, 15, 18, 62,230,117, 8,235,162, 41, 85, 74,130,105,192,199,159, 39,164, 36,116,109, 63,232,140,164, 58, -111, 44,222, 26,218,224, 40, 77,199,158,181,236, 57, 75,109, 45,149,139,120, 91, 33, 98,166,124,213,149,156,214, 51, 78, 76,195, -254,114, 70,235, 13,141,119,145,246,169, 37,137,243,204,109, 36,148, 58, 60, 74, 40,108,215,178,242, 14, 17, 60,137,240,220,173, - 58, 90,215, 18, 76, 31,196,163, 1,157, 18,154, 14,145,100, 80, 25,196,184, 64,212, 13,183,117,202,127,188,177,206,255,120,176, -207,191, 54,200,248,227,101,201,181, 60,101,134, 39,183, 29,255,240,228,132, 79, 76,167, 40, 38,207,127,233,113,135,238,109,244, -154, 43, 31,187,201,243,142, 80,244, 5,160,237,250, 83,229,191, 98, 81,215,242, 73,241, 13, 1, 17, 92,124, 20,215, 47,241,241, - 75, 27,124,226,153, 23,184, 52,221,226,165,173, 93,158, 25,111, 34,114,205,181,237,117, 86,222,210,153,192,104, 50, 32, 40,205, -131,131, 67,214,199, 99,110,159, 29, 96, 86,125,234, 88,103,226,207, 14, 42, 30, 58,240,209,190,117,238,137, 23,196, 19,155, 82, -253,247,137,184,140, 10, 34,118,242, 90, 70, 53,250,170,141,127, 63, 30,193,120, 8, 69,191, 46, 88,244, 39,235,243, 81, 55, 50, -254,172,115,225, 95,146, 63,225,212, 43,221,191,145, 93,188, 63, 79, 67,100, 30, 63, 31, 30, 66,252,217, 90, 4, 70, 69, 84, 87, -174,245, 9, 97,151,181, 70,121,207,134,138, 2,158,121,235, 34, 97,142,240,100, 5,114, 14,146,120,124,104,178,208, 70,162,220, - 84, 11,150, 33,230,239,166,137, 96,213, 6,188, 10, 76,148,160, 13,125, 34,158, 23, 63, 20, 23,251,244,199,205,239,191,195, 23, -255,173, 95, 97, 99, 50,100, 89, 54, 49,181,169,179,116,141,137,193, 10, 66,145, 38, 9,131, 76, 71,202,174, 13,125, 94, 76, 64, -247, 2, 63,173, 98, 82,152, 84, 18,215,249,216,125, 3,193,249, 56,198, 31,166, 12,138,148,198,249,199,254,112, 47, 4,101,231, -104,250,116,218,243, 19,123,227, 29, 89,170, 8, 33,161, 59,171, 65,138, 24, 24,163, 53, 73, 63,142, 12,193, 33,148,100,160, 52, - 74,105, 6,217,128,141,181, 45, 70,147, 49,235,147,156,189,253, 51, 30, 62, 58, 0, 41, 41,242,156,166,233,176,193, 82,163,216, -221, 26,225,131, 71, 17, 80, 74,162,117, 68,224, 57,231,232,140,165, 53, 54,134,163,244,145,188, 82, 4,180, 20,104, 17, 51,230, -147, 66,177, 56,108, 24,165,146,237, 92,113, 57, 75,240, 14, 94,155, 36,108, 21,154, 3, 27,240, 62,142,234,241, 30, 70,154,230, -210, 4, 51,200, 9, 89,130, 30, 21,136,237, 9, 97,154, 35,134, 9,153,243, 80,183, 4,235, 88,168,192,187, 66,112,253,229, 29, -214,114,201,149,205,130,143,125,108,139,112, 92,177, 38, 2, 97, 99,196,126, 23,120,111,105,120,115,222, 50, 51,129,221,164, 99, -224, 29,207,155, 57,203,147, 67,158, 75,115,182,117,202,115, 4, 46, 21,145,184,101,141,225,189,178, 68, 59,199,154, 15, 12,132, - 98, 82,228, 20,137,100, 45,207,216, 42, 82, 46, 76, 6, 12, 54, 38, 28, 39, 99, 12, 22,223,118, 63,144, 4,198,226, 12,230, 51, -186,170, 36,156,158, 16,164,163,194,243,234,112,196, 90,146, 80, 32, 73, 19,141,106, 59,210, 97,194, 48, 36,220,169,142,225,228, - 36,254,238,104, 13,139, 5,161,172,185,115,188, 79,222,204,217,182,138, 20, 40,178,140,137,119,108,183, 43, 30, 46, 79,185,217, -118, 28, 90,203,101,239,216, 54, 13,223,245,130,147,182,230,154,106,153, 91,197, 51,169, 36, 85, 26,109, 3,214, 25,172,243, 28, -149, 11, 26,111,217, 49, 29,162,109, 81,222, 48, 91,205, 16, 33,112,216,173,120,103,254,136, 42, 4,238, 45, 78,121, 48, 63,226, -102,181,162,170,150, 72, 17,176,171, 37,251,213,130,179,206,241, 96,118,130, 13,158, 77,211,209,181, 45,181, 51, 76,188,193,135, -192, 26,129,196,118,100,182,161,241,112,228,106,206, 26,195,119,246,239,242,181, 71,247,249,254,236,152,114,177,128, 85, 5, 39, - 11, 88,172, 98,151,222, 58,200, 51,108,128, 81,154,241, 65,215,113,217, 55,184,186,102,102, 12, 15,218,154,127, 81,150, 72,211, - 34,130, 67, 57,131,212, 25, 87,211,140,105,158,147,250,192, 40, 75,217, 29, 20,108, 37, 3,134,131, 28,229, 37, 88,131,176, 6, -111, 59,172,181,100,105, 74,161, 21,147,193,136,106,154,115, 38,250, 61,126, 80,209, 77,209, 95,167, 62, 90,204,197,211, 94,248, -159,112, 67,107,132,146,113, 74,231, 69,236,137,212,147, 97,188, 8, 14,124, 64,184,216,136,148,139, 6, 23, 60,123,157,231, 65, -219, 17,122,108,107,227,162, 69,239,156,176, 23, 3,158, 2,107, 74, 19, 76,135, 14, 14, 37, 53, 88, 23, 83,191, 67, 76,100, 59, - 47,238, 16, 16, 82, 19,188, 69, 4,240,214, 32, 84,130,183, 13, 8,133,235,237,213, 65, 42, 92,215,225,123, 79, 73,227, 90,170, -174,228,160,173,184,225, 91,218, 52,227,172, 89,225,172,165, 54,134, 89,189,192,226,153,155,150,133,235,184,187, 92,177,244,130, -121,185,140,217,101, 34,170,107,103,222, 48,214, 26, 23, 60, 2,201,170,169,168,112, 24,239, 80, 66,114, 84, 55,200, 34,225,168, - 1,239,187,184,254,241, 50, 70, 69, 75,141,176, 6, 38, 3,196,217, 2,177, 62,229, 25,219,242,181,206,240,249, 34,231,173,206, -178, 50, 53, 55,140,163,236, 58, 30, 24,207, 84, 4,190,182, 56, 65,177,118,237, 75, 36,170, 7,195,232,152,231,157,232,120, 83, -250,195,227, 93, 99,162,255,208,152,127,181, 0,152,180,207, 92,215, 17, 82, 35,242, 49, 92,186,204,175,190,252, 9, 94,189,250, - 50,105, 54, 96,123,123,155, 75,235,155,120, 18,158,189,180, 78, 35, 36,237,170,102, 48,202,105,173, 71, 42, 73, 38,115,234,174, -197, 55, 45,167,222,198, 39,227,220,158,161,101, 31,129,218, 39,191,185,238,201,232, 95,245, 34,183,200,246,140,111,184,243,119, -176,212, 49,113, 45, 81,113, 12,223,118,209,214,103, 2, 44, 87, 96,234, 15,171,216,149, 0,145,244,157,115,255,174, 21, 60,225, -183,107,221,115,220, 93, 47,158,179, 63,228,249,136,246,182,221, 97,202,172,243, 60,167, 21, 19,165, 24, 4,137, 14, 81,220,230, -140, 99, 34, 36,163, 4, 78,218,126,243,117, 14,245,177,246,169,207, 79, 17,250, 68,191, 43, 62, 15,101, 8,176,169,160,108, 2, -109, 48,100, 58,193,153, 62,128,230, 39,116,234, 0,107,155,235,188,242,202,139, 4, 41, 72,115,205,198,120, 72,231, 2,182,243, - 12, 38, 3, 46,175,143, 81, 90,160, 84,204, 74,246,189, 67,210,248,128,150, 17,214,160, 50,137, 12, 49, 94, 85,246,246, 16, 84, -188,127,137, 76,200,242,120, 40,136, 83, 50, 65, 32,224, 2, 72, 33,226, 83, 74,160, 72, 53,227, 60, 69,202, 64, 58, 76, 57,126, -112,138, 18, 10, 37,101, 20,188, 16,185, 5, 74,106, 70,249,144,193, 96,192,179,187,151,248,245,159,249, 56,155, 27, 99,246,143, - 22, 28,157,206, 24, 78, 70,140, 39, 35,202,178,162,115, 29, 27, 59,219,236, 92,218,196, 56, 79,145, 39,140,138,148, 36,145, 24, - 27, 21,175,214,122, 66,159, 36,230, 93, 92, 25, 9, 31,176, 54,178, 18,206,175, 87, 74, 9,150,165,165,107, 2,249, 32,137, 57, -209, 90,146, 56,203,254,157, 83,228,170,229,221, 59,103,156,236,159,177,153, 41, 90, 25,184, 51,144,188,227, 36,199, 78,114, 88, - 59,110,189,115,143, 71,247,246, 56,156,149,148,214, 82,183,150,170, 53, 36,211, 1, 11, 1,223,190,241,136,236,246, 13, 62,247, -252, 37,254,198, 87,222,230,209, 59,183,105,131,103, 88,149, 36,121,198,123,179,134, 3,165, 56, 10,129,195, 32,248,181,171, 5, -191,126,109,155,183, 31, 60,228,155, 15,110,242, 79,238,222, 35,168, 0, 94,112, 57,139,194,179,251, 7,199,220, 95, 44, 24, 59, -199,192, 88,148,233,200, 2,140,181,230, 74, 62,224,103,183,175,176,150,167,180,137,198,111, 13, 56, 45,214,177,178, 32,212,154, - 96, 10,144,105, 47,191,139,204,242, 48, 59, 37,156, 30, 18,116,198,107,215, 95,100,153, 77,216, 17,142, 76, 69,173,132, 74, 20, -171,214, 82,174,206,184, 89,183,132,229, 28,202,138,160,227,117, 39,216,128, 43, 27,190,183,127, 68, 48, 51, 46,167, 5, 35, 60, -197,104,140, 91,157, 50, 59,222,227,247, 15,143,120,239,116,193,221,206,242,229,131, 7, 60, 76, 50, 78, 44,220, 53,134, 55,218, -142, 63, 41, 27,254,164,178,188, 42, 12,202, 59,230,229,138,247,203,134,133, 89,226,219,154,172,107,152,205, 23, 20, 74,242,246, -242,140,119,206, 78, 56,237, 12,247,151,103,188,123, 52,227,189,211, 19,110,221,220,227,224,116,197,189,147, 67, 6,218, 18, 92, -199, 89,181,192,154, 21, 89, 91,225, 77, 67,144,144, 4,135,145, 10,237, 29,185,247,132,174, 70, 59, 3,166,194,116, 13,111,150, -103,204,170, 25, 77, 85,225,202, 10,206,106, 68, 91,193,193,105,116,233,204, 74, 68,103,160,169, 48,153,100,133, 96, 89,151,188, - 93, 54,188, 55, 91,240, 94,181,226,187,203, 21,194,180, 8,103, 17,109,131,116, 6, 41, 3, 23,138, 2,229, 2, 90, 72, 10, 31, -120, 46, 75, 89, 83, 58,226,175,149, 66,167, 41,190,109,168, 93,139, 21, 14,225, 29,211, 98, 68,162, 37,195, 44,229, 76, 8,150, - 66, 64,145, 65, 58, 64, 36, 3, 68, 26,217,242,194,187, 15,129,109,158,190,233, 31, 2,184,121,220,173, 39,125, 81,239,127,199, - 63,180, 44, 12, 1, 17,250, 70, 40,213,143,243, 49,132,239,192,122,188,131,163,101,199, 28, 71,129,196, 27, 75,135,196, 58,199, - 80, 41,202,174,166,243,150,156,136, 69,238,156, 65, 17,245, 8, 65, 4,148, 84,216,166,126,172,213,242,166,137,235, 63,215, 70, - 1,154,179, 56,215, 98, 93, 3, 82,198, 3,159,169,113,128, 17,158,186,171, 57,107, 87, 84,206,114, 11,199,126, 87,113, 96,106, -206, 90, 75,101,106,142,154,101,100,181,183, 37,165,183,156,214, 53,149,117,172,130,195,121,137, 12,129,153, 53, 52,182,139, 61, -241,249, 52,136, 64, 16,158,178,139,142,158,101,137,101, 66,182, 0, 0, 32, 0, 73, 68, 65, 84,221, 50,144,138, 34, 4, 76,170, -153, 45,226,227, 15,244, 73,154, 26, 68, 62, 64,204,150,136,173, 41,226,224,132,114,109,194,199, 21,188,141, 70,116, 21,211, 44, -163,180, 29, 59, 50,229,253,114,198, 80, 69,131,171, 98,227,249, 47,209,217, 39, 59,117,161, 99, 1,234,122,111,186,137, 72, 70, -234, 85, 28, 19,201,126, 7,126, 14,148,249,151,234,214,243, 88, 72,133,131, 98,130,152,174,243,201,171,151,120,118,243, 25,132, - 78, 80, 42,225,226,214, 26,193,121,116, 8,204,235,142, 34, 19,104,173,168,106, 75, 72, 5,243, 85, 75, 85,119,120, 99, 25,164, -146, 91,179,167,226, 8,207, 5,120,178,127,171,157,135,151,156,219,191,242, 65,111, 13,147,125, 26, 90,159, 43,158,244,143, 57, - 75,122, 92, 99,136,187,250,197, 18,202, 50,222, 62, 10,107,145, 50,190,179,147, 36, 30,126,206,139, 56,125,145, 63,143,167, 85, -105,156, 24,164,242, 7, 11,187,148,224, 53, 11,103, 89, 79, 18, 54,165, 32, 11, 17, 62,227, 9,236, 8,193,153, 11,140, 3, 56, - 33,217,212,146, 35,215,119,253,231,157,250,227,207,189, 69,174, 47,244,174, 47,252, 57, 34,238,151, 91, 67,154, 43,180, 82, 49, -158,150,222, 3,255,231, 0, 16,188,251,221,183,248,236,175,254, 2,219,235, 19,164,146,204, 87, 45,211,233,144,147,147, 25,243, -211, 37,181, 9, 72, 21, 59,210,104, 3, 11, 49,158, 84, 42,138, 92,147,100, 18,225,162, 11,221,138,152,188,150,104,141, 22, 10, -111, 61, 74,198, 16,149,170, 54,120,231,113,206,211,117, 30,173, 37, 74, 62,185, 13,243,140, 76,235,152, 1, 36, 20,109, 29, 40, - 23,101,223, 97, 4,178, 36,165, 72, 7,140, 39, 19, 38,211,117,158,123,254, 25, 62,247,242, 46,139,147,146,111,188,127,135,116, -144, 81,140, 6,180,109,199, 98, 85, 49,152, 12,185,120,113,155,225,184,192,247,187,251,213, 50, 94,168, 7, 89, 18,197,123, 62, - 18,242,140,141, 5,221,121,143,235, 85,253,198, 58,156, 11, 72, 41, 73,180, 34, 77, 52,227, 65, 74,146, 42,208,113, 60, 88, 87, - 29,109,211,113,116,255,144, 91, 55,239,176, 56, 61,225,224,225,125,110,223,219,231,237,219, 15,248,214, 91, 31,112,156,175,177, - 51, 46,152, 37,154,183, 66,194,151,191,250, 45,190,254, 63,255, 9, 95,189,241, 46,255,232, 15, 94,231, 31,253,227,111, 35, 86, -199,188,124,249, 58, 39,251,167,252,155,175,190, 76, 33, 52,191,255,213,111,112,229,234,101, 62,251,185, 23,248,245,237, 33,127, - 38,128, 11, 67,202,165,229,229, 73,134, 82,154, 95, 30,166, 56, 31,248,238,253, 3,188, 53,124,236,234, 85,220,100,131, 67, 2, -218, 25,238, 86, 45,167,171,146,235,197,152, 32, 4, 3, 33, 49, 38,134,136,164, 82,242,233,141, 93, 46,236,236,176, 57, 28,115, -211, 90,110,184, 12, 49,154, 64,161, 48, 58,193,111, 20, 20, 91,235,236, 92,219,129,209, 58, 45, 26, 86, 22,164, 37, 4,201,228, -217,103,185, 62, 78, 25, 11, 73,103, 59, 18,173,217, 47, 87, 44,155,150,133,149,124,176,154, 69,104,211,108, 21,131, 44,130, 36, -120,219, 31,236, 4,111,207, 86, 92, 80, 13, 27, 74,211, 85, 37,143, 22,135,252,189,123, 71,188,249, 96, 70,117, 60,231,232,224, - 16,237,107, 46, 54,103, 44,110,220,160,109,103,160, 4, 66, 39, 8,219,242,237,229,140,163,166,230,165, 34,227, 15,110,189,135, -246,129,213,252,152,211,249,130,155, 85,203, 91,243, 5,239,150, 21, 95,155,151,188,126,182,228,221,121,205,131,217,146,217,106, -137,107,107,156,109,169,170,146,155,243,154,253,182, 37,152,138, 60,213,236, 74,201, 84,128,113,150,160, 20,170,107, 81,214,112, -236, 45, 27,166,161, 67, 64,215, 50,111,151,212,139,138, 85, 85, 33,124, 0,231, 16, 94,192,188,129,118, 5, 93,141,176, 29, 84, - 37,156,158, 33, 14,143,240,103, 11,192,227,203,138,122,181,164, 92, 44, 16,139, 5, 98,181,132,186, 66, 46, 22,136,174, 69, 9, -195,202,117,172,107,141,144, 9, 74,192, 69, 45,217, 17,158,161, 76,145, 90, 18,234,146, 96, 29, 70,128,212,138, 81,154, 33,128, - 66,105, 10,165,113,161,195,100,138,153,241,136, 44,129, 97, 6,163, 17, 66,166, 72,149, 34,113, 72,231, 62, 4,181,209, 79, 21, -118,253,195, 10,187,142, 35,115,126, 72,136,140,112, 46,214, 20, 41, 99,167, 46,162, 72, 48,142,203, 29,162,234,192, 5,170, 85, -203,253,202,176,232, 12, 34, 4,130, 12,204,155, 38,114,230, 3,116,109, 75,227, 12,185, 15,184,224,232,188, 65,122,168,187, 42, -166, 45, 58,135,235,106,156,233, 98, 65,247,142,174, 94, 17,132,199, 88,139, 13,142,206, 89, 90,111,113,222,177,104, 86,148,109, -195,153, 45,217, 55, 45,111,119, 75,110, 54, 43,110,149, 53,119,203,154,210,118,220,238, 58,150,173,161,242,142, 86, 73,102,171, - 18, 43,161,179, 22,101, 35,236,108,209,212,148,222,227,181,228, 65, 85,115, 49, 75, 56,181,134,182,173,177, 33,224,149, 64,219, -232,199, 55,214, 49, 85, 10, 33, 96,179, 72,217,171, 76, 20, 81,123,143, 48, 22,108, 28,193,203,249, 10,177, 54, 69, 30,204, 56, - 77, 20, 98, 49,199, 14,134,172,230,115,188,210,156, 52,115,100,154, 49, 11,158,114,121,134, 98,116,237, 75,232,243, 78,189, 79, - 87,235,179,101,177, 29,212, 77,236,222,109, 63,218, 78, 84,180,141,105,126, 44,192,228, 7, 62,178, 52,238,184, 19, 21, 79,132, -227, 33,131,233, 26,175, 93,190,198,100,109, 28, 35, 59, 61, 12, 6, 57,178, 23, 64,248,186, 69, 43,201, 96,152, 97,156,229,204, -121,170,101, 75, 23, 12, 78,192,114,181,228,160, 93, 96,170,174,183,204,201, 39,209,169,231,176, 27,211, 19,230,210, 34, 22,239, -252,188, 8,247, 59, 23,165,123,206,125,218, 43, 80,251,125,181, 51, 31,142,150,253, 97,235, 4, 21,161,251, 72,221, 23,243, 36, - 58, 6, 92,128, 81,209,231,201,247,197,190,238,126,112,212,237, 92, 31, 75,171,217, 78, 20,195, 30,206,210,187,238, 48, 6,118, - 18,193,125,239, 24,186, 64, 30, 60, 71, 82,224,186,167,118,233,231,157,250,211, 74,246,126,109, 18,124,192,132, 56,238, 86,104, -108,176,113,244, 29,252, 19,220,237,159, 51,170,113,184, 54,225,226,181, 93,138, 36,199, 56,195,254,253, 35,188, 51, 12, 6, 35, - 28, 48,155, 55,120, 4,147,113,134, 16,130,245, 34, 65, 8, 65,158,107,148, 82,100,153, 36,207, 20,193,157, 3,102, 4, 89, 46, - 73, 19, 69,150, 69, 14,130, 53,158,209, 80, 19,130, 64, 72, 17, 71,102, 65, 60, 30,225,159,199,218, 7,235,217,159,149,125, 34, -159, 96, 48, 25, 50,154, 76, 24, 77,198,140, 38, 99,146, 60, 69,167, 5,173,177,236,205, 86,204, 77, 96, 48, 28,130, 20, 72, 47, - 73,146,132,233,250,152, 52, 77,104, 27,195,236,116,193,219,239,191,203,255,246, 71, 95,231, 79,254,244, 13, 82, 20,235, 59,107, -140,139,244,241,232,207, 67,175,118,117, 44,202,142,186, 49,148,165,161,169, 45,214,248, 72,197,235,237, 55, 39,173,231, 99,157, -225,170,246,188, 25, 60,243,170,102,181,170, 89,149, 21,117,187, 36, 81, 9,243,213, 25, 15, 14,247,216,223,127,196,173,218,241, - 96, 1,126,123,196, 34, 75,176,207, 60, 75,158,150, 28,190,254,128,240, 65, 75, 56,171,184,251,157, 61, 62,243,133, 87,184,242, -252, 46, 97,125,192,157,121, 69,125,122, 76, 97,106,222,185,117,159, 7,143, 30,242,245, 59, 15, 57,122,255, 30,215,240,252,123, - 47, 61, 67, 45,224, 31,191,243,128, 71,139, 57,111,207,106,158,219,216,228, 23, 63,243,113, 54, 94,125,158,181,235,187,220,244, -130,123,247,238,240,193,131, 91,124,112,114, 76,131,103, 39, 31,240, 64,167, 44,218, 21, 50,209,188, 52, 93, 39, 77,115,106,107, -248, 78,215,241,102, 82,176,157,101, 92,209,130,157,196,144,143, 51,198,211, 9,195,124,192,246,198,144,193, 48,101,161, 83,124, -231,193, 25,102, 23,183, 25,232, 49, 74,122, 74,165,104,234,154,253,174, 99,229, 53,221,149,171, 28, 79, 47,210,118,115,120,120, - 16,131, 69, 92, 31, 22,226, 61,190,159,144,188,109, 91,218,106,201,205,182,228,255, 40, 87,124,103,105,113,243, 6,247,193, 28, -127, 56,199,220, 93, 49, 95,149, 96,170,216,217,248, 14, 49, 63, 70, 78,214,216, 30,111,241, 59, 95,248, 4,191,252,169,151, 48, -173,231, 96,126,204,219,251, 51, 62,184,247,128,123,103, 43,238,122,193,163,166,165,105, 44,214, 54,177,115,107, 27,108, 23,133, -130,206,251, 88, 32,188,165, 92,173,216,107, 2,147, 84, 50,192,209,248,142, 11, 66, 82,123,143, 22, 2,235, 12, 83,211,178, 82, - 9,109, 53,231, 65, 85,179, 10,129,174, 92,113, 58,171, 98, 55,142,138, 81,163,161,111, 8, 62,186,211, 54, 22,177, 92,192,124, - 14,179,121,108, 44, 22, 53, 98, 54, 67,156,157, 32,142, 79, 16,199,199,200,197, 2,121,186,128,197,130,185,109,153,153, 10,133, - 98,135,192,181, 52, 35,181, 22,209,182,248,206, 97, 8, 56,111, 73,149, 34, 17,138, 34, 73, 73,133, 66,121, 79,234, 3,206, 59, - 38,227,156,113,145,240,252,120,192, 11,107, 3,214,166, 5,227, 34, 97,222, 4,148,245,113, 59,233,253,227, 66,158,126,164,200, -235,167, 58,122, 33, 68, 44,210,166,239,212,205, 83,227,119, 23, 67, 78, 68,136,157,186,112,253, 4,247, 60,184, 38, 8, 68, 87, - 65, 42, 17,109, 77,217, 6,246,219,134,147,186,101,148,234,200,205,234, 26,154, 0,141, 49,204,113,164, 33,208, 56, 67, 27, 2, -166,107,113, 34,208,118, 53, 22, 79,101, 27,156,107,113,214, 96,189,197,184, 14,227, 13,101, 87, 81,217, 22,231, 58,246,218,138, -131,122,198, 7,109,201,237,106,197,183,109,205,222,114,201, 55, 79, 87, 44, 92,199, 65, 89,115, 38,224,208,121, 78,172, 67,107, - 69, 89,150,168, 52,199, 6,139,113,158, 78, 9,150,141,195, 56,207,178, 50, 28, 25,199,153,241,140,173,101, 32, 28, 86, 40, 90, -103, 81, 46,166,146, 90,239, 25,234,120, 65,203,164, 96, 36, 21, 75,239, 89, 90, 19, 15, 62, 68,160,152,148, 14,129, 66,182, 75, -212,100,140,154, 45, 81, 89,138,182, 14, 53,202,145,117,137, 74, 52,170,142, 60,125,169, 51, 20,235,207,127, 9,219,119,234,231, -230,131,208, 7,172,208,231,131, 43, 25,139,177,234,247,235, 42, 60,137, 88, 85,242, 9,159,252, 71, 89,192,164, 4,153,197, 93, -118, 58,132, 98,128, 72, 83, 6,195, 28,145,164, 76, 82, 77,146,102, 40, 25,240, 1,114,173,145, 74,144, 9,176,166,163, 89, 53, -204,106, 71,219, 25,206, 22, 37, 42,213,180,171, 6,176, 28,148,115,234,170,137,221,177, 13,177,112,203,190,115, 69, 64, 48,125, -242,141,140,209,167, 73,127,191,125,136, 35,167,208, 31, 52,252,249,232,186, 39,196,157,123,224,127,220, 58,129,126, 77,145, 21, -189, 50, 61,196,195,129,214, 79,146,215, 68,191, 14, 16,231,251,240,143,118,252,113, 70, 53,214, 30, 47, 21,218,129,246,113,188, -123,190,122, 95, 35, 78, 70, 74,239, 25, 10,207,105,119,142,138,181,125,132,107, 95,118, 30, 47,181,206, 95,147, 94, 84,231,125, -244,104,170, 62,207, 62,244,135, 55,255,231, 63,148,221,248,254, 13, 94,249,204,107,168, 76, 51, 46, 10,234,182,195, 89,199,114, - 49,103, 99,115, 74,158,198, 85,205, 48, 75, 98,200,139, 32, 10,224,132, 32, 81, 2, 27, 4,206, 6,130,140,170,101,173, 98, 24, - 74,146, 38,164, 89,138, 76, 52, 74, 9,130, 9,113, 56,212,196,200, 93, 99, 60,198,216,120,190, 10,158,217,178,163,174, 61,213, -178, 67, 41,201,104, 24,139,119,146, 37,188,120,125,155,151, 46,111, 16, 84,138, 15,129, 68, 73,164,144,172,170, 21,243,147, 5, - 82, 10,100, 34, 56,124,116,192,247,110,188,195, 31,127,247,109,254,236,246, 45,190,242,246, 45,110,126,103, 15, 62,168,225,118, -205,141,113,205,199, 47, 93, 98, 99,125, 68,170,162,187, 91,247,178,146,198, 56, 58,227,112, 30,154,198,210, 54,142,198,246,201, -193, 90,146, 41, 77, 55, 84,124,122,163, 96,120,161,224,238, 32, 97,184, 53, 98,124,101,131,236,165, 75, 36,207, 93, 33,108,173, -145,138, 1,251,167,167,188,251,206, 1,109, 17,120, 20, 18,214,150,150,236,194,148, 3, 37, 25, 60,127,157,171,215,183,121,246, - 51, 59,124,230, 87, 94,226,211,191,246,113, 78,148,229,238,193, 1,239,223,126,200,183, 30, 60, 68, 33,248,173,201, 38, 27, 94, -240,207, 27,203,157,170, 65,234,140,201,197, 75,216,205, 41,199, 90,211, 77, 11,154,139, 91, 36,151, 47,113, 89,167, 20, 71, 21, -223, 60,171,121,243,254, 41,239,221,186, 71,215, 89,178,245, 77,222, 42, 87,236, 47, 79,169,234,138,249,114,142,150,130, 85,158, - 83,213, 75,164,181,220, 48, 29,223,181, 6,165, 7,228,222,179, 46, 61, 3,215,210,106,201, 95, 26, 13,249, 43,211,117, 94, 82, - 18,167, 21, 42,151, 44,172,224,250,100,200, 56, 87, 84,197,132, 3, 18,142, 90,207,253,106, 73,105, 45,109, 91, 51, 89,219, 34, - 75, 4,114,178,201,194,204, 8, 71,199,208, 57,130,238,233,118, 66,224,165,161, 89, 54,188, 57, 95,242,237, 69,201,161, 83, 56, - 65, 20, 82,174, 41,252,105,212,231,167, 43,207, 79,229,154,191,184, 94,240,252, 98,197,205,186, 4, 28, 87,159,189,198,199, 71, - 3,214, 18,205,223,122,235, 30,183,131,136,187,202,163, 57,193,119,120, 20, 94,107,156, 15,209,137,210, 69, 30,130,243,254, 49, -201,207, 3,193, 69, 17, 21, 78,112,156,164, 92, 25, 42,118,131,199, 58,203, 24, 65,107, 58,134, 4,156,115,100,166, 97, 30, 60, -167,222, 51, 63,155,115,186,168,232,218, 22,119,178,138,214,170, 44,229,213, 11, 5,255,246,165,117, 62, 62, 29,243,198,241,234, -113,108,234,227,142,214,244,130,221,182,133,182,142, 28,143,208, 7,184,244,187,101, 89,199, 8, 95,121, 82, 34, 59, 67,233, 26, - 82, 37, 24,219,142,245,166, 66, 57,143,243,150,186, 45, 9, 50, 32,157, 39,149, 2, 45, 64, 11,141, 12, 30, 41, 37,133,146,108, - 38, 41,159, 24, 12, 25, 39, 9,211,108,192,122, 62, 96,146, 40,126,122,115,194,199,198, 3,214,181,224,200, 58,146, 0,169,247, -164,125, 97, 79,250,219,211, 29,187,240, 81,148, 38,180, 64, 24,158,100,190, 59, 31,129, 55,206, 61, 1,210, 40,137,176,145, 61, - 32, 68, 28,249,147,104,132,141, 13,143, 16, 81, 84,214,117,158, 71,171, 14,105, 59,202,206, 50, 8,130,149, 8, 88,235, 56,117, -142, 3, 1, 71,182,163,146,146,135, 85,201,137,112,172,154, 21, 51,239,104,218,150,189,174,193,155,134, 67,215, 98,141,161, 82, -138,101,219,114,191, 46,185, 85, 46,248, 32, 56,190,113,186,226,131,206,112, 99, 94,243,192, 58, 26,231, 89,213,150, 86, 6,170, -101,133, 79, 83, 26,239, 73, 8, 56, 41,169, 77, 71, 25, 4, 74, 40,142, 86, 13,235, 89,194,126,109, 40,155,134,182, 53,108,103, -146, 19,103,216,148, 26, 97, 45,155, 74,209, 66,212,191, 16, 83, 30,231,206, 16, 2,212,214,113,185, 72,120,127,209, 64,211, 69, -205, 53, 30,233, 4, 82,216,184,202, 59, 93,160,130, 64,167, 26,109, 12, 74, 43,116, 8,104, 23, 35,175,149,148,200, 85,133, 98, -218,239,212,221, 57,253, 77,197, 66,224,252,147, 0, 17,210, 94,237,221,227, 93,117, 74,246,252, 69,214,175, 94, 64, 95,216,164, - 29, 15, 97,107, 19, 6, 99,184,120, 33,126,189,181, 9,147, 53, 24,140, 98,145, 77,147,136, 60,204, 18,228, 56, 35, 77, 18,100, -112,140,117, 26,177,125,185,102, 58, 28, 49, 29, 23, 76,166, 41,174,181, 56,111, 32,120,188,132,106,181,192,244,172,220,163,211, - 25, 85, 83,114, 80,205,152,213, 21,198, 7, 66,119,190, 15,239, 85,225, 69, 10, 77,251,132,134,148,232, 88,212,181,142, 43,134, -244,169,241,187,238, 59,247, 68,199,125,134,210,177,168, 43,249,227,167, 17,185,142, 43, 5,124, 20,212,233, 60, 22,246, 44,233, - 45,117, 34,138,239,206, 73, 76,173,123, 34,182,251, 8, 51,255,149,188,160, 8,176,239, 59, 46, 41,141, 2,150,253, 47,241, 88, - 8, 18, 33, 72,165,164,240,240, 64, 75,130, 0, 90,251,228, 96, 96, 31,171, 84,122,111,190,232, 21, 27, 34, 78, 16,148, 2, 93, -244,147, 8, 27, 31,223,191, 76,172,110, 34,217,183, 29, 47,189, 16,225, 22, 87,118, 54, 57, 91, 84,156, 29, 31,225,131,138,135, -177, 60, 99, 88,100,212,181, 33,200, 88,212,109, 32, 90,209,164,192,123, 17,247,228,113,225, 69,162, 20,214,250, 30, 69, 31,199, -219,182,207,137, 15,222,211, 57,135,107, 28,131, 97, 26,247,218, 65, 16, 28,228, 89,194,104,152, 51, 26, 23, 92,216, 25,179,181, - 49,224, 51, 47,237,240, 51,215, 54, 89, 53,134,251, 71, 75, 30, 62, 60,160,106, 58,190,249,230,247,185,127,116,196,239,127,239, - 29,254,236,143,223,226,235,223,187,193, 27,119, 30,112,255,222,156,178,181,180,231,118,205, 81, 30,133,136,135, 6,127,167, 38, -127, 38,229,202,181, 93, 38,195, 2, 25,226,240,197, 19,207,141, 65,200,232,149,117,145,124,165,164, 68,101,154, 97,161, 25, 23, - 41, 27,121,194,239,189,183,207,215,111, 28, 49,187,121,196,217,173, 67, 56, 94,177, 60, 89,224,131, 35,153, 20,236, 92,219, 98, -114,253, 42,255,249, 47,190,134,218,220,101, 49,157,160,101,224,167, 82,197,219, 69, 65, 54, 72,185,250,242, 46,249, 51, 23,144, - 23,183,185, 57,235,248,211, 15, 30,240,255,157,214,124, 93,140,120,127,178,203,175,188,250, 34, 47, 92,222,228, 52, 31,242, 72, -228,108, 77,167, 60,251,201, 23,153,236,110,112, 40, 20,157,245, 12, 11,205, 32,207,120,118,152,241,153, 66,176, 88,214,124,251, -100,193,221,166, 98,103,103,141,245,103, 47, 51,188,180,205, 88,143,120,189,236,184,175,167,188,176,181,205, 21, 41, 89, 10,193, -119, 66,224,123,214,177, 39, 21, 73, 26,149,220,169, 20,180,213, 18, 99,106, 26, 23,248,205,233, 58,207, 12, 71, 92, 72, 50,238, -217,142, 3,231, 24, 42,152, 52,150,141,249,138,105, 98,145,131,117,110,216,138,169, 74,233,108,135,242,142,253,147, 3,134,211, - 77,130,113, 44,101,130, 93,206, 8, 85, 5, 62, 16,186, 38,142,225,173,193,227,241, 66,226,250, 11,179,147, 26,145, 74,134,163, -132, 38, 11,140, 22,129, 79,108,228,252,226,245,117, 62,183, 57,102,146, 37,172,117, 14,177, 90,241,126,115,198, 63, 95, 88, 78, -207, 22,124, 99,190,136, 86,167,181,141, 8,183,240, 16,186, 50, 90,243, 44,120,215, 60, 41,228, 66,196, 46,253, 41,149, 63,196, - 97,165,235, 90,198,227,156,165,113,236,138,128,116,134,169,177, 52,174, 37,224,153,183, 45,117,107,168,173,101,182,108,168,170, - 22,233, 44,141,233, 16,198, 32,138,156,255,228,202, 22,191,188,115,129, 65,170,248, 86,219,208,204,234, 15, 77,205,196, 71, 35, - 85, 85, 44,228,231, 2, 52, 33,163,128, 86, 90,139,176, 29,162, 44, 17,199, 75, 14,143, 79, 57,105,102,236,132,142,177,237,232, -154, 18,159, 38, 24,107, 8,109, 69, 22, 60,174, 51, 72,161, 48,222, 32,132,100,173, 24,179,158, 23, 12,178,130,141,124, 76,167, - 20,195,100,192,246,112,157, 11,105,193,115,195, 33,151, 7, 57,207, 72,205, 21,165, 41,148,228,106,158,179,150,165,124,122, 52, -101,223, 91, 18, 33, 80, 61,131, 94,156,119,235,177,245,142,161, 72, 46, 10,173, 63,164,144,151, 18,153,196, 68, 68,233,125,252, -218,121, 68,255,119,162,235, 34,202,214,185, 24,113,237, 61, 39, 93,199, 94,231,249, 32, 56,110,159, 54, 60,244,134,165, 20,124, -208,118,220,110, 27,110,215, 45,247,188,225, 86,215,241,102,101,120,171,108,184,163, 2,183,156,225, 77,211,114,100, 44,111,152, -142, 7,117,201, 91,182,227, 86, 91,243,118,109,120,163, 49,156, 25,203,204,122,218, 16,237,171,198, 56, 80,130,214, 70,203,173, - 49, 6,135,103,222,121,230, 62,142,241, 59,235,121,104, 12,153, 20,204,154,150,206, 90, 66, 99, 17,198,177,108, 60,151, 7,138, -220, 88,174,103, 41, 82, 4,182,149,194,123,207, 26,208,244,152, 97,107, 61,169,128,101,221,225,125, 96,225, 44,194,199, 60, 18, - 9, 40, 99, 81,157, 69, 21,154, 68, 41,116,213,162, 85,194, 21, 87,211,233,148,169,177,248,186,137,223,163, 20,250, 7, 9,113, -221, 15, 94,208,117, 15, 71,144, 50,178,141, 95,185,196,245,205,109,154,206, 51,206, 83,234, 45,199,162,118, 28,214, 11,214,147, -130, 36, 45, 40,155,134,253,178,138,251,219,164, 23,220,233, 39,251,248, 60, 21, 76,178, 20,130,195,132,142, 73,146,162,148,100, -152, 11, 76,103, 8,170,163,177,142, 84,129,112,134,164, 72, 73, 4,180, 18,238, 29, 44, 34, 67,128, 64,189,234,240,222,199, 67, -195,121,116,105, 63,198, 66,167, 79, 30,131, 1,114, 31,139, 91, 34,227,247, 75, 29,139,126,154,210,211, 81,158, 20,251, 85, 10, -117,253,100,223,254,195, 62,170, 6, 54,198,125,225,238,159, 39,213,167,174,229,253,253,176,253, 33, 33,113, 31,166,237, 61,245, -244, 18, 60, 95,175, 75, 62,145, 23, 92,215, 25,203, 16, 24, 11,193,179, 66, 62,246, 9, 19, 60,117, 15,140,185,228, 44, 15,206, - 87, 26,231,135,132,199, 63,183, 31,197,235, 2, 54, 55,226,255,189, 42,123,112, 77,143,158,173,254, 37,133,142,137,132, 32,185, -251,149,239,114,243,133,231, 41, 62,247, 26,243,213,138,143,189,244, 12,207, 93,191,196, 91,111,222,226,240,209, 35,218,178, 35, -207, 52,137,210,168, 10, 6,195, 4,103, 3,149, 51,100, 65, 70,217,130,146,228,121, 18,109,107, 62,110, 78, 91, 23,213,169,198, - 65,145, 73,140,240, 36,137, 70,117,158,144, 71,181,184,214,138,113,145, 80,202, 8,170,137, 23, 60, 65,219, 57,210, 68,243, 15, -254,240,255,103,236,189,122, 44, 75,179,244,188,231,115,219, 30, 27, 54,125,102,121,215,213,102,218, 84,147,163,129,208, 50, 35, - 18,148, 4,112, 40, 8,188,162, 0,253, 2,233, 94, 16,248, 19,116, 33, 72, 0, 37, 8,208,141, 64, 2, 26,104, 64,129, 24, 81, -131,230,104, 60,167, 77, 85, 23,171,170,203,102,101, 86,250, 12,115, 34,142,219,246, 51,186,248,118,102, 86,119, 87,207,116, 0, -129,116,129,140,115, 78,236,179,215,183,214,122,223,231,253,128, 71, 39, 71, 76, 71, 83, 30,159,156,115,111,185,224,189,187, 71, -168, 76,114,177,204,217,153,149, 44,214, 61,156, 14,207,125, 54,252,124,142, 91, 72, 21,201,190,198,238,229,248,191,163,224,110, -199, 31,255,249,207,121,225,249,231,152,190, 85,176, 63,202, 49, 34,178, 21,148,210,104,229, 98,104, 71, 22, 16, 74,160, 4,104, -163, 72,149, 68, 75,129,244,158,221,182,163,237,122, 78, 23, 39, 32, 21, 75,219, 99,235, 53,235,143, 54, 24,149,178,116,130, 43, -223,125,145,231, 94,185,200,215, 38, 91,110,221, 60,229,202,209,154,107,103,154,174, 18,156, 94,154,242,200, 42,230,235,142,223, - 53,158,159,228, 9,122,182,195,235,105,201,205,180,224,197, 36,229, 63,157,106,236,170,226,167,199,143,113,101,193,229,209, 14, -197, 60, 99,238, 45, 63,217, 70, 26,222,200,193,244,108, 77, 85,102,212, 57,180, 23, 74, 46, 79, 83,246,130,103,190, 51,230,162, -150,124,250,193, 29,146,229,130,195,124,204,120,118,129,236,194, 8, 89, 55,184,237, 26,181,233,232,131, 39,164,130, 84, 41,232, - 29,143,117, 73,147,195,105,211, 48, 49,129, 44, 73, 16, 46, 16, 68,100, 46,116, 4,230, 8,246,139,132,139, 89,134,116, 61,119, - 78, 62,101,103,239, 50,231,222,227,148, 33,145,158,170,171,121,247,147,247,105,199, 59, 96, 12,242,229, 87,241,117, 13,139,199, -120, 93,198,108,108, 41, 16, 85,141, 48,131,227,164,238,193,158, 99,117, 74,155,101, 8, 7,114,170,153,207, 19, 46,229, 41,115, -147,160, 9,220,214,154,151,172,227,181, 7,199,188,189, 94,242, 39,155,171, 96, 70, 8,147, 32,144,112,227,121,152, 78, 9,119, -238, 17, 54, 21,161, 89, 71,189,116, 15,193,200,167, 14,209, 95, 1,170,180, 29, 98,186,195, 6,152, 72,197, 18,129,219, 52,156, - 26, 25, 59, 87, 21,145,212, 77,213,227,250,142, 41,113,250,120,199,250,168,212,238, 44,178,106,121, 49, 73, 73,133, 66,234,132, -209,104,194,249,100, 77, 88,213, 67, 2,223,175,129,189, 12,112,172,224, 60, 65,201,167,118, 66, 7, 56,107,177, 52,116,231, 13, - 31,173,207,248, 95,238, 60,230,251, 38,227,198,108,204,120, 62, 34,155,142,120, 46, 27, 83,181, 53,185, 74,232,251,150, 30, 79, -146,231,160, 12,217,240, 61, 77, 90, 48,245, 30,235, 29,227,180, 32, 45, 39,216,205,217, 48,114, 15,136,113,193, 15, 66, 32, 67, - 80, 8,197,186,107,120,171,157,114,212, 52,188,183, 92,242,110,221,162,250, 14,101, 45,194,254, 82,222,251,151, 14, 72, 79, 1, -156,157,125,154, 1, 47,158,208, 63, 59,139,120,146, 11, 31, 60, 33,209,241,121,246,131, 32,174,247,172,155, 26, 13, 84,149,228, -241,195, 21,186,200,208, 50, 6, 45, 41, 41,144,168,152, 1,159, 70, 71,147, 16, 17, 61, 13,110,216,178,134, 1, 1,237,241, 77, -143,183, 30, 55,220,175, 92, 18, 35, 91,179,210,208, 5, 71,130,100, 21, 98, 79, 22,128,160, 4,222,246,172,147, 4,223, 58, 8, - 29, 75, 25, 87,216, 50,145,144,106,194,166, 67,164,138,157,214,242, 66,106,208,125,203,142,202, 16,222, 71,200,216,112,235, 47, -132, 36,211,112,180,106, 16,193,115, 57, 87,220,173, 19, 68, 84,101, 32,123,144, 74,163,140, 68,123,152,102,130,203, 74,243,237, - 82,209, 88,199,117,111,105, 83,201, 81,102,184,185,174,185,189,110, 81,140,174,253,211,191, 85,181,174, 6, 96, 74, 8,112,237, -128,231,246,102,180, 54,176, 91,150,228,166, 36, 51, 25,123,229,132, 76,104,114, 19, 57,189,163,212,144,200, 64, 97, 4,171,110, -216,121, 11, 65, 98,146,184, 71, 21,130, 34, 49,104, 9, 55,118,118, 48,105, 74,162, 2, 93,215, 83,164,146, 92, 43,166,165,198, -216, 64,179,109, 25, 25, 65,187,172, 88,111,207, 73,180,102, 81,109,185,119,118,134,237, 61,146,200,227,133, 39,161, 32, 67,241, -106,219, 33, 18,181,137,197, 45, 77, 24, 84, 80,207, 70,237,121, 22,191,134,161, 83,183,253,112,120, 81, 80, 87,241, 74,251,155, -198,240,194, 67, 57,138,190,171, 50,139, 69, 60, 77, 6,117,123, 22,197,135,102, 80,199,123, 23,213,158, 95, 86,156, 63, 25,251, - 59,207,117,173,240, 66,178, 12,129,145, 15, 84, 2, 82, 33,162, 94, 81, 64, 41, 4,159,217,150, 92, 73, 54, 82, 70, 92, 42, 3, -100,199,250, 95,180,184,205,119,153, 92, 60,164, 28,141,169,165,142, 83, 11, 61,232,225,131,143, 73,115, 90, 71,135,192, 47, 24, - 82,252,175, 30,234,228, 83, 63, 10, 31,254,236, 67, 94,255,230,155, 36, 89,202, 98, 91, 49, 46, 50,186, 16, 80,105, 66,181, 90, - 35,179,148,253,157, 49,227, 60, 65, 34,152, 36, 2,173, 37,163, 68, 81, 91,143,148,112, 48, 54,113,191, 45, 5, 10, 65,110, 52, - 58,213,200,129, 62, 55, 78,163, 32, 46,114,155, 21,125,231,168,182,150,117,211,177,222,118,212, 85,199,182,234,168,250,158,122, -211,211, 11,207,189, 59,199,252,139,191,126,155,101,181,166, 76, 13, 82, 64, 19, 98,218,215, 40, 51, 84, 46,208,235, 64, 48,192, -202, 69, 49,100, 42,163, 8,244,118, 27, 51,143, 39, 17, 88, 65, 42,224,221,138, 59,101,197,139, 87,174,112, 97,103,196, 36, 79, -227,132, 32, 49,164, 70,162, 7, 26, 34, 34,196,188,119,249,196,109,232,217, 54, 29,171,166, 37, 49, 16,188,164,107,123,200, 83, -244,197, 93, 46,124,239, 53,190,113,117,151,127,244,141, 27,220,187, 48,231,115, 41,233,203,148,139, 23,167,124,195,247,124,235, -213, 67,174, 78,225, 38, 41,123, 99,205,181, 89,193,238,106,197, 79,110, 63, 70, 20, 35, 94,191,177,195, 27, 99, 77, 18,122, 14, -131,229,110,232,184,103, 52,243,249,152,221,197,134,211,211, 37,201, 39,119,169,174, 92, 68,118,142, 63,255,171,183,249,248,143, -127,136, 93,181,220,125,120,196,173, 7,247,249,224,103,239,115,243,237,119,184,113,225, 58,203,109,207,103,143,239,243,211,155, - 55, 41,109,199,165,249, 30, 19,163,113,137,198,104, 67, 90,102,116, 94,160,205, 96,121, 37,144,116, 53,127,184,173, 57,205, 39, - 60,144, 57,191,111, 5, 63, 72, 20,183,109,203,187,109,203, 81, 93, 49,174, 59,246,132, 98, 90, 24,102,227, 9,135,105, 70, 38, - 37, 69, 89,210, 7,197, 44, 79, 57, 24, 21,232,190,227,130, 16,248, 36,103,163, 50,152,149,132,211, 37,228,134, 16, 20, 1,133, - 23,150, 32, 19,188, 84,241,179,111,162, 0,108, 91, 19,132, 96,156, 37,236,149,154,203,133,225,165, 81,206,149,157, 25,175,205, -114, 38, 46,176,168, 90, 94, 15,144,159,159,243,197,250, 28, 49,153,198,131,130, 50, 8,149,192,222, 30,228, 41,225,172,138,185, -225, 10,188,139,200,226, 32, 69,108, 24,190,252,118,207,198, 48, 74, 56, 13,138, 60,151,180,109,143, 87,154,186,106,113, 74,209, -247, 14,217,117,132,174,167,116,129,189,214, 33,109, 64, 90,199,194,134,104, 25,235, 45,251, 99,133, 73, 19,254,109,183,229,199, -173,139,158,228, 22, 4, 81,161, 46,126,185, 75,127, 34,149, 25,108,159, 66,240,180, 91,127, 10,144,241, 50,110,251,250,158,202, -121,110,182, 13,239,156,158,242,163,227, 51,206,214, 21,174,217,210,119, 61,133, 18,145,251, 32, 5, 86,104,172,209, 88,165,145, - 69, 70,151,165,104,147,146,100, 25, 34,196, 52,179, 92, 70, 63, 56,222, 51, 53,138, 84, 4,174,148, 35,198,202,112, 99,103,159, -203,163, 9,151,203,140,189, 36,101,207,104,238, 12, 9,213,191,124,223,252, 21,223,187,247, 40,239,145, 90,199,209,177,181,113, -179,107,237, 32,184,211,207,244, 7,246, 73,138,167, 4, 27,179, 38,188,235,241,189,197,225,113,193, 98,117, 66, 31,160,239, 28, -189,209,116, 70,210, 41, 73, 43, 36, 45,208, 10, 65, 27, 2,173, 20,180, 66,208, 13,177,207,164,134, 38,209, 72,161,216,155,141, -120,177, 76,121,109, 90,114,163, 24,113,161, 72,121, 62, 49, 92,202, 52,107, 2, 85,158,209, 11, 65, 72,211,232,212, 73,212, 83, -203,119, 16,146, 96,163,125, 13, 9,175, 39,130,111,102,134,239, 22, 5, 19, 2,135, 70, 49,150,177,246,109,189,139, 1,166, 33, -208,244, 49, 18, 90,133,192,219,155,154,182, 11, 8,173, 80, 34, 68, 87,145,144,131,240, 56,225,239,150, 25,111, 77, 71,188, 84, - 22, 92, 25,143,120,121, 50,198, 40,197,203,105,198,141,209,136, 61,205,111, 80,212, 97,216,207, 70, 66,154, 60,152,112, 48, 42, -216, 47, 39,140,211, 49, 62, 8,198,249, 8,163, 83,138, 36, 35, 53, 38, 78,122,197,147,221,143,167,204, 83,150, 85, 3, 74,162, -130, 68, 42, 65,161, 12, 33,120,118,202, 41,147, 84, 50,155,151, 72, 41, 40,210,140,124,148, 50, 77, 21, 35,163,112,189, 67,186, -150,126, 93,209, 53, 91,164, 20,124,177,120,200, 7,247,143,105,123, 79,158, 40, 90, 47,152, 10,141, 16,129,174,139, 30,200,129, -134, 2,205,102,200,132, 7,178, 44,238,209,211,129,150, 39,134,142, 29, 49, 16,226, 6,168,140, 28,188,238,189,143, 7,131,191, -201,246,165,242,216,253,143,179,120,241,165,102, 40,174,122,200, 86,215,131, 95,125, 80,122,118,245,175,134,227,248,200, 5,120, - 48,116,232,151,141, 97, 19, 2,115, 21, 59,245, 38,196, 92,241,147, 65,184, 83, 9, 72,125, 96, 43,158,224, 94, 19,184,254, 18, - 47,191,249, 38,167, 42,135,147, 71,112,184,199,165,217,156,217,168,164, 15,208, 46,206,226,129,198,185,103,143,231, 43, 7, 16, -191, 92,216, 7, 85,253,151, 62,126,252,103, 63,226,187, 63,248, 62,147,162, 96, 83,215, 40, 4,245,166, 97,178,183,131, 86,130, -182,245, 4, 9,227, 60, 29,242,135, 21,137, 86, 76, 75,195,180, 72, 16, 42,210,232, 38,153, 33, 47, 12,121,166, 40,141,102,148, - 27,132, 20,180,189,101, 83,117,108, 58,203,102,221,178,218,182, 8, 5,171,243, 58, 90,221,240, 52,181, 37, 77, 12, 89,153,160, -130,228,202,181, 61,250,147,115,238,172,215, 40, 4,153, 74, 81,210,179,238, 28,151, 71, 19,118,210, 52,102,237,120,112, 89,128, -179, 97,194,177,147,194,238, 48,201,209,146,189,195, 49,227, 89,193,246,106, 66,213,195,190, 73,120,225,218, 5,102, 99, 67, 38, - 20,153, 20, 3, 82, 51, 12,111,228,104,163, 43,148, 33, 81, 10, 23, 60, 54,120,210,204,176, 62,107,216,214,142,157,111,223,224, -218,215,175,177,127,105, 14, 58,190, 39,166, 77,197,159,254,228, 22,159,255,213,207,249,248, 47,223,225,248,222,154,247, 22, 21, - 63,215,130,203,227,140, 68, 38,164,101, 74, 97, 36, 63, 50, 41,226,234, 62, 85,106, 56,111,123,194, 78,193, 52, 75,152, 20, 25, - 63,157,143,153, 94,222, 99,190, 59, 69, 63,127,129,249,124,204, 97,154,226, 38, 99, 38,133,225,218,115, 87,249, 87,255,253,191, -224,163,243, 5,159, 62,122,200, 71, 15,143, 17,244,124,243,213,215,249,237,239,191,206, 15,255,232, 79,248,131, 63,250,107,142, -178,148,111, 93,188,200, 56, 53,145, 98, 38, 66, 28, 15, 6, 65, 39, 5, 93,239, 48,196,244, 67,213,215, 60,239, 27, 86,199,143, - 88, 59,139, 67,241,105, 91,243,133,150,116,206, 82,216,158, 73,223,179, 63, 74,217, 25, 79,152, 76,118, 33,201, 41,243, 9,169, -201,152,236,237,144,142,199,120,149,112,189,200,185,161,224, 34,158, 68,104, 30,202, 4, 70, 41, 88, 75,240,142, 96, 99,148,101, - 72, 4,193,197,227, 58, 58,118,212, 96, 17, 30,236, 36,103,150, 39, 28, 22,134,215,198, 5,123,123, 23,201, 76, 70, 17,122,222, -127,112, 70,102, 52,123, 2, 62, 87,146,190, 48, 72,169, 17, 89,142, 50, 41,255,236,183,222, 64, 36, 25, 31,105, 8,199, 43,130, -239, 9, 82, 16,188,136, 30, 20,239,127, 33,214, 65,168, 4, 89,230,200,222, 51, 54,146,171, 69, 22,199,241,105, 74,225, 29, 59, - 62,112, 24, 2, 7, 65,114, 73, 66,230,224,170,150,132,222, 49, 21,158,199, 54,102,181,191,183,220,242,163,170,229,125, 7, 34, -213,177,128, 21, 58,138,202,172,125, 86,216, 77, 20,147,137, 16,190, 52,118, 39,142,179,135, 80, 25,225,191, 4,120, 29,238, 43, -193,199,199,238, 1,239, 29,143,183, 91,126,118,190, 38,177,142, 69,240, 44,130,227, 24,143, 51,134, 86,198,174,182,241, 30,153, - 36, 60, 82,154,218,195, 56, 77, 24,235, 40,236, 19,125, 75, 46, 21,173,107,185,144,100,228, 38,101,119,114,136, 81, 25,249,120, -151, 66,231, 28,148, 25,187, 90,115, 37,207,240, 90,241,104, 48,109,135, 39, 22,105, 41, 17,169,137, 99,119,173, 80, 90, 33,141, - 65,105, 25,247,241, 66, 60, 45,246, 79, 70,242,226,233, 4,114,104, 58,188, 37,104, 25,101, 65, 82, 18,178, 2,143,198,151, 37, - 46, 79,112, 69,129,157,230,244,169,166,147,146, 62, 77,232,148,164, 11,146, 54, 81,116, 73, 74,151, 37,244, 66,208, 43,197,104, -148,225,132, 97,103, 92, 48,202, 50, 94,152,140,248,157,189,107, 92,204,166,236,155,130,171,197, 52,122,219,149, 98,148, 72, 54, - 94, 96,211,140,198,187,120,157, 56, 23, 11,185,134, 50, 68, 66,120,231, 61,169,119,124,179, 72,121, 77, 43,130, 12, 40, 36,107, -235, 40,140, 70, 15, 89, 23,181, 15,116,222, 13, 98, 76,207,113,219, 35,145,156,216, 88,240, 37, 10, 41, 37, 90, 40,166,163,156, -255, 48, 79,249,222,222,152, 27,163, 17,211, 34,225,181,157,125,188,209,236, 23, 99,146,180, 32, 75, 50,114,165,127,195,162,254, -164, 0,121, 79,152, 22, 60,183,183, 23, 71, 73,104, 82,173,209, 74, 99,135, 19,164,150, 42, 50,243, 7, 4,236,186,174,216,218, -142,109, 31,103, 23,233,144,187, 29,132, 32,145, 2, 47, 3,123,163, 17,121,150,147,164, 9,229, 40, 65,248,192, 72, 75,186,243, - 6,183,173,161,105, 57, 95, 46,200, 36, 52, 77,195,166, 90,113,127,211, 48, 75, 19, 42,239, 81, 1,186, 68,211,122, 71,110,210, - 56, 49,239,186,161,168, 15, 88, 91,105,134,116,180, 33,192,123, 92, 60, 91, 11, 60, 41,240,114,128,210, 40, 13, 93, 59, 92, 68, -253, 51,165,250, 87,137, 0,133,135,180,128,100, 16,225,101,201, 64,205, 35, 38,190, 37,195,247,237,186, 56,154,183,225,233,126, -232, 87,242,218,137, 72, 88, 27, 28,115,109, 56,119,158,141, 16, 20, 64, 13,172, 0, 25, 2, 33, 4,214, 18,148,144,244, 2,216, - 63,228,191,254,251, 63,224,239,255,206, 55,248,222,107,111,240,231,103, 27, 66,219,242,226,229,171, 92,158, 95,160,245, 13,139, -135, 71, 67, 92,236,128,173,125,178,143,215, 67, 13,215, 95,174,229,254, 23, 59,117, 63, 28,236,190,244,241,246,241, 25,223,120, -233, 5,202,113,198,122, 93,211,213, 45,213,102,205,106,177, 6, 33,169,155,158,170,119, 88, 11,163,210,196,236,100,163, 49,198, - 32,181,198, 72,133, 8,106,176,133,121, 26,231, 88,183,150, 77,107,169,234,158,186,141, 2,146,174,181,209, 74,102, 61, 42,149, -184, 62, 16,108, 76, 24, 83, 82, 81,164, 9,227, 34, 97,148, 27, 94,122,245, 6,219,163, 13,125,223,113,107,121,142,237, 29,199, -203, 45, 15,183, 21, 82, 10, 30, 85, 13,253,186, 97,200,187, 4, 35, 72, 15,114,174, 29, 78,152, 21,138, 67,142, 0, 0, 32, 0, - 73, 68, 65, 84, 31,150,236, 79, 11,140,132,157, 60,231,165,157, 67,190,123,237, 37, 70,249,132, 44,215, 92,156, 23, 4,225, 81, - 33, 80,119,150,213,182,167,243, 30, 45, 96,150, 27, 46, 79, 51,118,139,132, 84,203, 33, 69, 44,161, 40, 19,150, 77,199,213,231, - 15, 57, 62,223,242,240,223,221,225,214,159,191,207, 31,254,240,207,249,231,255,247, 95,241, 71,255,211, 79,121,255,147, 47,248, -232,100, 65,187, 61,162, 93, 45,248,235, 31,255,140, 31,253,228, 61,118, 95,121,147, 99,165, 88,164,154,147, 91, 71,124,240,255, -252, 25,205,186,230,209,221, 71,144,100,236, 94,156,177,127, 80,240,199,143,106, 92, 22, 35, 84,123,239, 49,206,161,246,103,232, -193, 50,179, 62,171,249, 81,117,151,160, 20,173,209,124,251,210,132,215,111,188,194,119,222,250, 58,231,219, 13,255,195, 95,188, -141,223,223, 33,228, 57, 50, 40, 46, 22, 41,120, 71,237, 2, 5,130, 7,231,167,156,110, 27, 84,232,105,186, 22, 25, 28,216,150, - 18,205,101, 9,163,234,140,251,206,242,184,119,220, 10,146, 92,198,110,233, 85, 35,249,123, 7,151, 25,151, 51, 72,115,102,211, - 25,203,196,224,141,198,148, 35,188,210,140,178, 20,227, 35,192, 72, 43,208, 72,166, 74,115,150, 20,136,114,132,175, 55,241,144, -140, 32,108,155, 56,114, 14, 1,130,138, 17,201, 62,110,192, 93,112,228,211, 17,137, 18, 92, 20,129,185, 4,223,119,124,246,197, - 99,254,223,247, 79,152, 20, 10, 45, 5,255,237,215,223,224, 13, 2, 47,159, 31,113,124,112,133,255,238,197, 75,124,239,219, 47, -241, 82, 81,242,197,217,154, 59, 71,199,248,229, 54,202, 78,132,199,247,207,220, 33, 79,174,254, 39, 52, 55,105, 61,109,237, 57, -176,142, 73,170, 56, 72, 19, 46, 5,197,190,148,209,175, 46, 5,161,243, 92, 78, 13,157,130, 44, 77, 17,157,229,139, 44, 39,232, - 12, 89, 85,216,222, 34,108,204, 24, 16,105,130, 20, 32, 50,131,108,101,180,146, 89,144, 34,196,174,245, 73,183, 62, 20,115, 49, - 88, 85,159,250,188,127,137,215, 30,158, 82,255, 52, 46,254,111, 56, 9,159, 52,150,159,214, 53,183,132,228, 76, 72,154, 68, 18, -164,160,149,154, 38, 73,249,184,169, 57,114,158, 50, 77,201, 16,104,231, 49,193,227,250,150,190,175,208, 4,198, 58,229, 96,122, -137,164,152,147, 77, 14,209,217,132, 68, 23,104, 85, 48, 74, 83,114, 25,176,137, 36, 45, 18,250,178,164, 10, 10,100,202,116,154, -209,146, 96,138, 34, 90,152,103, 83, 52,154,201,206, 4, 47, 18,246,230, 99, 58,157,163, 70,211,136,253, 72,199, 8, 51, 4,129, - 25,160,200, 65,103,132, 44, 33,148, 35,194,116, 70,152,141, 9, 23, 15,152,204, 39,136, 34, 71,229, 41,110, 84,210,102, 57, 86, -107,250,124, 68, 95,148,116, 73, 66,159, 23,244, 73, 14, 38,101, 60,158, 49,205,243,120,200, 28,141, 24,229, 83,110,236,204,121, -181,220, 99, 87,103, 28,100, 5, 19,101,200, 84,130, 0,234, 16,187,231,181, 12,220,105,162,246, 34, 12,247, 98, 37, 5,116,150, - 61,169,227, 33,223,122,174, 26,216,241,158,107,153, 38, 21,160,137,133, 93, 6,168,137, 49,212, 50, 8, 30,247,150,142,168, 41, - 90,224,185,211,247,180, 94, 34,117, 64, 50,116,233,198,240, 15,166, 25,223,223, 25,147, 37,154, 75,101,198, 52,207, 9, 2, 70, -163, 29,116, 86, 98,178, 49, 82, 39,236, 77,102,191, 97, 81, 31,144,127,136, 4,150, 21,199,169,225,185,221, 61,188, 15,164, 73, -142, 36,112,190,222,146,153, 4, 31, 60, 18,168,187,134,109,215,224, 67, 96,209,212, 32, 60,174,247,244, 77, 71, 63,228,210, 86, - 3,102,212, 9,197,245,221, 41, 69,153,162,131,163,175, 26, 66,223, 96,143, 55,172,207,207, 89, 86, 43, 74, 36,167,182, 5,219, - 80, 87, 53,181, 13,212, 66,224,172, 69, 26,131, 71,160, 6, 81, 90,245, 36,146,117,181, 29, 80,170, 79,246,250, 14, 76, 10,179, -114,200,251, 13,177,224, 38,146,194, 24,250, 16, 67, 85,250,224,227,223, 75,224,100,245, 12, 55,251,203,133,216,251, 33,212, 37, -141,144,246,100,240,185,167,195,225,225,201, 76,150, 65, 60,183,173,227,191, 7,251,213, 48, 26, 33, 56, 7, 14,181, 98,229, 29, - 86, 4, 10,169, 88, 56, 79, 39, 5, 91,215,145, 41, 67, 67,192,136,136,120,172, 58, 5, 23,198,252,147,127,240, 59,140,178,130, -113,105, 56, 59,237, 41,199, 37,191,251,189,239,243,234, 75,135,140,165,226,157, 15, 62,136, 35,120,223, 15, 62,209, 65, 45,111, -109,124,156,246, 75,190, 20, 63, 16,246,212, 19,225,160,248, 21,199,169,187,255,152,227, 80,243,252,181,171,140,198, 25,213,182, -102,189, 58,199, 89,203,226,232,152,114, 50, 99,113,180,164,235, 3,143,207, 43,156, 84,209,154, 38,163,154,188,183,241,162,109, -122, 71,213, 89,186,222, 71,208,140,136,129, 42,125, 23,255, 44, 85, 28,223, 11, 41, 81, 66, 70, 76,112, 18,133,132,206,121,172, - 8,120, 27, 56, 59,175, 25, 21,154,114, 52,230,230,157,187,124,124,255, 12, 43, 61, 87,230, 19,206,207,106, 42,233,217, 43, 12, - 86, 43,156, 13,144,107,152,100, 76,203,148,121,106,216, 73,115, 70,105, 78,153,102,104, 17, 29, 24,227,209,140, 36, 41, 88,157, - 55,236, 29,230, 20,169,166,178,142,214, 5,214,141,197, 57, 75, 38, 4,243,194, 48,203, 52,153, 86,116,214,209,244, 30,169, 37, -222, 7,150,171,138,147,187,231, 60,120,255, 38, 15, 63,253,148,197,250, 12,156,229,235,175,191,194,254,171, 25,159,157, 44,162, -135, 54, 83, 60,191, 59, 6,224,222,201,150, 63,253,232, 35,178,215,191,142, 74, 21,221,182,225,237,255,237, 15,120,240,224, 14, - 15,190,184,199,163,163,199,236, 95,185,140, 29,101,248, 47,238,242,127,252,203, 31,178, 56,110,233,122,168,148, 98,161, 5,251, - 72,234,222, 33, 47, 77,248,247,127,240, 61,254,189,255,248,183,121,235,173,111,240,131,139, 87,185,171, 39, 28,125,248,115,254, -244,131,207, 57,214,138,214, 7,130, 82,212, 68,160,206,197, 44, 33, 39,176, 94,173, 88,172, 23,116,237, 26,108,135, 20, 80,109, -150,140,178, 17,179,201, 46, 23,139, 25, 55, 38,123, 60,167, 28,157, 80,156,214, 53,243,209,132, 81, 94,240, 79,118,247,121,225, -240, 2,153, 73,176,105,129, 79, 18, 86, 89, 70, 87,148, 88, 99, 40,115, 51, 76,112, 12, 99, 35, 41,133, 36, 81,158, 44, 81, 36, -102, 12,197,136,229,100, 10,213, 34, 30,146,141,132,109, 3, 73, 70,112,245,112,232,126, 6,198, 58,239, 90,238, 8,131, 21,146, -227,147, 37, 71, 39, 43,254,232,139, 5,127,178,108,216,109, 45, 59, 66,208, 28,157, 48,109,107, 46, 4,201,155,205,130,242,120, -193,230,243, 71,252,228,189,119,121,240,248, 46,155,198,178,233, 33,116,158,176,117,132, 85,207, 19,127,169,208,209,154, 37,123, -141, 68, 32,203,146,209,225, 14,106, 54, 98,111, 58, 34,241,129,203, 4,114, 23,200,165, 34, 13,158, 84, 27,122,239, 9, 82,146, - 88, 79,146, 38,140,172,231,174,245,200,209, 8, 89, 53,113, 52,223,244,168, 68, 33,147, 4, 25, 52, 50, 85,200, 36, 71,160,227, - 40, 90, 12,120, 16,231,159, 65, 93,134,110, 93,252,210, 61,233, 87,139,186,140,137,103, 90,225,180,196, 5,112,194,115,190,108, -248,162, 15, 28, 97,217,104,184,217, 87, 28,185,142, 19,109,232,156,165,212,134,194, 58,186,182,163,111, 43,182, 93,141,243,113, - 20,126,169,152, 80,230,115,178,201, 46, 58,203, 80, 38, 31,250, 18,133, 80, 26,215,111,163,115, 33, 85,204,138,148,157,210, 48, -205, 52,179, 34,101,119,158,179,208,134, 23,230, 37,123,153,226,187,251, 51, 94,204, 50,190,115, 56,231, 98, 89,240,214,165, 61, - 94,223, 41,121, 99,127,135, 11,147,168,103, 57,151, 9, 54,207, 98,198,249,116, 68, 24,151, 48, 41, 32, 47, 9,179, 17,255,249, -225, 62, 95, 27, 79,248,209,239,255, 27, 92,170,249,135, 47,191,202,231,206, 82, 37, 25, 78, 42,172, 49,184,124,140, 72,114,118, - 76,202, 44, 43,153,167, 25,227,180,160,212, 9,121,154,147,231,134,125,157,113, 61, 45,153, 61,109, 84, 29,141,119,148, 58, 69, - 73,201, 73, 87, 83, 7, 71, 23,224,220,197, 41, 93,112, 81, 37,176, 47, 5, 91,231,226,161,211,122,174,164,146,151,181,100,162, - 53, 77,231, 80, 18,180, 16,180,222, 51, 23,113, 81,124,106,123,142,156,167, 7,206,122,135,211,134, 5,129,166,143,150, 64, 53, - 76, 51,190, 63, 75,121, 37, 79,184,150,231,100, 90, 49, 75, 51,210,164, 32,207, 71,244, 82, 67, 26, 83, 67, 71,249,136,206,100, -191, 97, 81, 79, 74,200, 39, 48, 25, 67, 94,224,140,102,213,117,148, 73,194,209,118, 27,177,126, 74,209,217, 14, 27, 58, 92,112, - 4, 33, 88,247, 91,206,170,138, 85,223,209,109,122, 88, 14,163,231,222, 15, 10, 87, 79,221,118, 60,222, 86,164,210, 97,108,199, -227, 71,143, 25,245, 91,206,110,222,226,248,225, 61,170,237,134,164,107,233, 19, 77,127,126, 66,221,247,116, 85,135, 48,138,179, -222,211, 43,205,198, 7,186, 1,212,223, 9, 73,174,117, 4,104, 56,192,110, 33,203, 99,202, 28, 33,142,170,181,138,167,190, 52, -254,176,140, 16, 52, 46, 48, 49,154, 78, 4,114, 33, 99,252,251,166,141, 29, 93, 87, 71, 77,192,175, 43,236,195, 69, 77,145, 70, - 98, 93,211, 61,227,220, 19, 24,178, 4, 97, 84,192,114, 29, 59,245,175,234,252, 7,117,206,227, 16,168,165,100, 44, 20,139, 39, -240,194, 16,152,232,132, 51,107, 73,129,199,192,152,192,170, 11,160, 53,175,223,184,194,206,180,228,147, 91, 11,126,252,225,135, -124,253,133, 55,249,238,215, 46, 51,202, 51, 28, 29,127,246,215, 31,196,239,221, 91,144,238, 89,138,222,151, 11,186,181,177,160, -155, 47, 57, 29,158, 78, 50, 6,203,158, 29, 14, 76,244, 44, 62,189,203, 66, 90, 94,126,233,121,102,187, 99, 64, 99,109, 79,221, -108,184,119,255, 30, 88,135,109, 61,203,229,150,243, 85,195,233,121,195,218,122,172,141,190, 89,231,163,195,194,135,128,145,177, - 8, 10,169,201,180,196,203,216,157, 40, 35, 16, 66, 34,165, 36,205, 53,133,137,130,196,182,237,233,157,195, 59,135,240,129, 64, - 32, 47, 82,138, 60,165,171, 60,125,191, 98, 99, 61, 7, 69,201,238, 36, 99, 55,207,152,100, 5,175,236, 31,242,218,213, 43,188, -121,237, 26,175, 93,188,204, 97, 57, 66, 4, 79,166, 19, 38,217,148,131,209, 62,179,241, 30, 69, 54,102,182, 51, 39, 73, 36,105, -154,113,176, 59, 97,111,162, 88,111, 45, 39,171,150,186,235,169, 91, 75,221, 91,172,139, 0,139,101,221,115, 92,117, 3, 9,174, -103,185,109,208, 82,112,113, 86,240,209,199,183,233,250,142, 16, 4, 35,109,184,183, 60, 33, 79, 51, 14, 14, 71, 60,114, 29,155, - 91, 43, 62,187,189,224,161,119,120, 35,232,110,159,209,126,251,155, 92, 26,101,236, 28,140, 56,249,236, 19,148,239, 57,216, 27, - 65, 87,113,231,193, 49,207,141,103,188, 46, 60,147, 44,229, 95,253,243, 31,242,243,191,124,155,183, 63,250, 16,125, 86, 99,179, - 25,166,245,140,171,134, 31,254,233, 59,236, 23,134,145,150, 20,179, 17,238,227, 79,241, 67,222, 64,109, 3,199,206,226, 69, 64, -170, 56,169, 58,175, 26, 90, 91,113,220,108, 57,107, 43,130,119,232, 32,144,193, 33,138, 49,105,146,241,234,124,143,121, 81, 34, - 19, 67, 62,158,115, 56, 46,185, 50,157,242, 87, 31,188,199,215, 14, 46, 51, 25,229, 92, 48, 57,107,161,168, 68, 32, 76,198, 52, -243, 49,173, 16, 84, 38, 35,205, 13, 65, 41, 14,159, 16, 32, 59, 75,131, 64,107,195, 74, 40,242,217,156,231,167,187,124, 97, 74, -168,150,132, 60,137,211,182,103,180,249,248, 62,214,106, 0,154, 88,108, 23,184,237, 61, 39,157,227,167, 85,199, 23,210,115, 41, - 79,184,150,104,174,171,136,236,157, 27,141, 14,150,169,131,169,183,204, 17,220,208, 57, 47,107,133, 10,150,119,122, 31,133, 84, -101, 70,152,150,188,240,252, 14,103, 58,143,108,141, 81,142, 24,101,177, 32,239,207,201,247,118,184,182,127,153,217,236,128,249, -116,159, 92,107, 70,193,146,185,192, 54, 56,140,146, 36, 73, 74, 34, 6,199,128,128,233,222,140,217,188,228, 40,205, 81, 23,247, -163,202,185,239, 81,235, 10, 57, 88, 48,149, 78, 80,169, 70,149, 41, 50,201, 72, 38, 99,176, 49, 66, 86,120,135,124, 50,138, 15, - 1,225, 37,226, 75,147,181,240, 43,133, 93,226,181,138, 68,104,173,113, 42, 90,245,172,244,184,174,230,188,246,124,190,173,169, -145,156, 40, 88,245, 14,163, 18,232, 43,166, 72, 82,235, 88, 85, 11,100,176, 84,206,145, 4,199,133,108, 74, 49,222,197, 36, 57, -114,176, 31,203,201, 24,130, 36,244, 29, 65, 6, 26,122, 58,165,176, 18,210, 36,193, 72, 73,145, 37, 36, 70,147,103,134,151,139, -140,239,141, 74, 94,204, 83,158,159, 76, 25, 39, 57,175, 76,103, 76, 76,193,149,162,228, 32,205,153, 37, 9, 23, 70, 57, 23,114, - 77,154,105,202, 82, 51,202,114,108,150,209, 25, 67, 57, 46,248,135,243, 25,223,158, 28,242,252,104,135, 71,191,243, 22,255,205, -243, 47,243, 63,102, 19,190, 31,122,110, 11, 73,167, 13, 33,201, 73,116,202, 78,146, 48,214,154, 50, 81,200, 32, 73,132, 32, 49, - 5, 82, 72,118, 76,202,142, 50,236, 73,197, 60, 43,105,251, 14,109, 18, 76,136,218,171, 46, 56,106,239,121,228, 90,142,154,158, - 42, 68, 59, 93,240,158,113, 8,180, 34,218, 16, 19, 1, 29,130, 66, 6, 14, 6,235,116, 98, 20, 59, 34,174, 24, 82, 25, 27,151, -202, 7, 62,235, 45, 39,222,179,176,150, 45,130,181,119,116, 38,234,127,100, 26,119,252,215,199,138,151,115,205,243,121,138, 20, -130, 81,154,160,164, 38, 49, 41, 38, 77,192, 36,104, 19,139,122, 35, 98,224,213,223, 94,212,181,142,214,180,217,124, 16, 97, 9, - 16,138,106,213,112,127,185,166,182,209, 7,152, 36,154,117, 91,177,109,107,182,237,154,117,191,102,177,173, 56,174, 42,186,227, - 13,156,157,199, 98, 94, 85, 81,141, 93,213,136,237, 54,170, 89,235,134,187, 15, 79,120,239,227,219,124,120,255, 17,243,163, 99, -214,143,207,201, 60,200,161,227, 95, 29, 47,208,206, 81,183, 61, 8,168, 2, 60,106, 44, 91, 17,208, 8, 66,162,249, 79,190,241, - 61,238,159, 60,196,250,128,147,192,182,130,218, 66, 91, 71, 65,156, 28, 40,115, 58, 5, 99, 40,202,148,174,235,201,211, 20, 45, -161,114,118,160,155,129,237,226,206,132,109, 29, 11,221,223, 52,134, 71,193,116, 52,236,238,135, 81,126,154, 12,150, 64, 61, 20, - 66, 11, 65, 32,148, 66, 84, 27, 68,111, 17, 95, 65, 92,122, 34,116,235,172, 98,173, 2, 90, 68, 14,242,121, 8,232, 16, 34,164, - 14, 34, 54, 83, 39,116,218,209,183, 29,231,139, 19,126,244,233, 61,254,221,237,207,185,125,255, 24,161, 36,207,221,184,206,106, -185,225,230,199, 15,120,239,131, 79,160,170, 65,182,241,249,200, 47, 89,225,244, 19, 33,202, 64,201, 99,176,121,241, 37, 74,223, -147, 36, 58, 63,168, 86, 92,124,218, 39,159,220, 65,151, 25,207,189,248, 28, 89,145, 34,101, 66, 94,142, 25,143,198, 24,173, 57, - 95,157,147,153,148,221,249, 4, 43, 3,182,237, 89,174, 42, 64,144,164, 26, 57,236,168,227,168, 73,160,181,192, 40, 73,145,106, - 18, 19,137,116,153, 49, 24, 19,109,113, 10,129, 35,142, 44,181,150, 24, 36,163,113, 74,150, 27,250,214,211,244,129,157,249,156, - 36, 24,246, 77,201, 40,201,216, 29,237,112,101,231, 50,251,179, 3, 82, 41,201,211,130,188, 40,200,211, 17,163, 98, 66,130, 97, - 50,218,225,240,224, 34, 87,175, 95,226,107,111,220,224,107, 47, 95,225,205, 23, 15,249,250, 75, 23,153,239, 77, 16,202, 48,201, - 60, 77,107, 99,247, 69,244,172, 55, 85, 79,135,199, 9, 65,229, 28,221, 32,124,169,186,136,225, 61,152, 22,188,114,121,206,195, -227, 45,119, 31, 61,102,103,186, 67, 49, 26,209,185,142,207,142,143,104,123,203, 56, 55,164,179,148,116, 47, 35,201, 36,223,184, -178,207,115,215,230,220,122,251,109,158,251,238,183, 40,115, 77, 62,158,115,247,157,247,200,140, 36,207, 82,150,103, 43,116, 83, -225,102,187, 92,254,254,107,140,115,205,135,239,223,102,188,109, 41, 55,231,188,240,234,235, 28, 26,193, 97,154,240,205,221, 61, -206, 22, 13,237,195,115,206,190,120, 72, 21, 28,202, 5,250,222, 18, 46, 93,229, 19, 39, 8,213,150,107, 73,202, 89,189, 65,119, - 53,139,106,195,162,238, 57,204, 52,243,124,196, 56, 47,240,166,160,204, 10,174,150, 35,174,152,148, 34,207, 88,151, 41, 91,239, - 41,138, 18, 35, 53, 95,191,246, 28, 82,193,121, 8,164,147, 9, 15,157,195,141, 74,150,169,230,204,104,164,150, 56,161,232,144, -236, 22, 6,225, 97, 44, 5, 53, 49,102,119,225, 61,169, 76,121,253, 96,204,127,121,117,204,126, 49,229,199,157, 64,108, 22,113, -181,149,165,241,194,211, 89,196, 52, 59, 16,122, 0, 48,185, 14,183,109, 57, 9,158,115,225,153, 11,201,141, 76,113, 45, 53, 28, - 26, 69,153,106,180, 81,140,147, 4, 58,203,193,100,196,100,186, 79,158, 23,228, 74,147, 25,205, 50,133, 59,121,130, 43, 82, 94, -187, 52, 38,207, 12,201,200,176,108, 3,210,129,148, 9, 98, 90,240,143, 47,206,248,230,206, 46, 59,211,125, 70,229,136,185, 78, - 64,101,236,248,232,165,158,100, 25,173,139, 97, 71, 94, 66,162, 20,179, 23, 94, 35,187,244, 18,187, 47,190,201,213,107, 55,184, -180,179,207,165,253, 67,100,230,216, 10,129, 92,108, 80,117,143,202, 13, 42, 77, 81,227,130, 23, 15,246,249,123, 55, 46,243,234, -193,152,135, 94, 96,183,219,193,227, 29, 6,133,248, 87, 11, 93,159, 29,125,124,100, 60, 40,249,180,160, 63,241,222, 59, 15,206, -117,184,117,199,106,189,230,180,182, 28, 47,215,156,250,154,188,173,144,109, 5, 93,133,113, 29,171,170,198,225, 24, 11,201,229, -209, 46, 70, 36, 36, 73,142, 42, 75, 40,226, 90,209, 91, 75,111, 59, 58,223, 83, 7,203, 90,120,250, 97,122, 58,206, 18,114,163, -104,133,228,235,101,201, 85,165,249,198,120,202, 72, 38, 76,147,132,189,108, 66, 80,154,195,108, 76,105, 10, 70,218,112, 49, 31, - 35,131,103, 47, 43, 41, 18,205,200, 24,178, 84, 51, 79,227, 8,250,141,188,224,149,209, 14, 55,202, 57, 66, 74,190, 99,226,234, -243, 37,223,225, 85,164,105, 30,251,152,126, 55, 1, 74,157, 70,235,157,212, 24,161,208, 42, 1, 17,200,211, 20, 27,122, 46,153, - 52,254, 28,131,167, 24,210, 73, 91,231, 72,141,102,221,183, 44,250,150, 19, 34, 6,246, 92,128,117, 14,233, 3,162,181,140,156, -163, 31, 68,205,137, 8,172, 16,236, 9,207,133, 68,115,160, 20,189,119, 44,109, 28,213,111, 61, 28,133,192,167,189,163, 3, 90, - 1, 94, 10, 86, 74,178,237, 37,157,209, 8,165,216, 77, 52,215,114,195,235,121, 74,130,192, 11,193, 78,154,129,214,148, 89, 74, -167, 12,163,108, 66, 67,192, 10, 65,171, 20, 45,242,111, 43,234, 26,242, 18,230,243, 65,232, 37, 98, 39,234,135, 96, 22,231,105, -125,207,178,179,100, 26,186,224,144, 74,177,172, 42,142,235,154,199,143,150,184,199, 3,198,117,187,133,122, 27, 59,102,219,197, - 95,251, 54, 50,144,235, 77, 76,105,170, 54,132,186,102,234, 36, 47, 29,236,176,236, 59,164,209,116, 3, 19,183,147, 18,229, 60, -107, 33,216, 75, 18,238,160, 56,173,106,132,144, 96, 61,159, 31, 61,196, 5, 31,187,246,174,141, 20, 55,250, 72,192, 99,232, 66, -251,161,163, 30,231,244,141,101, 84,150,108,218, 22, 51,248, 64,219,206, 34,108,244, 75,211,181,195,213,223,199,199,236,134,240, -151, 95, 46,236,154,232,209, 87,102,240,245, 63, 17,176, 13,100, 62, 37,163, 16,166,107,227,191,119, 62, 42,235,127, 73, 21,250, -180,168,135, 0,210, 83,106, 77, 39, 33, 23, 34, 54, 51, 65, 48,214,154, 62,120, 52,130, 99,239,216, 19,134, 76, 56, 30, 45, 55, - 60,120,184,102,217, 68, 15,250,241,221,251,124,186, 88,114,235,254, 57, 63,124,231,231,112,239,193,240,216,186, 65,252, 38,191, - 4,191,249, 50,227,241, 75, 93,250,147,130,254, 36,208,135,129, 91,224, 35, 24,230, 73, 0,243,237,143, 62, 37, 45,115, 94,126, -237, 69,164, 22, 84, 85,220,177, 23,163, 17,222,247, 52, 93, 77, 62,158, 34,125,236,198, 43,219,209,214, 61, 89, 97,168, 90,135, -181,129,118,128, 5,101, 70, 12,137,107,146,204, 68,174,123,162,163,167, 61, 75, 35, 36,168, 72, 12,137,145, 20,153, 97, 50, 74, -217,153,229,236,143,114,116,102, 72, 83,205,238,180,100, 50,157,144,148, 99,164, 77, 41,179, 73, 60,104,204, 38,104,149, 82,148, - 37,229,100,130,239, 28,163, 73,201,165, 43,151,120,225,185,171,188,244,194, 33,175, 94,155,113,125,191,228,112,148,178,172, 60, - 39,149, 37, 83,129,159,124,252, 41, 31,125,122,139, 11,135,115,186, 16,109, 74, 1,232,156,197, 89,199,170,238, 56, 91,214, 44, - 87, 53,155,117,195,114, 81,177,218, 52,224, 3, 51,173, 57, 93,183,172,214, 13,203,245, 25,206, 58,164,210,104, 17,184,119,182, -161,183,158,113,110,112,206,243,112,213,209,245, 45,207, 31, 92,224,130,134,254,249,151, 40,210,132,189, 11,115,254,206,223,125, -139,127,253, 71,127,129,198,146,164,138, 59,103, 43,108, 82, 50,187, 48,231,229,215,111,144, 9,207,189,229,130, 43,187, 5,147, -170,230,181, 23,110,160,100,244,212,103, 70,113, 84,181,244,125,141,245,129,102,179,193,246, 45,119, 31, 63,224,139,119, 63, 34, -236,205,249,189,107, 47,242,163,197, 9,250,236, 20,223, 91,174,204,199,204,243, 49,187,229, 4,159, 21,140,138,146, 81,146,112, -209, 7, 14,147,132, 10,207, 23, 65, 18,140,166,114, 1,202,156, 44, 79,163,151,118, 50, 97, 45, 5, 39,227,156, 83,239, 57,107, - 29,105,158,208, 33,216,108, 58, 92, 31,181, 19,107,101,184,231, 2, 43,157,176,242,154, 66, 27,124,219,241,143, 47,141,184,190, - 63,166,212,112,115,107,216, 14,221,210, 75,218,177, 40, 75, 84, 97, 8,153,161, 40,115,108, 63,192,150,140,140,141, 67,223, 16, -218,134,149,183, 8, 23,152, 75, 73, 39, 60, 34, 79, 40,166, 41,218, 24, 18,173, 24, 21, 69,212,120, 36, 57,141,117, 44,148,100, -101, 18,198, 38,176, 78, 52, 70, 74,178, 84,115, 94, 91, 54,181, 5, 37,249, 71, 23, 10,254,233,197, 57,191, 59,223,225,107,229, -156,153,210,156,166, 57,157, 16, 92, 8,129, 52,120,114,111, 89,119, 29,101,145,177,117,142,253,162,160, 30,205,209, 7,215,217, -185,124,133,253,113,206, 94, 86, 32,146,168, 50,223,223,217,231,242,100,204,168,148, 44, 87, 21,186,181,232, 50,198,170,254,222, -245, 23,248,173,253, 75, 76,138, 57,171,212,113,212, 6,100,211, 33, 91, 79,220,172, 63, 41,236, 79, 70,111,191,104,193,123, 86, -216, 45,222,232,167,183, 51,175, 98,172,177, 87, 34,170,253,113,132,243, 53,225,248,132,118,181,229,222,189, 5,247,206,150,152, -174, 70, 88,139,235, 58,148,247,140,145, 28,152,132, 60, 31,163,179, 18, 97, 36, 66, 39,248,182, 39,216, 46,194,110,250, 45, 15, -251, 13, 27,192, 72, 65, 47, 20,185,140,174,158, 23,178, 28, 21, 60, 95,203, 70, 84,222,179,151,143,208, 58,197,152,132, 84,103, - 72, 19, 15,241,133,206,232,125,199, 44, 25, 97, 67, 20,252,153, 36,165, 39,144,106, 69, 34, 4, 87,139, 9,215,210, 18, 7, 8, -101,112,193,161,148, 96,150,166, 44,173,101, 65,207,137,139,148,186,204, 40,100,240,104,169,209, 33,234, 94, 52, 2,149,168, 56, -169, 19, 10,239, 45,123, 58, 37,115, 49,181, 45,174, 81, 4,125,223,113,220,213, 60,234, 59,142,125,207,178,110,169,188,163,222, - 84,120,231, 72,136,233,141,115, 37, 41, 8, 44, 3, 36, 14,238,123,193,124,144,250, 87, 66, 48, 29,178, 46,238, 5,207,207, 26, -203,137,136,119,227,141,128, 70, 8, 86, 8,182, 14,102, 25, 36, 8,156,150,124,215, 40,114, 21, 72,165, 34,151, 10, 37, 97,100, - 12, 94,106, 50,157, 18,148,198, 73,195, 86, 42, 92, 16,212,206,253,109, 69,221, 67, 49,137,197, 41, 75,145,105, 74,158,153,184, -115,126,194,126,223,214,224, 61,139,147, 21,167,189,231,164,173, 88,220, 63,166, 62, 90,195,253,251, 49,106,175,105,127, 45,113, - 78,124,197, 8,122,108, 20, 78, 25,198,121,202,102,216, 73, 97, 20,161,237,177, 70, 83, 40,205,143,219, 22, 41, 29,141, 84, 52, -125, 28,127, 58, 31,227, 63,159,250,192, 87,213,160, 54, 31, 32, 51,142, 24,161,234, 93, 76, 72,155, 79,232,186, 14,169, 4, 14, -137, 36,224,196,192, 77,223,110, 99,145, 14,196, 68,165, 39,187,102,220,175, 22,117, 33,162, 32, 47, 49, 81, 5,255, 36,110,240, - 75, 4,168,104,155, 27,168,119, 74, 12,135, 26,251,171,150,143,167,248,215,104,191, 16, 66,209,136, 64, 75,160, 28,138,236,142, -138,202, 78,124,160, 35, 48, 21, 9,210, 58, 54,161, 39,172,182,209,166,101, 27, 86,189,229,168, 90,194,249, 42, 30,168,156, 69, - 72,251,139,223,199,126,169,176,243,165, 46,253, 73, 97, 87, 67, 65,127, 26, 43,203, 51, 55,192, 19,201,128,132,207,222,255,152, -253, 75, 23,185,252,220, 37,130,144,241,166, 93,109, 98,206,177,119,156, 30, 69,246,248,225,165,125,210,196, 32,165, 98,127,146, -179,173, 45,219,206, 98, 18, 29,173, 98,131,242, 88,105, 25,119,234,131, 30, 40, 51, 10, 41,100, 28, 83,132, 24, 96, 49, 42, 82, -178, 52, 33,211,138,162,212,164, 3,163,160, 72, 37, 89, 98, 40,138, 4,167, 3,206, 90,140, 82,228,217,152,209,180, 36,201, 12, - 74,105,188,179,204,103, 35, 46, 94,153,114,105,167,224,202, 44, 35, 79, 52,141,245,124,113,222,242,120,189,225,232,248, 17,111, -191,251, 14,159,223,249,152,119,111,221,230,133, 27,215,153,143, 51,188,139, 81,172, 77,211, 83, 55, 29, 77,213,179, 89, 54, 52, -155,134,237,186,162,173,163,117,241,112, 82,208,184,192, 23,199,231,204,247,247, 64, 26,206, 54, 75,214,237,134, 68, 27,146, 52, -208, 59,143, 11, 1,105, 36,153,150,172, 58,203,221,229, 25,214, 89,142, 63,187,197,139,223,120,157, 43, 70, 49,145,138,249,213, - 43,172, 62,191,137,147, 49, 69,110,181, 56,229,185,195,203,204,118, 70, 92,127,245, 6,133, 72,120,251,147,155, 76, 83,193,119, - 94,123, 61,142, 97,133,224,104,211,114,210,247,156,110, 54,252,235,144,113,195, 85, 60, 88,157,241,227,179, 83,154, 71,167,240, -224, 1,223,159,103,124,162, 10, 30, 39,154,229,135, 15,120,245,234, 30, 89, 94,146,103, 5,118,160, 96,181, 82,145, 9, 65,112, -158, 62,201,184,217,244,164,211,130,109, 27,185, 1, 73,162,152,206, 74,156, 13, 44,156,228,124,219,114,182,110,232,170,138,243, -243, 45,235, 85, 67,150, 72,232, 58, 10, 9,171,198, 67,154,210, 39, 26, 53,206, 89, 39,134,165,147,172,130,229, 18,240,251,103, -150, 59,125, 20,118,190,216,175,113,218,112, 65, 9,190, 57,155, 96,140,231,226,184,164, 44, 37,139,173, 7, 23, 16,125,253,165, -123,137,227,204,118,124,216, 86,188, 93,247,172,164, 67,105, 67,105, 34,223, 94, 5, 71,240, 61,155,174,230,147,174,226,166,132, -165,237, 81, 54,130,100,214,189,163,233,123,238,156,117, 32, 5,151, 71,134,223, 27,165,252,214,108,198, 56,203, 81,206,210,120, -203,231,213,134,190,222,162,155,138,108, 16,147,101, 66,198, 12, 4,163,217, 72, 77,153,164,152,233, 1, 7,187, 51,198, 69,206, -220, 40, 10, 41,240,214, 49, 73, 82,102,243,125,158,219,191,198,155,151, 46,243,202,254, 28,187, 62,231, 82,154,243,189,157,125, - 46,236,204,240,198,112,167, 17, 60, 76, 4, 74, 39,200, 52, 65, 56, 27,239,109,222, 35,126, 81, 20,243, 11, 35,248,167,157,123, -128,160, 36, 94, 69,175,187,215, 50, 22,125, 69,140,254,236,135,228,189,182, 3, 2, 77,215,113,123,221,177,170,107,142,234,138, - 16, 4,133, 22, 28, 74,193, 40, 27, 35,149,142, 94,116,231, 8, 93, 71,223, 84, 84,245,146,181,171, 88,248,158,115, 28, 54, 8, - 74,165,216,120,199,133, 36,103,233, 29,175,166, 37, 78,192, 78,154,227, 66,160, 76, 75,156,148, 36, 67,167, 29,144, 32, 60, 18, - 69,235, 45,141,239, 81, 82,196,164, 70,165,240, 56,180, 48, 28,100, 25, 59,186,196, 17,133,144,133,214, 52, 46,242, 12,206,187, -134, 47,250,154, 51, 27, 83, 21,147,224, 49, 62,166, 45,106, 17, 48, 2,204,144,224,102,131,167, 11,158,214,121, 18,219, 49,147, -138, 4, 73,211, 54, 88,107,121,216,108,185,217,172, 57, 13,150,133,235, 88,247,142,123,103, 43,124,219,195,166,162,109, 59,138, - 32,201,148,103, 97,195, 83,109,208, 38, 4, 30,181,158,187,210, 83,247,158,255,175,237,249,172,182, 44, 67,224,175,154,104,239, -189,221,131, 87,129,147, 14, 86, 34, 82, 64,141, 86,100, 18,180, 8,212, 34,112, 73, 73, 10, 33, 41,132, 64, 43,129, 64,146,104, -131, 73, 50,122,101, 56, 69, 80, 17,232,130,199,255, 70,234,119,229, 33,207,193, 36,140,203,156, 30, 71,110, 98,238,186,171,251, - 88,176, 23,143,225,232, 4, 78,142, 8, 15,143, 34,175,184,218,254,198,108,147, 95, 46,236,167,206,243,242,100,140,205, 20, 90, - 64, 19, 4, 88,135, 50,154,166,107, 56, 87,138, 76, 9, 30,183,158, 83, 47,162, 2, 52,132, 33, 28, 96, 80,118,111, 99,188, 94, -204, 74,183,207,226, 98,245,144, 25, 63, 60, 7,180, 38,248, 64,112, 46, 30, 8,194,128,114, 53, 67,215,237,109,204,154,175,171, -248, 90, 72,241,235, 19,215,166,243,152, 57,175, 99, 44,171,176,195,215,139, 33,226,181,233,227, 24,223,251,248,152, 93,247,213, -232,245, 39, 2, 60,192, 89, 69,103, 5, 19, 3, 99, 33, 81, 74, 81, 57,135,247,158, 14, 24, 11,112,196, 19,232,105,227,152,164, -208, 58, 23,247,248,121, 49,188,163, 29,244, 53,162,111,159,165,185, 61,117, 53,248, 97,189, 96,159,141,229,191,124, 59, 8,225, - 41,244, 98,240,202, 12,135, 27,255,139,157, 62,240,222,143,127,198,181, 23, 95,226,226,181,125,148,138,227,240,190,173, 9,193, - 19,164,167,235, 90,206, 78, 79, 89,158,173, 57, 61, 57,229,248,180,102,211, 52, 44,207, 42,130,145,212,173, 99, 85,117,228,169, -137, 36, 37, 25,187,118, 33, 32, 49,146,220, 72, 50, 99, 40, 51,131, 82,138, 44,215,228,137, 65,232,103,137,123,189, 13,120,160, -106,226,227,156,142, 50, 46, 95,156, 82, 76, 50,246,246, 51,202,169, 97,190, 83,176,183, 87, 50,219, 31,243,198,245,125, 14,167, - 25, 69,170, 56, 95, 53,188,247,197, 17,127,241,238,199,124,246,217,103, 60,184,247, 57,239,126,248, 1,239,220,185,203, 7, 71, -103,220, 91,214,204,172,231,245, 87,111,144,104,133,146,130,214, 58,234,186,139, 74,233,100, 80,231, 35, 48,153,224,187, 59, 99, -174,239, 78, 88, 54, 29,247,207,150, 28,238,205,152,204, 10,148,202, 73,188,225,209,250,148, 68, 42,186,224,176, 33, 48,207, 51, -202, 84,115, 56, 29,147,106,137, 87,130,169,239,121,225,198, 75,104, 41,105,140,164,219,159,179,253,226,140,176, 61,167,200, 34, -147,253,179,207,110,114,249,197, 23, 80,121,202,141,235,135, 76, 68,198,163,197,130, 63,249,252, 30,223,184,122, 13, 39,224, 94, -219,241,227,247,255,138,127,249,254, 71,156,187, 45,159,156, 63,230,246,241,130,243, 91,199,132,205,146,208,215,252,248,206, 61, -170,197,121,212,126, 92, 61,224,179,207,239,241,181, 43, 87,232, 16,104,147, 32,165, 70, 73, 67, 45, 37,231,193,115,146, 40,130, - 49,180, 77, 71,235, 4,181,243,148,133,142, 14,141,174,103,187, 56,161, 91,109,120,184, 94,163,172,165,173, 43, 18, 44, 73, 83, - 83, 12,139,148,121,145,144, 24, 9,121, 78, 39, 36,231,121,202,120,148,241, 96, 27,248,201, 73,205,209, 98,203, 73,103,121,113, -123,206,166,111,185,150, 25,178, 44, 99,229,122,174,103, 5,149,235,249,121, 19,248,214,229, 41, 15,151, 77,212,183, 40,255, 21, -250, 23,199,163,186,225,167,235,154, 73,237,168,154,158,181, 11,220,238, 90,254,109, 93,243,158,235,120,108, 27,250,182,165, 58, - 89,178, 17, 48, 71, 82,213, 45,137,132,177,145,228, 26,126,123,146,179, 39, 32,241,176,174,215,252,116,121,198, 95,110,215,248, -110,131,169, 43,164,237, 72, 17,204,180,194,202,152,123,208,218,158,198,164,204, 38,187,204,178,130, 50, 79, 81,157,195,244,142, -177, 73, 24, 39, 49,222,118,119, 50, 66, 39, 57,187,187,251,188,178,127,141,203, 50, 33, 23,208, 55, 29,119,234,138, 7,189,227, - 76, 72,212, 56, 71,230, 10,145,151,136, 52, 71, 8, 29, 27,135,158, 47, 37,221,127,133,120,206,251,104, 15,244,224,181,124, 6, -219, 81,224,219,246, 89,135,159, 38,241,158, 85, 78,162,226,123,119,206,114,235,216,236,206, 41, 85,180, 90,153,106, 73, 46, 20, -216, 30,231, 2,206,246,212,245,146,141,173,120,208,174,121,224,123,194,112, 24,239,173,101,100, 82, 30,246, 45, 87,179,156,218, -121,118,147, 12, 33, 4,101, 54,198,227, 24, 23, 99, 54,189,197, 38, 6,223,119, 36, 73,130,247,129, 62, 6,145,178,234, 59,156, - 20,108,156,165, 37,250,243,149, 80,132, 0, 83,157, 80, 26,141,247,144,105,195,178,169,185, 93,175,184,213,212,172,172,165,119, - 22, 33,160,243, 29,184, 30,231,122,164, 23,212,125, 77,215,182,113,109,208,117,212,237, 10,217, 55, 44,251,142,166,171, 57,233, - 27,150, 93,197,173,102,197, 99,103,121,212,110, 57,247,150,202, 5, 78,215, 91,194,106, 75,240,241, 48,153, 36,134, 32, 4,153, - 20, 20, 74,176,112, 30,235, 97, 27, 96,225, 5,183,122,207,194, 11, 30,118, 61,183, 58, 71,135,228,220, 7,122, 33,216,122, 73, - 31, 2, 4, 65, 72, 37,170,243,148, 6,218, 32, 81, 42,176, 35,227,253,246,192,104,206, 58,143,146,195, 24, 31,193, 93, 4,149, -214,108,173,195, 42,205,169,237,126,131,162, 46,135,113,241,124,142, 49, 18, 53,156, 66,170,174, 31, 84,225, 50,166,183, 53,221, - 47,118,124, 38, 25,198,209, 67,241,252, 13, 18,221,158, 22,119,163,185, 27, 20,151,138, 4,239,162,154, 93, 40,205,178,169,241, - 58, 3,231,248,211,109, 75,162, 52,219,174,123, 54,178,126, 18, 74, 51, 96, 72, 89,159, 15,227,227,225, 77, 46,205,112,189, 91, -240, 38, 78, 32, 82, 3,189, 67, 9,143, 25,242,208,131,148, 76,132,164,109, 26,216, 14, 65, 44, 97, 16,136,245, 3, 0,225, 87, -242,209,135, 56,131, 44,133, 34, 69,108,187, 24, 30,131,143,175,159, 34,230, 78, 53, 45, 34,196,132, 34,209,118,113, 63,246, 85, -175,131,247,113,220,175, 61, 16,149,171,137,144,180,222,145, 72,193, 8,141, 23,209,226,118,223, 91, 82, 33,120,209, 72,250,224, - 89, 63, 61,180, 71,127,232,244, 96,143, 23,222,120, 13,117,225, 2,219,109, 15,161,128, 55,223,226,183,127,231, 63,227,158,115, -136,211,123, 3,246, 54,137,107,132,108, 54,144,244,220,211, 20,165, 39, 12,249,120, 24,248,245,232,220,119,254,242,199,188,241, -157,111,177,115, 56,197, 24,141, 48, 17, 4,227,173,199,139, 16,223, 68,244,180,182, 37,132,192, 98,177,160, 40, 74, 50,147,210, -182, 22,147, 74,242, 68, 83,166, 6, 59, 88,251,139, 68, 33,130, 36, 77, 34, 38,209, 7,143,210, 2, 51,172, 16,210, 65, 89, 47, -164, 32,213,160,165, 36, 85,138,249, 40,225,218,126,201,238,184, 32,203, 19,202,145, 65, 75,197,254, 52, 99, 50, 74,160,235, 89, -215, 27, 30,174, 54,252,252,243, 35,126,244,206,187,124,252,241,251,252,240,131,119,249,232,209,125,126,254,248, 49, 31,221, 62, -230,252,108, 75, 95, 59, 72, 21,143,215, 75, 94,191,126,131, 75,187, 99, 18, 45,233, 7, 63,233,141,189, 17,111, 28, 76, 48,101, -138,212,146,231, 74,195,235,243, 49, 58, 4, 62,126,184,224,180,110,184,118, 48,101, 90,102, 60, 56, 62,231,202,254, 30,105, 82, - 98,148,224,218,197, 43,236,230, 35,178, 52, 33, 77, 36,243, 52, 99,150,151, 92,221,221,103, 50, 26,241,232,206,125,194,206, 5, -238,120,135,208,146, 27,223,122,137,229,199,247, 16,182,166, 76, 19,188,119,124,254,241, 45,246, 47, 94, 98,220,116,220,184,178, -199,121, 29,200,131,229,224,149,235,180,121,224,255,250,131,255,147,211,236,144,147,106,133,255,236, 1, 77,223, 81,183, 45,225, -100, 67,168,150,208,219,168,228,237, 35, 62,149,182,131, 43, 23,185,174, 52, 90, 27,180, 82,244, 2,130,183, 56, 9, 78,104,214, - 29,100,153,161,239,123, 84,179, 5, 27,120,116,182, 65,216,142,237,249, 18, 87,173,113,237, 22,221,181,156,184,158, 77, 8, 20, -125,203, 78,128,185,235, 25, 19,152,107,195,104,148,162,149, 98, 17,162, 80,236,226,200,112, 48, 47,208, 38, 69,105,201,158,131, -102,189,228,249,105,206,231,235, 45, 85, 83, 51, 78, 19, 54, 78, 18,148,224,181, 81,202,191, 93,118, 4, 45,226,248,157, 4,136, -150, 72,190,228, 51,143,133,205,242,254,166,229,253,206,178,178, 45, 15,131,231, 78,221,179,168, 58,110,159,158,243,201,249,154, - 99, 47, 73, 15,167, 28,142,115,122,231, 56,119,150, 92, 10, 50,161, 48,157,101,209, 54,252,236,228,140, 63,124,112,202, 63,123, -188,226, 81,235,223,218,122,142, 0, 0, 32, 0, 73, 68, 65, 84, 40,250,154,210, 58,250,224, 56, 52,112,142, 98, 36, 35,244,164, - 82,154,115,192,168, 17,187,147, 9,174,233,145,137,162,237, 44,157,237,153,142, 50,242, 84,147, 35,152,101, 9,210, 72,228, 40, -103, 60,223,197, 8,131,237,122,100,215,161,113,164, 66,178, 22, 10,161, 21, 34, 53,200, 81, 10,227, 2,161, 82,152,140, 96, 60, - 66,204,102, 48, 29, 62, 85, 2, 98,136, 58, 30, 92, 65,193, 71,239, 63,206,199,146,233, 6, 63,126,154, 12, 22,194, 36,162,116, - 83,141,184,122, 41, 94, 15, 55,174,210,212, 91,252,120,143,170, 93, 34,203, 9,105,187,161, 35, 32, 92,207,233,246,148,135,253, -154,155,205, 57,183,250,134, 58, 4,114,165, 56,235,123, 10,163,169, 67, 96, 71,106,110, 91,203, 11,105, 70,231, 45,123, 3, 86, - 91, 11,201,253,182, 65,100, 25,155,182, 67,165, 41,174,235,105, 67, 36,190, 45, 92, 75,175, 36, 39, 93,131, 11,130, 30, 75,227, - 44,214,119, 20, 90, 51, 18,138, 92,106,130,117,212,182,227,110,189,230,131,237,130,135,117,197,195,166, 34,177, 29,139,205, 6, -219,119,136,182, 66,186,150,163,213,130,174, 94,115, 94,109,184,249,248,152,227,205, 25,155,243, 21,141,175,121, 92,109,184,181, - 93,241,160,221,242, 97,181,226,182,183, 28,185,150,165,117,108,123, 79,223,121,172,137, 19,226, 32,227,244,163, 19,224, 19,133, -245,112,226, 35,222,213,138,161,190,200,232, 12, 32, 12, 26,181,109, 19, 67,139, 92,120,182, 10, 85, 17, 40,132,133, 30, 1, 22, -198, 38,208,183, 16, 8,236,132,168, 35, 19,193,211, 58,203, 61,239,168, 93,207,210,104, 78,125,160, 22,112,218,247, 52,184,223, -160,168, 59, 23,109, 77,121, 17,115,109,125,244, 20, 71, 16,118, 23,137,105,155,234, 23,153,230,105, 18, 85,230, 98,160,237, 60, - 21,173,254,134, 81,173,206, 17, 18,201, 35,239,201, 18, 77,145,106,238,172, 27,110, 20, 57,143,154,154,207,164, 71,120,197,137, -227, 89, 7,110,135,168, 83,231,159,112, 19,227,239,187, 38,118,221,246, 73, 94,252, 80,241,236, 96, 61,211, 42,142,124,134,238, - 2, 37, 25, 11,201,170,237, 73,122, 27,215,198, 77, 19,199,248, 16,159,167,245, 95,253, 58, 57, 96, 92,198, 40, 65, 99,158, 61, -134, 68, 33,150,213,179, 9, 65,219,198,215,198, 61, 27,193,127,101, 97,103,232,216, 77, 44, 84, 78,122,118,134, 28,225, 6,203, - 4, 73, 47, 34,125,110, 46, 37, 39,206, 81, 15, 63,124,242, 98,112, 43,104,190,121,245, 57, 94,190,112,157,111,191,246, 53, 66, - 6, 15,215,129,255,234,119,255, 35,254,139,255,224, 5,222,250,230,215,121, 72,224,248,163,219,209, 37,144, 20, 17,154, 19, 52, - 40, 59,164,222,133,103,241,181,246,215, 20,244, 98, 20, 41,117,192, 95,255,155,191,224,205,183,190,199,222,254,152, 36, 75,201, -199, 17, 29, 60,158,206, 41,166, 35,242,162,164, 44,198,164, 69,134, 78, 52,245,118,201, 98,177,224,236,108,129, 16,154,245,214, - 97,117, 20,157, 44,219, 62, 2, 54,132,136,161, 6, 66, 80,217,104,119, 19, 16,177,172, 79, 70,139, 2, 50, 25,119,241,137,138, -113,168,121, 98, 8, 90, 83, 26, 67,145,166,236, 76,114,114,105,216, 52,150, 85, 93,211,214,150,109,219,113,126,178,230,241,163, - 71,124,248,240, 17,119,238,158, 83,173, 27, 90, 27, 96,107, 33, 85, 20,251, 25, 47,237, 77,152, 22, 6,187,172,217, 59,220, 35, - 85,154,210, 36, 92,158,229,188,185, 63,229,202,238,136,157, 44,193,139,192,170,141,252,231, 63,187,121,159,159,222,250, 28,215, - 89, 46, 30,238,177,169, 90, 30,159, 46, 33, 75,217,187,176,135, 16, 9,194,121, 52, 10,135,136,202,230,196, 48,206, 11,102,211, - 29,116, 94, 98,130,103,251,197,103,220,201,118, 41, 52, 72,173,217,236,236,113,252,232, 4,217, 86,100, 74,147, 39,154,234,241, -130, 23,111, 92,198,143, 75, 70,215, 15,185, 56,155,243,220,133, 9,255,243,255,250,191,243,216,106,110, 62,188,135,127,239,179, -216, 97,244, 3, 40, 41,209, 48,140, 94,201,146,120,205,118, 33,178,240, 23, 43, 62, 29,101,252,252,236,148,185,140,176,155,182, - 9, 72, 36,219,222,227,189,163, 58, 95, 83,120,135,105, 26, 54,213,130,166,233,121,176, 92,243,117,111,249,142,250,255,185,123, -179, 88, 79,211,252,190,235,243,108,239,246,223,207, 82,167,214,174,234,165,122,186,123,118,207, 52,198,177,227, 69, 38,118, 98, - 71,193,114, 34, 43, 66, 17, 4, 9, 41, 8, 36,110,184,135, 11, 64,202, 69, 16, 8, 16, 8, 4,145,130,130,132, 4,138, 9,177, - 49,182,135,140,199,158,173,103,198, 61, 61,189,119, 85, 87, 87, 87,215,114,234,236,255,253,221,158,133,139,231, 61,117,170,151, -217,130,114, 97,254,210, 95, 71,213,234,243,255,191,231,125,158,247,249,109,223,197,176,221,172,249, 95, 95,125,135,105,162,152, -183, 53,173, 15,156,107, 23,236, 8,120, 6,216,202,114,130,137,243,113,169, 20,189,194,240, 92, 63,163,144, 48,201, 20,152,132, - 69,229, 24, 38, 57,199,171,154, 13, 45, 24, 38, 18,231, 26,188, 8,224, 21, 90, 75, 46,171,192, 93, 27, 58,133,200, 64,168, 98, -135, 41, 88,255,177,118,116,144,158,202,183,220,169, 43,110,156, 44,120,255, 96,197,157,195, 25, 15,103, 51, 78, 86, 11, 14,147, -148,187,189, 28,231, 5,223,159,215, 44,124,212, 42,210, 26, 94, 94, 52,124,103, 85,243,207,239, 30,243,206, 73, 13, 58, 26,207, - 12, 7, 25, 57,130, 84, 43,246,130,194, 39, 9, 7,193, 51,147,154, 67,169,144, 82, 83,122,199, 80, 37, 4, 99,152,151, 53,199, -182,197,118, 92,231, 84, 70,153,217, 44,209,228,157,219,159,151,130,180,200,217,233, 13,120, 34, 31,115, 25, 67, 17, 2, 9,146, -125,239, 58, 49,154, 72, 17, 37,213, 29, 86,168,207,197,115, 19,126,229,210, 57,126,245,137,203, 60,113,174,207, 29,169,105,181, - 1, 17, 25, 7, 4, 79,176, 54, 86,153,222, 71,113,152,212,196,162,103,178, 1, 27, 35,206,237,108,178,218,222,138,103,231, 96, -192, 24,139,239,111,208,184, 10,219,223,224,126, 61,227,158, 73,121,111,190,207, 93,225,184, 85,206,120,208,214,188,189, 94, 16, -108,205, 72, 41,246,109,205,213, 52,227,196, 58, 82, 33,216,199,243,108, 90,240, 70, 83,115, 53,201, 57,112, 22, 33, 4,239,218, -150,190, 73,249, 65, 85, 34,180,228,164,169,104,164,162,242, 45, 75,160, 68,112,220,148, 44,189,167,148,138,149,107,105, 90,203, -220,182,164, 66,162,130,227,214,226,132, 58,180,220, 94,207,184,177,156,242,160,109, 56,110, 43,234,170,225,100,182,162, 89,174, - 88,175, 74,102,211, 5,135,211, 25,139,195, 37, 71,251,199,204,142,166, 52,135, 7,212,251, 83, 22, 71, 83,118,247,167,220,245, -154, 70,171, 24, 36,149,102,213,182,148, 77, 32, 72, 73, 89, 91, 86,222,178,180,254,145, 57,149,232,101,120, 33,105, 90, 79,109, - 36,161,245, 56, 29,133,130, 30,157,155, 42,137,138,108, 74, 64, 17,129,154,103, 50,129,157, 69,169,232, 92,234,188,165, 9,158, - 66,195,134,130, 99,231,232, 35,152,150, 13, 43,111,249,147, 69,133,177,142, 3, 36,139,208,130,144,204,125, 4,138,214,136,159, -144,210,230, 92,156,201,230, 5, 33,216, 24, 60,155, 58,182, 60,151,107, 88, 47, 62, 28,176, 83,211, 9,183,116,182, 61,167, 22, -166, 63,133,255,122, 0,146, 34,103, 90, 55,184, 32, 73,240,124,253,112, 69, 98, 4,109,235,216,175,125, 87, 61,119,124,115,173, - 98,183, 32, 87,176,174, 35, 31,220,159,122,134,119,215,108, 84,231, 59,222,137,195,184, 22, 76,246,200, 65, 45,116, 66,179,141, -173, 9,222,227, 84,128,217,178,163,165,117, 98, 54,237,143, 80,151, 75,101,228,242,107, 29,221,136,124,180,116, 21, 77,211,113, -216, 29,212, 54,154,222,167, 18, 33, 76, 76, 58, 78,173,246,126,152,240, 79,231,143,254,172, 78, 89,227,200,145, 44,136,129, 77, - 7, 40,164,228,158,181, 92,209,154, 61,101,104,179, 33,161, 95,116, 9,129,224,194,198,132,107,151,159,140,200,209,124,192, 43, -187, 31,240,111,252,234,231,249,212,149, 9,227, 66,179,191, 47,120,253,165,239,117,237,247, 78,156,199,119,162, 61,117,123,214, -129,249,104, 64, 47,178,120,255,174, 63, 15,131, 49,108, 92,128,227, 35,192,243,237,175,252, 41,159,251, 75, 63,203,120, 84,224, -136,244,143,114,189, 98,117, 60,195,121, 71,219, 52, 81,224,195, 89,234,186,162, 63, 26,146,164, 9,179,147, 25, 7, 7,187,104, -211, 35, 0, 59,147, 30,163, 92,227, 36,156,148, 13,166,211, 87, 87, 2,124,136, 92,119, 33, 5,153,142, 85,158,150, 26, 41, 85, -244,146, 14, 2,143, 68, 40, 25, 15,203, 68, 70,189,248,202,177,110,106,172,107, 81, 26,166,139,134,245,170,230,251,183,222,224, -157,189,121,228,154, 42, 21,147,209, 76, 49,218,200,184,216, 47,216,232,103,108,247,251,212,190,197,137, 12, 47,213, 35,145,190, - 69, 21,165,108,119, 79, 86,188,124,251, 33,239,221,127,200,205, 7,123,220,216,123,128,117,142, 98, 48,100,114,126,147,219,247, -246, 89,206, 23,148,229, 42,186,212,245, 50,174, 93,187,196,249,139, 27,244,123, 3,180,202,176,173, 37,237, 15, 41,155, 53,182, -110, 16, 90,145, 21, 5,217,221, 91,204, 70, 91,140,100,224,122, 63,227,249,103,159,102,125, 82, 17,234, 57,121, 86,144, 38, 25, -199,211, 22,181,179,201, 94,213,240,236,229, 77,254,163,255,244,191,224,181,111,191,193,244,189,251,132,249, 52, 74, 89,166,130, -176,170, 9, 78, 17,146,132,225,102,143,122,101, 65,248,200,248,176,113, 92,116,249,242, 54,139, 96, 97,235, 9,126, 69, 84, 4, -149, 50,111, 26,172, 11,220, 43, 75,214,117, 77,174, 53,214,181, 80,206,168,235,154,253,197,140,145,146,252,198,120,194, 53,101, -216, 80,134,230,226,121,158,154,108,112,239,248,136, 70, 6,174,226,185, 28, 2, 67,109, 24,248, 22,147,100,184, 16,152,154,132, - 11,189,132,169,139,136,248, 74, 8,122, 50,176,118, 62,170, 34,162,104, 76,142,105, 3, 43, 27,169,167,155,169,225,104,221,146, -230, 41, 3, 41,217,119, 46,210,223,180, 36, 52, 14,178,156, 80,175, 63,196,221,126, 92, 51,221, 75,112,218,199,119, 7,100,242, -117,133,175, 3, 7,203,150, 48, 91,196,115, 57, 81, 44,140,161,173, 28,117, 89, 35,234,238,124,201, 2, 33,207, 88,104,195,168, -208,232,188, 0, 99,168,165,198,106,197, 2,193, 80, 18, 21,191, 58,252,236,222,122,201,126,219,112,100, 75,214, 30, 22,109, 75, - 79, 42,114, 21,249,236,198,131,177,142,108,144,115,113,107,200,214,120,192,168, 87, 48, 50, 25, 67,175,201,165,198, 90,203,145, - 16,177,163, 18, 58,157,116, 35,121,170, 63,224,111, 95,186,194, 95,185,116,149,141,172, 71, 45, 13, 7,161,229, 80,201,248,188, -230, 69, 84,214, 44, 6, 49,208,164, 5,194,228,209, 69,115, 99, 19,206,141, 33,203,248,204,230, 6,207,231,154,139,249,144,237, - 36,231,124,127,204,115, 9,156,235, 15,112, 85,197, 42, 29,178, 91,214,232, 65,159, 89, 83, 82, 74,201,253,122,197, 40, 53,145, - 2, 38,224,185,164,224,157,182,225, 66,154, 49,199,115,197,100,188,222,212, 60,159,245,121,205, 86,140, 84,194, 59, 33,112,222, - 24, 94,105, 74, 46, 36, 57,175,181, 13,107, 9, 55,154,146,131,110,170,182, 86,154,123,214,226,140, 33, 56,139, 82, 6,149, 36, -236,151,107,148,183,188, 52,159,241,126,189,226,219,199, 71,124,251,232,152, 91, 85,195,237,163, 41,179,217,138,102,177, 34, 44, - 86,132,178, 34, 44,231,177, 72,105, 60,193,183,113, 39,172,235, 24, 87, 37, 4,105,163, 86,100, 11,195, 73, 63, 22, 94, 33, 48, -115, 1,235, 60, 7,109, 75, 42, 37,211,224,112,182,165,105, 44, 20, 73, 28, 47,122, 98,140, 8, 34,198, 1,219,129,141,148,124, -100, 28, 38,186, 14,103, 32,196,160,190, 88,158, 41,159, 74, 16,170, 51,175, 9,145,194,188,106, 29,139,210, 97,240,220,154,213, -220, 44, 27,222, 94,214, 76,107,203,205,117,203,173,170,137,250,154, 34,142, 95, 87,193, 82,150,229, 79, 24,212, 79, 3,187,239, -244,209,203,170,227,155,183, 17,185, 94, 86, 31, 49, 0,209,143, 80,223,248, 83,190,120,243,211,153,136, 56, 71,211,180, 88, 89, -112, 56, 95,115,216, 74, 84, 2,211,101,195,244, 84,183,187,141,178,149,168,238,100,149, 34, 2,243,210, 46, 19,242, 46,210,217, - 48,157,154,154,143,227, 0, 97,227, 99,157,100,241,161, 72, 35,208, 44, 40,213,101,176, 93,101,186,174,187,207,233,192, 99,117, -243,163, 19,147,214, 66,154, 68,105,195, 83,254,109,219, 62,194,151,161, 4,233, 86,159,191,247, 11,159,229, 11, 87,118,248,204, -213, 29, 94, 93,183,112,112,244,113,214, 1,143,181,229, 93,180, 35, 60, 20,130, 73,128,105,240, 92, 82, 9, 46, 4, 86,206, 50, - 84, 26, 21, 60,203,126, 31,113,105, 27,159, 22, 52,242,148,150,230, 89, 53, 53,231,243,130,224, 28,251, 71,247,121,111,239, 24, -213, 66, 49,232,243,238,238,154,255,253,155,223,164,124,247, 78, 76,118,172,237,208,254,246, 49, 79,121,251,225, 57,122,218,135, -254, 8,174, 94,227,201,167,159,230,231,158,249, 12, 69,158,146, 37,154,217,178,130,114, 1,192,183,254,248, 79,121,254,103,191, -204,100,220, 39, 16, 40,215,117,228,165, 59,135, 76, 20, 70, 39,164,131,156, 36,205,241,221,131, 34, 59, 94,120, 86,228,156,204, -150,236,159, 44, 57, 92,181, 44, 86, 45,182,182,148,141, 35, 75, 21,206,197,249, 32, 34,138, 58, 32, 4,214, 5,210,196,144, 24, - 29,133, 48,132,140, 10,111, 50,138,110, 4, 31, 56, 94, 53, 28,206,151, 20, 41,236,238,175,184,253,193, 33,135,135, 83,254,219, -191,255, 31,227, 46, 92,227, 92, 95, 50,109,227,104,233,234, 86,193,115,231,199, 20, 90,113,105, 50, 98,107, 48,164,245,142, 69, - 89,177, 94,206,217, 24,111, 16,132,228,120,177,230,131,227, 21,183,246,230,188,125,255,144,233,225, 49, 77,213, 48,155,207, 59, -228,173, 33, 47,250,180,173,224,222,221,219, 4,239, 41,203,117, 20, 94, 42, 75,164,201,184,184, 51, 97, 60,204,121,225, 83,151, -216,220,220, 96,190, 88,211, 44, 43,150,235, 21,149, 83,172,231,199, 40, 37, 88,220,120,141,139, 91,151,201,140,166, 21,160,159, -216,193,222,185,207,108,185,100,144,247,153,156, 59,207,231,175,159,231,229,247,118,249, 63,191,251, 22,239, 52, 21,161,108,160, - 46, 9, 36, 81, 45,205,219,168,206,102, 27,152,244,249,119,159,218,226,217,243, 3, 94,185,127, 4, 78, 71,237,123,173,153,159, - 44,249,210,246,152, 23, 38, 59,252, 7, 63,247, 34,127,248,242, 55, 24, 20, 57,223,152, 30,243,160, 46,185, 55, 59,160,169,150, -188, 59, 59, 1, 15,235,122,201, 27, 15,247,248, 66,166,121,177, 63, 98,152, 20,204,109,203, 74, 90,254,195,127,243,175,178,145, -143,249,254,189,125, 46, 40,203, 57,161,216, 9,209,145,175,157, 47, 56,177,160, 18, 73,139,166,159, 39,212,225,140, 62,234, 91, -199,210,118,192,174, 34,163,241,129, 75,105, 1, 38, 37,209,134,161, 49, 84, 74,113, 80, 86, 76,101,231, 56,153,103,132,113, 63, - 58,251,109,108, 16,122, 61,130, 73, 9, 38,199,215,229,163,201,243,227,239, 83,170,151,247,158,176, 90, 18,230, 75,130,111, 32, -207, 17, 91, 99,138,126,143,214, 68,165,200, 32, 69,215, 1,108, 97,111,142,149,146,157,157, 9, 99,109, 40,117, 26,177,176, 66, -208, 55, 41,147,108,128, 70,144, 40, 73,161, 36,211,118, 69,226, 29, 85, 93,113, 82, 87,180, 90, 49,183,150, 60, 64,129, 66, 87, - 13,253, 34,101,251,194,128,254,184, 71,111, 82, 32, 19, 67,162, 13,133, 52,168,186,198, 21, 9, 53, 41,115,147, 34,104, 17,203, - 5, 56,207,207,108, 20,252,252,214, 54,227,162,143,150,134,239, 47,102,188, 84, 89, 90, 37,161, 40, 96, 56,130,241, 48,186, 88, - 22,177,117,207,176,135, 56, 55, 70,108, 12, 32,201,248,237,115, 19,180, 8,244, 85, 66, 47, 81,124,106,178,205, 88, 64,149,228, -248,182,100,115, 48,162,106, 27, 54,122, 41,179,218, 49, 40, 18,230, 66, 48, 74, 50, 22, 66, 49, 82,154,167,139,130, 91,222,241, -116,214,231, 1,158,109,147,114,211,181,124,161, 24,242,186,109,120,190, 24,114,219, 53,236,104,195, 77, 41,121,218,100,220,241, - 45, 27, 42,225, 43,171,134, 59,109, 64, 43,205,161, 72, 57,242, 45,100,195, 40, 17,157,230,216,166,230,192, 5, 46, 24, 67,233, - 90,116,213,240,157,131, 53,251,123, 83,202,227, 5,213,222, 67,194,172, 36, 44,203,184,215,215, 77,236,216, 56, 8,173, 3, 17, -249,254, 17, 48,221,126, 8,135, 16, 26, 75, 16,146,121,101, 41, 6, 25,139,224,153,173, 43,130,209,140,148, 98, 29, 2, 25,112, -210, 90,130,245,143, 5,244,199,156, 47,101,167,147, 46, 59, 90,176, 52,241, 12, 61, 29, 19, 11,209,197, 6, 23,207,202,166,138, -197,166, 13, 81,115,193,118, 64,229,198, 97,181,100,181,172,104,239, 28,224,119,134,132,170,138, 14,134,117,133, 93, 91,246,102, - 37, 33, 85,236,207, 23,204,235,146,121, 85,253, 20, 65,189, 3,155,196, 25,115, 29, 51,145,229, 52, 86,199, 31, 13,116,237,169, - 63,123,167, 47, 30,236, 79, 85,165,127,168, 13, 47, 34,194, 51, 40,112,243, 21, 78, 71,167, 40,116, 71,191,242, 93, 27,163,233, - 28,218,132,136, 45, 68, 41, 98,219,220, 73,240, 21,164,105,188, 86, 69,156,167,159,250,144,247, 11, 88, 85,177, 45,213,118,237, -230, 32,186, 68,197,199,224, 92,182,177,218,255,104,242,242,137,192,128, 40, 8,129, 84,143,104, 99,143,108, 20,123,138,223,249, -220,115,124,249,179,215,185,118,229, 18,189, 65,159,137, 49,188,121,119, 63,222,207,254, 4,182,182, 97,251,114,119, 96,116, 98, - 57,105, 52,124, 9, 65,177,173, 4,233,233,193, 35, 37, 70, 37, 84, 69,193,232,218,147, 20,151,174, 32,242, 1, 66,122, 18, 37, -177, 68, 81,150,160,160, 45,167, 52,229,138,187, 7,251, 28, 77,103,220,218, 61,226,251,119,142,185,189,123,132, 78, 3, 83,217, -121,200,231,166,115,228,235, 16, 53,217,169, 61,173,120, 36,246,241, 59,127,251,111,240,155,191,249,235,252,214, 95,126,145,207, - 92,127,138, 34, 45,104,203,150,131,114,198,108,185,140, 93,157, 14, 33,255,210, 87,254,140, 39,174, 63,205,165,203,231,208,137, -193, 5,129,107, 91,108,211,210, 84,209,187, 90, 73,133,210, 18, 39, 2,109, 93, 33,141,196,186,104, 35,136,128,217,241, 34, 58, -142,245, 83,238, 60, 56, 97, 94,182,172, 43,199,176,103, 88, 55,142,117, 29,157,151,124,128, 52, 49, 56, 33, 98,192,116, 33,250, -186,187,208,209,118, 2,193, 70, 69,191,187, 15, 23,124,251,123,111,178, 94,174, 81, 65,112,225,153,231,217, 24,110,176, 44, 79, - 48, 6,206, 13, 50,182,122, 57,105,146,160, 4,244,211, 12,165, 52,173,109, 73,181,138, 66, 55,227, 62,155,163,130,224, 3,109, -221,224,156,163, 90,173,177,190,198,214, 45, 38, 55, 12,134,131,232,159, 83,215, 28, 30,239,177,174, 74,172,143,146,201, 50, 64, - 99, 91,214,203, 5,249,160,207,221,123,135,236,223, 59,100,213, 88,202,178,138,244, 32,231,168,133,102,160, 2,101,179, 66, 6, -193, 63,127,243, 13,174, 94,185,198, 50, 81,120, 41, 96, 99, 27,125,120, 72, 80,146,171,159,190,198,238,225, 9,255,253,127,253, -143,216, 31, 13, 8, 65,112,117,123,196,201,209,156, 96,163,189,103,112,154, 32, 45, 1,201, 95,237, 23,252,141,171,151,152, 76, -206,113,151,150,189,131, 69, 92,107,219,194,186,102,119, 81,177,215,204,233,111, 95,226,205,226, 2,127,114,251, 6,203, 15,222, -167,109,214,184,195, 35, 78,238, 60, 96,189,156,243, 96,247, 33,187,199,115, 88,172,121,113,152,112,217,244,104,129, 91,205,146, - 69,211,240,153,139, 23,248,218, 94,197,157, 96,120, 38, 84, 12,133,230,138,201,240, 77,205,180, 92, 49,173, 86, 52,141,101,152, -165, 72, 35, 17, 70,162,188,160, 42, 91,142,234,200,201, 14,137,162,240,129,103,198, 3,182,123, 57, 79,142, 70,108, 21, 3, 84, -218,167,245, 18, 31, 2,203,186,100, 59, 49,156,207,115,174, 12, 70, 12, 55, 71,108,109, 78, 56,119,110,135,213, 32,167,214, 2, - 95, 12, 9,182,194,183,246, 19,131,251,153,147, 88,108, 83,227, 26, 66, 0,159,104,124,104, 34,142, 72, 40,254,206,149, 17,127, -237,137, 77,254,108, 81, 19,170, 53, 15,156, 68, 20, 61, 6, 89, 2, 58,165, 16,138,173, 52,163,113,158,139,105,193, 42, 56,150, -109, 77,102, 18,178,224,105,218,146,204, 40, 78,234, 53, 85, 8,184, 0,125, 2, 61,169, 40, 50, 67,186,221, 39,233,231, 72,173, -162,131,105, 16, 80,182,164,206,147, 56,135,207, 53, 83,217,167,202,250, 48, 62, 15, 82, 48,240, 13,147, 96, 81, 54,240,205,147, - 35,190, 58, 91,112,212,214,144,102,244,139, 1, 73,154,146, 38, 9, 77,154,128, 17,136, 44, 69,228, 25, 36, 25,191, 56, 28,242, - 75,219,155,140,211, 30,107, 33, 80, 4, 54,250, 27,188,190, 92,115, 97,115,147,188, 90, 49,200, 71, 28,172,231, 12,123, 99,180, -107,240, 73, 74, 45, 65,163, 88,184,134,158,148,172, 67, 96, 22, 60, 79,154,140, 93, 1,219, 66,242,126,176, 92, 55, 5, 63,104, -215,124,177,152,240, 70, 91,243,132, 73, 57, 20,146, 39,133,230,221,224,184,164, 12, 95,171, 45, 90,167, 44,146, 52, 42,215, 25, -137,206,114,110, 47, 42,134,195, 49,109, 93, 82,166, 57, 89,154,145,138, 20, 35, 2,137, 12,172, 68,224,120, 81, 19,234, 10,188, - 32, 40, 27,215, 47,184,104,186,162, 32,184, 78, 73,179,237, 4, 58,234,211,130,165,195, 93, 88, 23,139, 25, 35, 8, 73,193,220, -123, 86, 62,158, 79,198,195,202,121,188,245, 76,109,131,111, 61, 94,118,138,114,174,251,189, 54,196,100,207,187, 88,220,213,174, - 43,238,162, 48, 26, 82,119, 44,168, 83, 68, 98, 32, 74, 24,218, 88, 48,182, 1,154, 53, 66,201,200,220, 10,237, 35,239,145,254, -207, 61,207,175,255,194,175, 49,185,180,197,221, 31,188,129,119, 14,239, 26,124, 91,115,184, 42,217, 95, 58, 30,204, 75,118,231, -229, 79, 25,212, 93,231, 7, 94, 55, 17, 13,222,254,136, 96, 29,186,249, 51,246,147,103,208, 63, 77, 31, 94,133, 88,233,135, 78, - 60,166,237, 2,185, 15,103,148,171, 83, 32,151,144,241, 64,106, 59,212,182,179,157, 14,123,135, 80,119, 26,124, 19, 51, 85,219, -145,141,243, 36,182,153,173,139,111,245, 88, 85, 90, 69,126, 42,101,219,181,236,221,143,189, 94,225,186, 44,190,181,145, 67,239, - 99, 71,225,252,185, 17,191,246,165, 79, 51, 30,111, 32,181,102, 60, 28,160,148,231,107, 15, 14,163,144,198,198, 38,191,252,133, - 95,226,153, 43,207,176,177,189,195, 60, 87, 48,153,224, 70,227, 56,235, 46,250, 28,139,140,162,200, 88,110,142,217,186,122, 29, -189,185, 65,178,189,205,197, 11,207,176,179,245, 36,147, 98,136,210,158, 84, 9,164, 10, 24,169, 56,159,165,104, 4,139,186,229, -225,186,164, 57, 46, 17,212, 76, 46,110,243, 59,191,254, 34,127,235,231, 63,197,214,104,204,203,111,220,141,155, 92,117, 18,177, - 38,116,179,158,110, 22, 36, 5,140,174,240,203,191,240, 34,189,188,160,223, 75,105,218,192,114, 94, 81, 54, 53,175,127,112,159, -102,247,118,151, 4,157, 9,202,127,255, 27,223, 35,233,245,185,122,253, 10,195, 65, 15,235, 2, 38,141,148, 12,173, 20,202,168, -168, 42,151, 38, 36, 89, 66,154, 36, 72,109, 88,173,102,148,229,138,197,244,144,245,170,100,186, 40, 73,179, 4,148,160,117,142, - 59,247,142,185,125,231,144, 50,120,234,198,243, 96,186,164, 14,158,163, 69,116, 73,187,249, 96,193,113,217,128, 8,172,234,154, - 89, 85,241,222,238,140,155,119, 30,242,242,159,191,129,111, 45,121, 97,184,117,231, 22,139,234,132,175,255,254,239,243,220, 11, - 79, 51, 74, 13,189,196,144, 38,138,126,154,161,181,194, 57,139, 15,158,225,176,207,100, 99,194,120,115,131,119,111,220, 96,126, -176,224,137, 39, 47,178, 49,206, 17, 82,178,152,174,168,203, 10,169,162,184,133,119,129,249, 98,198,162, 90,226,188, 39, 81,154, -166, 45, 49, 90, 99,148, 65, 25,133,208,154, 64,194,241,241, 58, 2,247,238,221,225,206,238, 7, 28, 29, 31,147, 25,197,131,221, -219, 72, 13,133,201, 17, 82,144,184,138,111,191,250, 58,227,107, 79, 51,159,215, 28, 79,215, 12, 81,188,240,229,231,120,240,193, - 3,254,203,127,240, 15, 9,195,148, 48, 24,240,244,248, 28,191,120,225, 28,149,104, 56,120,176, 23,207, 18,121, 10, 30,243,188, -187,172,216,222, 26,240,170,215, 84,131, 77,238, 29, 79, 35,144, 7, 27,159,183,186,198, 46,106,190,253,224, 30,187,227,109, 66, - 2,236,237,194,195, 67,196,193, 20,148, 68, 78,143,162,234,240,122,137, 90,172,121,114,144,226,104,120,216,214, 60, 16,130,243, -166, 64, 60, 56,160, 76,115,110,212,150,220,193,139, 89,206,121,147, 48, 65, 82, 84, 75, 74, 23, 56,241, 22,231, 37, 18,133, 22, - 18, 71, 96,191,116, 76, 27,139,112,142, 92, 4,174,244, 82,174,231, 42, 42,197, 77,250,244,179, 20,157,103, 52, 33, 97,238,115, - 18,225,144, 50,112,165, 95, 80,164, 25, 74,103,236, 12, 7,132,160,184,212, 27,161,243,148,117, 97,104,130, 38,120, 73, 80, 1, -223,218, 15,181,230, 63,106,125, 26, 90, 11,179, 57,254,112, 30,193,191, 43,203,223,188, 52,226,239, 60,117,133, 79, 77, 54,184, -220, 19,124,237,193, 49, 65, 40,218,113, 76,242, 76, 98,216,214,138, 84, 37,108, 36, 25, 51,215,208,215, 41,235, 16, 53,192, 69, -176, 40, 33, 72,157,195, 72,197, 10, 88, 52, 53,206,181, 76, 80,244, 70, 41,201,184,128,160, 16, 50, 82, 8,221,178, 69, 84, 45, - 38,120,250, 66,145, 74, 56,108, 61, 85, 62, 68,141, 54,217, 26,110, 51, 73, 39,124, 80, 46,120,105,127,159,239,150, 21,123,101, -133, 73,114, 70, 4,206, 43,195, 68, 74, 90,223,178, 45, 37, 94, 26,172, 78, 65, 8,118,122, 3,254,253,171, 87,248,197,237, 29, -206,101, 57, 15,154,134,117, 62, 68, 9,193, 23,183,182,120,176,174,216, 25,142, 56,168,106,174, 15, 71,172,155, 53, 62,201, 88, - 59,139, 5, 26, 44,153,146, 44, 90,203,200, 24,148,139,238,107,153,179,204,149,230,162, 54,188,211, 86,124, 62, 27,240,157,122, -197,245, 36,229,182,141,149,249, 45, 44, 79,201,148,119,189,101,152,102,188,237, 96,101, 50, 46, 25,143,201,115,156, 15, 92,204, - 19,172,131,116, 48, 64, 91, 71, 26, 2,187,182,166,144,134,165, 15,188,125, 60,231, 92,207, 48, 21, 50, 26,255,216,216,109, 12, -105, 10,182,237,176, 21,177, 94,139,129,221, 34,130,239, 84, 52,187,192,124, 26,220, 91, 75, 8,109,231,194,150, 98,157, 71,106, - 88,181, 45,214,123,188,148, 88,231, 8,136, 51,183,207, 68, 19, 84,199,241,149, 42,250,180,166,230,209,104, 87,136, 83,254,175, - 56,227, 1, 55, 54, 22,147, 77, 21,199,181,162, 99, 69,181,109,108,213,251, 14,184,218, 90,154, 59,187,188, 83,205,185,251,250, - 77,194,122,253,161,189,234, 91, 27, 29,235,234, 10, 87,173,127,218, 74,253,167,120,121,255, 73,236,138,127,177,207,105, 79,181, -210,125,148, 88,149, 62, 86,224,170, 67, 20,186, 16, 3,206, 41, 24,175,125,140,142, 69,135, 90,119,246, 76,196, 89, 6,176, 50, - 90,234, 40,115, 6, 6, 75, 77, 92,144, 14, 48, 39,137, 45,219, 71,215,240, 73, 28,117, 62,130,248, 79, 82, 68,136,170,123,104, -137,208, 34, 82,236,180, 36, 29, 13,184, 48,218,226,250,213, 29,154,214,209, 88,199,235,239,238,243,131, 91,183, 65,107,190,244, -244,179, 92,217,188,202,160, 72, 24,229, 35,206, 15,183, 57, 63,222, 98,107,180,201,212,173,105,165,128, 84,225,243, 62, 95,120, -234,103,184,124,233, 83, 12, 70,219, 76,134, 19,118,118, 46, 99,250, 57, 70,235, 40, 52,225,106,188,111, 59,224,152,102,208,203, -169, 90,207,193,170,194,175, 23,144, 14,248,173, 95,252, 57,126,249,179,151,216,238,103, 44,170,154,175,254,249,219,221, 24,163, - 75,152,156, 7,225, 62, 60,236, 15,129,231,158,190, 70,154,231,184, 32, 56, 62, 94, 48,157,157,240,242,187,239,242,240,213,215, - 59,179,154, 56,210,160, 55,140,182,180, 73,143,155,175,190,198,205,163, 41, 79, 94,185,194,246,206,152, 52,141, 21,181, 78, 77, - 4,136, 72,133,210,209, 96,231,248,225, 62,243,163, 99,210,126,129, 64,160,140, 34,235,229,113,148,176, 90,178,119,255, 30, 94, -106,170,178,194,121,199,201,193,148,123,119,247,152, 30, 45,168, 90,207,189,221, 67,110,221,188,207,108, 58, 99,212, 79, 25,102, -134,183,223,185,195,155,175,191, 79,185, 42,217,189,247, 16, 66,137, 39,208, 54, 21,155, 91, 27,100,169,230,179, 95,124, 1, 33, - 4,214,183,164, 90,147,152,132,212, 36, 88,231,200,146,132,201,104,192,100,123,139,197,108,198,239,189,244,231,188,250,123, 95, -225, 7, 39, 71,108,167,125, 62,253,169,171, 76, 6, 57,135, 39, 37,101, 85, 19,112, 88, 91, 81,173, 75,130,112, 88,219, 18, 66, -160,106,107,218,198, 33,181, 36, 77, 83,146, 52, 37,207, 11,180,201,249, 31,254,243,191,207, 42, 83, 60,117,241, 9,132,128, 59, -251,123, 20, 90,115,251,120, 22, 27, 37, 70,144, 37, 5,105,146,146,135,192,242,214, 77,222,247, 9,243,147, 19,152,157,176,213, -235,241,250, 31,253, 1,183,111,223,137,235,176,189,197, 47, 93,188,202,100, 52,162,110, 4,239, 29, 29, 65,181,254, 16, 26, 28, -103,249,238,221, 19, 30, 76, 6,140, 19,197,238,180, 11,234, 70, 69, 77,233,102, 21,159,175,117,137,112, 51, 56,119, 25, 33, 3, -226,120, 14,179, 35, 68, 98,162,116,169,144,200,202,161,122, 57,247,102,107, 66,112,172,141, 98, 96, 82,174,165, 61,206,103,125, -174,175,150, 60,151, 40,254, 68,229,252,229, 80,179,163, 37,217,186,164,239, 32,149,129, 99, 33, 57,106, 61,203,101,197,209,178, -101,247,168, 97,225, 37, 77, 93, 99, 36, 76,180,228,185, 73,194,118,145, 48,233,165,104,169,200,178, 4,175, 12,199, 46,224, 85, -198,170,105,217, 73, 2, 7,141,165, 17, 9,219,253, 2, 23, 20,105,170, 73,242, 30, 82,229, 36,198, 96, 83,205,218, 72, 66,211, - 65,115,196,153, 35, 91,248, 33,193, 29, 31,131,123,200, 11,206,111,244,120,114, 48,160,111, 18, 94,218, 63,226,229,105, 11,174, -161,116,129,173,201,132, 45, 90,198,105,143, 43, 89,129, 11,176,242,142, 6,207, 68, 25,102,109,133, 21, 34,138,137, 0,199,245, - 18, 97, 29, 7,203, 21, 53,129,208, 54, 12, 91, 73, 49,200, 65, 10, 92,101,169, 22, 22, 97, 29,218,122, 84,136,179,247,148,128, -203, 53,165, 73,201,123, 9, 23, 6, 5, 27, 89,198,181,241,152, 75, 58,229, 25, 9, 6,199, 6,146,157, 44,193,132,134,129,146, -164, 85, 67, 38, 37,137,138, 74,124,107,161,121, 82, 75,254,202,214, 38,147,201,132,188,223, 99,225, 37, 43,161,216,234, 13,184, -217, 74,158,204, 13,135,222, 51, 50,146,135,192,192, 7, 14, 2, 72,111,169,131,194,224, 56,113,129,158,130,135,214,114, 73, 42, -156,244, 56,165, 24, 11,193, 45, 91,113, 61,201,121,185,173,249, 76,154,241,102, 83,115, 53,201,184,237, 45, 87,149,226, 29,107, -177, 42, 97,215, 9,118,209,236,136,192,118,191,135,118, 81,193,209, 41,205, 74,196,209, 93,240,240,190, 83, 60,155, 36,212,194, -179,169, 52,123,205,154,210,186, 40,190,213, 70,231, 52, 76,151,144, 17,147, 34,244, 41,144,218,253, 72,208,111,232, 66, 71,176, -167,192, 74, 69,211, 52, 56, 43,176,194,163, 36, 88, 58, 16,156, 20, 12,211,132, 70, 10, 6,137,129,196,224,106,219,137,121,117, -133,208,227, 1,221,118,223,127,170, 54,106, 58,155,111,219, 60,242,149,127,132, 63,235, 18,141, 71,201,198,193, 17,172, 63,252, -252,250,199,233,138,222,227,189,255,151, 24,212,255,101, 37, 10,208,129, 15,136, 70, 42,190,243, 66,183, 93,171,188,113, 17,224, -100,187, 96,244, 72,100,229, 84,212,197,199,223,179, 33, 46,114,211,130, 54,177, 90,135,216,162,207, 12, 10,129, 95,119,116, 57, -239, 98,144,230, 19,140, 88, 30,151,211, 85, 41,164, 10,145,165, 93,101, 27,187, 6, 66, 68, 43,203,114, 94,147,100, 61,122,253, - 62,203,202,113,111,127,197,183,222,188,193, 73,217,242,212,120, 27, 39, 44, 23, 55, 47, 61, 98,200, 25, 97, 24, 15, 55, 25,101, - 99, 92,104, 89, 87,115, 18, 45,249,244,149, 43, 60,247,220,103,185,250,244, 5, 46, 92,220, 1, 82,164,146,228,121,156,179,183, -245, 26,215, 68, 87, 45, 37, 2,163, 94,129,247,176, 40, 43,142,167, 43, 56, 62,128, 36,197,228, 9,231, 46, 92, 32,184,134, 63, -250,179, 55,185,121,231, 78,119,223,186,150,145,107, 63,158,149,249,134, 87,239, 31,242,173, 27,183,249,214, 27, 55,248,230, 59, -183,120,253,253,251, 28, 61, 60,224,111,254,230,207,242,175,255,173,223,224,185,207, 63,207,203,223,191, 1, 62,233,124,234, 13, - 56,199,124,255,128,111,253,193, 87,113, 50,176,181,115,129,243, 59, 99, 76,146,224,173,167,109, 90,218,117, 77, 83,215,209,110, - 80, 43, 66,112,172,150, 11,130,117,184,182, 97, 62,157,226,108,131, 76, 20, 77, 85,178, 90,158, 48,159,159,176, 88,156,208, 31, - 12,192, 4,214,235,146,123,119,222, 35, 79, 11,206, 95,218, 34,205, 13,111,188,123,151,178,110,184,246,204, 37,108,240,172,171, -138,197,106, 78,101, 43,130,176, 44,203, 37,141,179, 52,117, 69,235,124,244,118,150, 18, 33, 4,121,146,209,239,231,108,109, 71, - 3,163, 55,110,220,224, 15,255,155,239,176, 62,120, 43,222,143,147, 25, 63,216,219,227,206,222, 30,215,174, 61, 65,154, 25, 80, - 10, 87,133,152, 16, 18, 8, 33,154, 25, 37,137,193,249, 22, 79, 32, 87,134,254,104, 68,150,230,236,236,236,208, 75, 21, 63,243, -175,188,200,231,158,122,134,157,157, 45,116,146,163,154,166, 91, 67,143, 82, 10,111, 3, 66, 9,180, 74, 56, 55, 57,199,214,198, -132,203, 82,115,174,153,243,185,237, 45, 66,219, 66, 47,227, 7,245,154,240,240, 8, 76,194,221,188, 32,144,242,181,218,130,110, -225,193, 49,225,180,203,214,218,174,117,216, 80,175, 42,246,122,134, 80, 90, 88, 77,227,115, 83,251,216, 37,203,123, 80, 86,136, -178,134,190, 66, 12,207, 65,181, 64,212,209, 79, 65, 74,133,208, 6,217, 58,148,116,136,166,197,214,142,107, 90,114,181,223, 99, - 39,205, 25,233,148,145,206,185,188, 94,241,215,151,199,252, 39,235,138, 47, 52, 11, 70,206, 33,165, 34, 73,251, 28,201, 56,190, -154, 53, 13,213,226, 4,218,134,178,182,228, 89, 74, 42,225,252, 36,229,217, 97, 78,145, 36,160,100,172,140, 58,190,117,107, 20, -171,218,163, 80,204,219, 64, 46, 4,195, 52,195, 98, 64, 40,140,202, 16, 68, 1,163, 86, 42, 42, 28,115, 33, 9, 90,197,106, 73, -234,232,223,254, 35,186,113,225, 49,110,202,237, 34,163,202, 4,119,154,134,127, 60, 93, 99,219,238,240, 93, 55, 28, 41,193,179, -147, 17, 27, 74,163,129,149,181,108,165, 5,214, 7,214,193,161,165, 66, 11,205,210,183,100,202,144,134,192, 73,185, 68,249, 22, -223, 86,148,193,211, 11, 18, 83, 69,189,137,122,218, 80,213, 45,198,122,180,146, 36,202, 32, 90,135,106, 29, 74, 5, 22, 90,211, - 47, 82,122, 74, 48,208,146,139,253,132,177, 74, 9,214,177,157,100,104,225,193,214, 76,122, 19,114, 37, 17, 89, 74,223,104,132, -151,108,102, 3,130, 82,140,148,226,114, 63, 39,213,145,138,252, 45, 27,184,172, 19,238, 5,120, 58, 81,220,108, 3,151, 18,195, -210,123,122, 77,131,211, 10,211,214, 28, 6,131,161, 97,209, 74,250,162,101,209, 90, 54,149,228, 36, 56, 76,128, 77, 41,121, 24, - 2,215, 84,194,187, 33,240, 41,173,121,197,181, 60,111, 50,110, 56,203, 19, 58,229,166,247,140,211,130,251,174,225,102, 48,188, -208,211, 36, 58, 71, 10,203,162, 12, 20,169,161,213,134,147,101, 75,146, 72,150, 65,115, 61,145,236,121,199,180, 93,147, 4,216, - 78, 18,246,171, 53,101,128,182,170, 8,210, 61,162, 5, 7,225,227,200,164,163,239,253, 72, 22,207,135, 0,202, 93, 85,223,205, -183, 49, 50, 2,168,219,216, 78,151, 74,211, 79, 18,192,179,105, 52, 13,146,129, 84, 8,163,162, 56,152,235,132,198, 78, 65, 85, - 46,116,214,222, 34,198, 31, 73,236, 42,107, 5,165,251, 16,131, 76,252,136,198,117,248, 33, 58,255,167,239,191, 88, 65,253,113, - 78,184,150,145,122,147,152, 51, 21, 52, 31,226,251,212, 63, 61,116,173,144, 83,218,155,140,170,177, 52,117,156, 29,219, 54,242, - 90,179, 52,182, 57,172,143,193,189,113, 4, 37,232,208, 85,103,105,155,236, 16,253,159,228,175,110,116,164,149, 36,105, 68, 49, -158, 42,238, 5, 16, 34,116,238,108,142, 7,193, 50, 16,125, 30, 30, 44,216,221,223,231,246,225, 30, 95,188,242, 2,227,193, 6, -155,197, 38,139,106,129,109, 26,202,186, 68,139,132, 44, 43,176, 77, 77,107,107,198,185,102,104, 18, 46, 76,182,184,254,236, 85, - 54,198, 3,164, 12,180, 45, 84,117, 77,189,110, 88, 87, 75,108,168, 70, 44,229, 0, 0, 32, 0, 73, 68, 65, 84,211,224,124, 29, -141,226, 84,244, 97, 89,217,154,233,170,101,117, 52,139,135,246,106,201,131,217, 9, 95,123,247, 3,222,190,117,204, 55, 95,127, - 7,246,119,187,204,209, 70,240,134,111,207,118,202,227,187,108, 57,135,197, 18,151, 12,248,242,245, 39,249,194,181,107, 60,115, -241, 60,207,191,112,157, 81,209, 71,169,148,175,127,247,205,174,131,210,117, 83,100,167,244,167,224,253,183,239,243,205,255,231, -107,156,148, 21,195, 98,192,230,206,136,209,100, 64,146, 39,164,121, 78,214,239,145,247, 50, 6,163, 33,195,141, 17, 74,106,156, -183,136, 16, 98,117, 93, 53,180,174,197,152,132, 36, 51, 12, 55, 38,164, 69, 65, 83, 47, 41,215, 75,180,145, 12, 55, 71,120,233, -152, 46,102,180,117, 69,214,207, 56, 56,154,114,251,238, 17, 34, 52, 8, 44, 74,197,245, 52,105, 66,158, 39,244,123, 61,146, 68, - 97,140, 33,207, 18, 54,198, 99, 6,227, 1,105,150,241,230, 59,239,240,251,255,244,101,238,189,241, 10,164,211, 15,175,253,124, -193,131, 27,239,241,135,239,222, 34, 43,107, 46, 93,185, 72,175, 95,160,141,129, 16, 80, 42, 33, 49, 41,173,111,144,104,134,195, - 49, 59,151,174,112,241,226, 69,206,109,109,112,113,103,192,114, 85,147, 26,205,249,205, 30,147, 81,159, 81,207, 80, 53, 48, 95, -205, 40, 76,202,185,201, 22, 91,147, 29,156,141, 7,202,100,115,147,235,215,159,194, 58,203,104, 49, 37,221, 28,211, 38, 41, 15, -130,228,253,208,226,238, 61,132,121, 69, 35, 90,238, 38, 41, 33, 73,226, 66,150, 43,152,205, 62, 30,168,108, 32, 16,221,208,132, - 3,234, 16, 1,115, 73, 47, 82,112,124,196,169,136, 85, 5, 59,231, 35, 23,122,122,130,104, 90, 68, 93, 33,147, 20,233,107,100, - 43,209, 73, 74,235,107, 22,222,242,249, 34,101, 59, 45,216,208, 25,133, 50,100,214,163, 29,252,122,179, 96,190, 94, 96,189,199, -244, 71,180, 38,101, 97, 18,202, 0,181, 20,228,109, 69,175,173, 8,120, 26,153, 96,242,148, 79,111,246, 40,164,196,104,141, 86, - 18,167, 4,109, 0,169, 4,135,141,231,225,172, 98,229, 3,206, 59,180,107,112,193,163, 4,104,165,168,136,174, 87,190, 3,231, -173,189,165,150,130, 6, 31,253,219,125,244,143,136, 29,192,240, 67,169,166,167, 2, 76,161, 12,220,202, 50,222,113,129, 42,209, -145,239, 93,198, 10, 44,132, 64, 37, 96,167,151,115, 78,105,140, 78,153,186, 6, 45,162, 22,115,233, 45, 54, 56, 10,169,152,219, - 6,139,164,118, 22,237, 26,158, 85,154, 52, 4, 86,222, 49,146, 10,150, 77, 44,238, 26,139,145,138, 20,137,116, 93,178, 88, 53, -120,223, 18,250,154,202,193, 48,209, 60,181,153, 98,172, 39, 33,112,161, 63, 96,189, 42,217, 30, 12,152,203,132, 32, 36, 42,201, - 25,103, 5,235,160, 25,231,125, 86,222,177,221,159,112,185,159,113,212,120, 68,154,243,245, 69,201, 19, 70,115, 79,105,174,104, -201,237, 10,158, 72, 5, 15,188,167,215,212,180, 74,144, 32,152,121, 24, 11,207, 34, 56,156,171, 88,121, 79, 79,192,212, 89, 70, - 34,208, 4,112, 66,241,164, 50,188,227,107, 46, 33,121, 75,192,139, 73,206, 93,147,112, 81, 27,222, 15,158, 45,224,166,183,220, -106, 2, 99,165, 17, 34,197,168, 22,169, 12, 46, 40,242, 68,115, 48, 91,115,105,212,227,214,178,225,124, 10,123,117, 60,114,135, - 66,179,198,211, 84, 75,250, 58, 2,217,166,173,135,218,117,113,188, 27, 39,186,174, 98,167,253,208, 56, 88,252,200,192,222, 81, -183, 37,177,170, 86, 93, 7, 51,209, 32, 4,218, 40,180, 8, 8,161,169, 3,228, 38, 42,190, 89,239,185,152, 37,216, 16, 72,164, -166, 57,125,202,132,239,204,204, 58, 1,142,214,198,207, 13, 81, 34, 59,130,202,221, 79,116,109, 31,235, 34,125,200,137,228, 47, - 98, 80, 63,173,216, 53,177,202, 62, 69, 25, 6, 1,153, 62,203,138, 66,151, 37, 9,206,130, 54, 33,234,214,159, 86, 41, 74,198, -118,189,236,104, 76,167,115,118,219, 5,241,211,155,172, 58,142,187, 13,159, 44,190, 34, 85,220,101, 74, 67, 34, 17,182,107,142, -216, 40,136, 33,124,183, 20,147,130,205, 68, 17,218,138,182, 89, 51,204,198, 12,178, 13,198,189, 13, 82,147,179, 63, 59,226, 79, -223,121,133, 7,211,123,164,166, 3,240,219, 21,219,147, 30, 87,182,119,184,176,125, 30, 33, 2, 89,175,143,144,146,229,186, 97, -255,254, 17,171,249, 17, 77,211, 80,214, 75, 42, 91, 67, 80,100, 73, 15, 17, 2,141,107, 89,149,150,195,101, 69,187,255,160, 75, - 74, 4,172,150,132,189,125, 14,110,223,128,249, 97,108, 1, 53,117,100, 12,156,142,196, 69,231, 25,239, 31, 31, 9, 5, 24,158, -227, 75,159,251, 28,159,123,234, 51,108, 76, 70, 12, 71, 3,114,147, 80,149,150,147,147, 57,127,254,199,223,141,247,227, 20, 40, -226, 60,143,124, 44, 67, 60, 56, 31,188,123,135,239,125,227, 21,190,250,251, 95,161,244, 45,118, 81,146,100, 25,218,104, 76,146, -208,235,167,100,121, 70, 49, 72,201,250, 61,138,241, 16, 41,226,140,209,152,200,107, 46,215,107,132,247,180,109,137, 50,134,209, -214, 38,147,173, 9, 38,139,114,146,171,229,154,182, 46, 89,204,230,252, 79, 95,251, 42,111, 63,188,195,107,239,191,207,139, 47, - 60,207,104, 60, 32, 43,114,242, 34,167, 63, 28, 48,220,218,160, 55, 26, 50, 26, 14,201, 7, 3, 30, 62,120,200, 31,252,224, 13, -190,245,199,175,113,247,198, 13, 16, 77,236,100,124,146,254, 63,192,193, 49, 55, 30, 30,241,167,175,252,128,151,222,191,197, 83, -227, 17, 27, 23,207,113,241,218, 14,147,157, 13,174, 61,125,149,171, 79, 62,193,151,191,240, 44,151, 47,109,199,138,190,245, 28, - 28, 46, 81, 70,112,245,226,152, 11,219, 35,138,110, 22,183,118, 2, 91,195,120,188,193,245,207, 62,199,198,249, 77,124, 11,227, -141, 45,130, 80,124,243,187,127,198,255,245,181, 63,229,202,192, 80, 37, 61,110, 91,199,251,117,195,131,147, 99, 56, 41, 35,178, -118,177,142, 98,210, 42, 33,168, 4, 50, 96,247,232,227,123,216,119,192,161, 68,209,223,238,211, 76,151, 49, 57,221,158, 64, 47, -141,221,155,147, 21,162,138, 54,172,226,210, 21, 68,166, 16,203, 88,177, 11,219,198,194, 38, 81, 40, 91,161,147, 60, 66,112,234, -146,103, 82,195,185,172, 79,142, 32, 73, 82,180, 80,104,161, 72,109,203, 94,112,212, 89,206, 74, 42,132, 80,220, 77, 52, 67, 23, -216,193,177,227, 42,138,245,138,123,190,161,213, 3, 14,215,150, 39, 38, 57,163,212, 32,133, 32, 81, 10, 39, 4,247, 74,203,254, -210, 50,135,200,176,168, 75, 42, 91,209, 75, 4, 58,207, 8, 40,180, 50, 88,235,168,157,163, 9,158,181,247,248, 16,240,161,229, -178, 4,167, 12, 91,169, 97,126,122,216, 58,247, 49, 91,211,179,152,238, 99, 23,235,104, 69, 91, 36,209, 69,177, 13, 4,215, 85, - 96,222, 49, 79, 36,207, 22, 41,149,212, 36,161, 69,201, 8,228, 83, 34, 96, 2,148,221, 17,229,130,224,196,214, 76,189,229, 98, -154,115, 94, 37, 12,148, 38, 13,142,224,160, 39, 37,210,123, 86,214, 82,152, 4, 35, 64,218, 0,101,139,181, 21,181,183, 52, 82, - 97, 10, 77,150,105, 18, 96,160, 84,244, 95,106, 28,231, 70, 3,150,141, 71, 42, 67,158,101, 88,239,104,164,166,151,167, 88, 7, - 73, 62,164,144,154, 36, 27,112, 97,208,227, 36, 8,206, 21, 9,135, 30, 46, 42,120,109,110,121,118,100,248,160,134,205,208,224, -211, 20,215, 97,154, 6, 1, 30, 54, 37, 85, 8, 88,160, 23, 2, 11, 60, 61,107, 89, 3, 19, 20, 66, 4,142,133,231,146, 52,220, -146,130,103,149, 38,223,220,224,103,175, 92, 36,152, 20,225, 60, 47, 55, 53, 54,104, 22, 68,109, 9, 25, 4,189, 84,177,108, 53, - 89, 18, 88,148,158,113, 79,115,111,222,240,244, 64,115,119,225,216, 52,150,131, 42, 32, 69,139,243, 1,109, 12,218, 59, 14,215, - 37,165,117,113, 2,107,195, 35,230, 85, 76,216, 92, 60,159,127,196, 8,245, 99,129,212,116, 69,161, 74, 8, 65,117,198, 86,177, -104, 75,141,138,251, 16,129, 59, 5,187, 91,216,233, 71,225,172,177,209, 72, 31, 53,250,131, 20, 81,243,228, 84, 81,203,117,212, -234,166,142,231,106, 85,198,239,249,132, 78,176,248, 73,175,245, 49,238,212, 95,204, 87,219,137,200,152,238,103,167,151, 30, 45, -206,220,199, 43,251,212, 68,138, 26,254,140, 27,104,187, 22,100,234, 33,164,103,201, 66, 47,129,117,211, 45,126,135,254,246, 54, - 34,209,101,120,172,221, 46, 59, 49,154,142,163,104,146,168, 0, 87,241, 88,235,223, 67, 11, 65, 91,196,218,195,170, 33,139, 34, -244,244,211, 30,203,218, 71,197,174, 36, 97, 54,155,115,178,154,226,214, 37,203,101,205, 75,205, 91, 20,201,123,188,112,110,139, - 39, 46,126,145,241, 96,128, 80,154,221,221,154,219, 55,223, 66,233, 12,223, 10, 2,142,218,181, 84,109, 69,109, 27, 18,157, 50, -200,198,228, 38, 99,152,111,128,183,124,160,119,185,113,123, 55,106,206, 7,255,216,142,240,103, 6, 52,167, 6, 46,167,255,221, -119, 40, 81,249, 17,125,120, 37,217,122,230, 50,207, 61,113,157,162,151,162,141,232, 4, 9, 28, 89,174, 89, 61, 88,193, 56,242, -245,169,237, 25,135,191, 37, 2, 21, 79,191, 47, 77,163,164,112,145,241,205,127,242,149, 15, 45,217,214,207,127,153, 47, 95,186, -200,206,165, 11,108, 94,218,161,215, 75,163,145,195,206, 24, 24, 83,151, 13,109, 99,217, 60,191,137, 78, 53,193, 6,180, 86, 24, -163,113, 56,218, 54, 32, 26, 24,140, 11,240, 5,179,121, 11, 14,146,196,208,224,216,186,184, 77,145, 75,108,235,104, 92,180, 80, -172,214, 53, 15,239,220,229,229, 59,247, 25,228,155,188,250,202, 59,176, 60,129, 81, 15, 84, 63, 38, 61,131, 1, 84,139, 31,190, - 47,143, 14,224, 8,170, 15,238,241,143,254,252, 53,184,124, 9,113,239, 62,124,246, 57,254,237, 95,252,121,242,254,152,147,217, -144,117,217, 32,189,192,100,154,141, 73,193,197,113,143,205,126, 30,111,181, 10,100, 89,194,120, 99,128,200,158,138, 57,102,112, -188,247,250,219,220,188,123,139,239,220, 63,198,189,113,227, 81,166,254, 63, 31,205,225,115, 21,253,237, 77,150,149,139,251,124, - 18, 45, 90, 89,151,240,246,109,120, 14, 24,111,198, 53,185,176, 5, 15, 30,126,188, 5, 41, 91,168, 44, 75, 27, 80,231,183,113, -211,101, 68, 72,123, 31,147,103, 5,193, 27,196,209, 9,197,106,202,246, 96,192,223,253, 75,159,227, 63,251,230,171,132,195, 99, - 66,154,198, 25,117,154,226,109,131,175,107,222, 12, 3,158,184,251,128, 43, 89,143,190, 15,120, 17, 53, 4,164, 25, 82,104,195, -197,197, 62,223,174,215,164,185,102, 46, 20,231,164,166, 48, 30,237, 13,198,123, 60, 45, 27,135,119,121,133, 30,215,253, 14,193, - 7,166,139,146, 36, 75, 9, 9, 28, 90,199,173, 38,112, 79, 8,166, 70,179, 30, 22,132,249, 17,185, 84,152, 40,102, 64,227, 37, - 38, 13,132, 32, 49, 65,179,196,113, 65, 11, 46, 6,197, 40,233,113,210,180, 60,145,215, 44, 74,197,177,179,172, 67,244, 68, 8, -118,246,232,240,252, 88, 85,100, 45,193, 46, 16,183, 90, 56,191,217,177,124,116, 44, 42,172,195,150,150,223,187,191,207,111,157, -111,217, 28,109, 49, 17,130,147, 54,130,214,234,206,123,161, 1,234, 16, 56,180, 45,151,101,108,221,150, 50, 97, 32, 37, 35,149, -160,133, 96,214,182,232, 16, 24,231, 5, 39, 39,199,168,209, 8,103, 59, 54,135,130, 22, 73,161,163,131,161,243,158,214, 41,234, - 16,216,206, 82,150, 30, 92,221, 48, 25, 20, 20, 54,227,110,213, 48, 23, 1,211, 56, 74,171, 49,198, 80,118, 93,233,220, 68,225, -156, 76, 75,222, 95, 58,174,247, 13,239, 86,158, 79, 15, 52,239, 54,130,103,211,192, 7, 54,101, 80, 47, 8, 70,227,202, 37, 78, - 39, 20, 74, 49, 7, 66,221,114,220,180,108, 72,207,158,135, 75, 34,112,151,154,167,125, 70, 89,150,188,102, 44, 82,106,222, 49, - 9,127,189, 55, 96,175,178,232, 36, 97, 79, 73, 74, 11,135,180,188,238, 20, 47, 72, 79,161, 60, 8,195, 80,181,204, 42, 77,145, - 6,110,207, 27,158, 26, 24, 94,155,183,252,204,200,240,234,220,243,124, 22,120,173, 42,184,172, 22,212, 94,162, 4, 60, 53,200, -185,177,104, 33, 84,157, 86,129,136,133, 73,211,169,141,214,205,143,197,101,127,232, 85, 55,145,223,111,125,180,172,182, 10, 82, - 79, 63, 79, 41,157,199, 8, 73, 21, 44,163,212, 80,119,137,151,109, 3,131, 84, 81, 57,135, 38,160,235,192, 80, 72,142, 17,157, -125,136, 63,147,232,126, 4,198, 78,160,250,209, 99, 31,241,227,174,245, 47,124, 80,167,163,202, 85, 26,122,157,145,129,239, 76, - 83, 76,215,102,207,116,231,212,214, 41,250,168, 54,222,208,143, 46,108,221,196, 0, 45, 0,147,241,185, 47,127,150, 87, 31,238, -194,205,135, 93,251,221, 71, 58,130,247,144, 41,240, 89,180, 27,236,247,224,104, 5,182, 59,228,155, 42, 6,255,196,196,162,182, -249, 48, 27, 48, 72, 16,101,205,178, 90, 51,206,199, 72,157,147,138,136,164,124,112,248,128,101,185,226,198,253, 93, 88,175,226, -130, 85,115,214,153,102, 53, 54,120, 91, 1,125,172,107,113,206, 81, 55, 45,213,122, 65,221,214, 56, 31, 40,215,109,172,208, 85, -198,165,173, 1,193, 11, 60,138, 65, 49,192, 57,207,249,144,194,242, 43, 49,249,208, 81, 69, 12,253,120,251,149, 78,146,246, 49, -141,247, 46,167,161,149, 17, 80,120,122,240, 95,186,198,139, 87,158,227,220,165, 49, 74, 72,166, 39, 43,154,229, 17, 23,175,108, -210, 88,199,249, 11,219,252, 91,127,247,183,185,191,191,199, 87,126,247, 27,113,151,213, 31,161, 3, 42, 25,233, 26, 69, 63,126, -143,214, 31, 10, 50,135,223,248, 30,255,247, 71,150,251,249, 95,255, 5,206, 15,134, 92,190,112, 1,157,166,209, 44,102,144, 19, -214,241,175, 80, 38,193,152,216,154, 13, 68, 31,227,100,144,196,153,109,223,242,239,252,198,111,242, 63,254,238,255, 1,137,100, - 53,157,242, 15,254,241, 31,241,215, 62,245, 52, 47, 63,120,200,222, 91,135,224,231, 29, 87, 31, 24, 63,140,215,109, 4,156,204, - 64,218,104,247, 57,159, 71,225,142, 79,218, 71,159,240,208,137,123,247, 9, 90,195,107,111,243, 15, 95,123, 27,145, 38,241,225, -172, 27, 68, 54, 64, 84, 11, 68, 22, 19, 5, 9, 92,251,249,207,147, 11, 73,166, 5,115,235,184,249,221,183, 8, 42, 33, 96, 9, -235,234,147,219,110,243, 5,124,247,109,150, 23, 54,249,149,107,231,216, 40, 18,244, 83, 59,124, 35, 9,220,123,247, 30,172,102, - 48,155,119,163, 42, 96,115, 12, 71, 11,176,179, 15,127,206,218, 66, 1,159, 27,245,248,181,141, 33,127,248,193, 46,175, 77,203, -199, 18,229,206,180,104, 81,178,126,235, 29,254,189, 95,250, 87,249,213, 43, 87,248,222,157, 15,248,202,201,148,160, 51, 66, 57, -195,215, 41,193,181,248, 34,199,219,134,175,238, 62, 96, 35,215,252,246, 19,134, 68,106,196,112,130, 84, 26,153,123, 6,118,200, -206,234,128,239,155, 6,163, 13,185,148, 72, 31, 72,147,148, 53,240,245,241,121,158, 20,130,155,111,127,139,244,250,151,249,218, -219,142, 43,155, 99,206,111, 11,110, 79, 29,119,173,228,102,235,152, 9, 73, 83, 36, 32, 5,230,220, 5,204,238, 29,150,171, 5, - 65, 74, 6,169, 97,186,136,159,185, 12,150, 11,202,145, 72,131,146, 22,227, 51,114,235, 88,147,177, 47, 2,131, 60,103,221, 2, -227,110,141,171,197,135,166, 79,143,227,151, 5, 16,170, 10,238, 31, 64,158, 66, 54,140,103,142, 74,161,113, 44,108,224,165,116, - 65, 38, 52, 39,105,198,197, 98,192,180,142,200,229,212,228,148,182,225,184,169, 24,104, 67, 38, 4,243, 0,219, 38, 97,209, 21, -152,133, 78, 24,229, 25, 78,104,230, 74,209, 26,201,251,174, 97,220, 88, 18, 99,168,188,163, 41, 82, 90,162,100,114,161, 21,171, -214,147,107,137, 13, 34,226, 48,128,158,138, 9, 89, 91,150,108, 37, 5,119,155,146, 60, 49,148, 1,242, 16, 71,135,109, 16, 28, - 5,200, 43,203,103, 6, 41,223,157,213, 92,235,105,238,183,146, 23, 18,199,205, 82,178, 65,203,145, 74, 56,215,214,172, 76, 66, -181, 94,113, 36, 36,206,149, 52,222,146, 8,203,145,109,217, 86,130,131,170,102,146, 24, 94, 46,167,108, 38,154, 89,235,201,141, -160, 89, 46,120,115, 62,101,167, 24,208, 42,197,126,213,114, 76,224,165,202,145,104,199,107, 94,177,145,192,162,180,228, 89,142, -162, 97,182,242, 92, 30, 38,124,176,104,248,153,190,228,141,185,229,201, 68,240,176, 85, 60,171, 27, 94,159,195,115,121,194, 92, -165,220,106, 43, 66, 47,237, 76,196,154, 56, 58,170,218, 24,234,214,213, 99, 54,211, 63,197,107, 93,129,182,192, 8,180,131, 84, -179, 44,163, 5,184, 74, 52, 70, 73, 78,170,134,171,147, 28,103, 29,202, 67,229,186,159,165,143,221,251,224,200, 92, 96,237, 79, -129,112,174, 19, 71,235,108,185, 87,117, 84,240,252, 88,116, 62, 59, 23,195, 79,120,185,127,177,131,186,237,204, 90,172,232,120, -241,167, 64,183,110, 6,184,110,206,156,196,188, 61, 19,161,249, 97,175, 58,222,145, 87,191,246,221, 24,196, 79,171,124,255, 24, -131, 85,105,200, 61, 12,134,144, 36,176, 9,220, 95,156, 93, 79, 49,138,115, 75,162, 17,156, 56, 21,199,137,189,108, 66,101, 89, - 85, 48, 26,166, 36,186, 79,101, 75,102,229,130,195,213, 49, 55,238,220,135,227, 67,130,179,103,127, 15,176, 55,171,216,189,127, -135,114, 62, 71, 38,154,227,195, 99,102,213,138,101,185,102,209, 54,204,203,134, 89,105, 9, 8,158,191, 50, 68, 7, 69,150,229, - 60,249,204, 14,219,163, 62, 71,179,134,219, 47,223, 60, 83,195,179,182,227,101,126,244,126, 62, 6,250,163,235, 62,160,161,144, -103,120, 57,145,130,244, 92,184,124, 1,219, 88,218, 16,216, 59,184, 79, 18, 26, 54,199,151,209, 74, 98, 93,206,106, 85,113,113, -107, 11, 46,244,225,224, 48,118, 56,156,238,172, 95, 57, 83, 91,114,116,155, 89,254,216,135,237,173, 63,252, 58,111,253,184, 61, -145, 13, 98,226, 49,216,140, 24,135,209, 32,234, 18, 68, 21,147,136,230,247, 9,255,221,255,246,207, 64,106,254,224,149, 55, 35, -182,162, 7, 52, 58, 6,240,193,168, 67,166, 42,200, 4, 60, 60,140,166, 70,117, 27,215, 28,162, 62,182,254, 49,160, 27,173, 9, -137,142,163, 23,173, 99, 98, 87, 87, 80,100,136, 52, 33,132, 78, 40, 41,212,241,223, 74,114,251,123,111,197,251,178,174, 8,105, -210, 5,241,179,128,254, 67,179,116, 95,145,174, 87, 60,169, 36, 89,175,143,149,112,237,252, 6,247,238, 29, 16, 86, 37,236, 29, -193,176,224,133,193, 6, 23, 47,247,184,163, 20,239,190,249,206, 25,112,168,110,226, 22, 77, 13,255,218,198,144,207, 14, 55,153, -143, 23,188,246,238,126, 12, 96, 33,196,102, 12,113,189,194,114,205,195,245,140,111, 60, 52,188,221, 27, 17,178, 30,161,138,230, - 61, 62,149,184,218,224,106,143, 5, 92,240,252,222,238,140, 47,101,247,120,214, 24, 84,145,161,210,113,167,253,225,216, 94, 44, -113, 70, 99,116,194,148, 64, 38, 21,149,119,100, 73,198,103,183, 71,220, 45, 87,136,237,243,188,250,218,119,120,227,254,132, 47, - 61,241,105, 38,147, 45,230,105,202,221, 0,239,229, 25, 33, 55,204, 67,202, 36, 79, 25,140, 28, 75,127,145,254,209, 62,231,219, -146, 89, 89,145,100, 57,203,166,226, 82,174,187,238, 86, 4, 58, 89,111, 59,134,131,229, 66, 47,101,160, 28, 39,141,165,246, 41, - 34, 73,192,234,179,231,229,163, 1,189,139, 16,162,245, 4,106, 4, 93,155,183,167, 64, 37, 60,159,107,246,214, 45,239,172,151, - 60,157, 24,254,232,240, 62,207,245, 71, 28,122,199, 86, 8,212,214,178, 36,208,247,150, 82,106,158,205, 10,142,156,101,164, 52, - 74,105,166,206, 17,156, 71, 38,130, 96, 18, 10,163, 88, 24,201,155,194, 80, 87, 53,163,126,206,229, 65, 78,138,164, 10, 1,221, - 56, 92, 8,132, 54,138,103, 89,231,232,167, 9, 77,235, 49,222,115,177,215,227,157,213,138, 65,166,153, 89,143,129,200, 51,111, - 27,210,212, 80, 54,146,144, 41,246,125,224,185,161,230,161, 15, 92, 48,112,215,195,166,180,148, 66,176,221,192,162, 13, 72,219, -112,136, 32,109, 74, 30, 46,215,100, 58,174,181,108, 26,246,218,134,212,104, 30, 54, 21, 3, 20, 95, 63, 92,241,194, 48,227,235, -243, 53,151,250, 67,254,217,221, 7, 60, 61, 26,242, 96, 89, 17, 18,197,141,202, 50, 16,130,169, 85, 24, 42,110,161, 24,209,112, -137, 64,158, 27, 84, 82,208,184,134, 29,227,185, 97,115, 54,243,146,147, 50, 10, 88, 89, 18, 46, 23, 37,149,119, 44,116,202, 42, - 73,226, 94, 30,100, 81, 99, 99,255, 48, 62,255,161,254,240, 25,247, 47, 18,107,234, 5, 52,105, 92,252, 60,129, 36, 97,229, 61, -153,247, 76,180,161,170, 45,185,136, 0,105,237, 61,179,178,165,200, 21, 7,179,166, 59, 14,196,217,216,183,237, 68,205,232,152, - 89,202,158, 61,139,143,206, 96, 27,223, 31, 9,238, 63,238,245, 23,115,166,254,161,150, 97,135,130, 23,221, 35, 39,100,188, 97, -153,236,110, 26,143, 85,219, 33, 6,182, 79, 2,186,157, 26,190,200, 83,213,185, 83,222,123, 56, 67,131, 75, 25,219,215, 60, 70, -163, 91, 46,207, 42, 54,173,163, 12,163,245,103, 7,190,235, 84,130, 20,160, 21,201,213, 43,124,241,201,231,185,184,125,149,162, - 55,194,136,140, 15, 78,238,115,239,232,152,102,239,222, 25,245, 66,200, 88, 37,154,132,205, 34, 65, 72, 71, 93,149, 44,214, 11, - 86,117, 77, 93,151,236, 46, 87,220, 63, 92, 80,238, 45,163, 40,144,146,108,111, 79, 24,154, 30,253,162,207,103, 94,184, 64,145, - 37,152, 68,241,237, 55,239,114,240,230, 75, 63, 5, 29,209,159,221, 96,147,116, 42, 72,221, 61, 50,138, 81,209,163,151,245,152, - 77, 79, 56,153, 31,113,126,107,131,205,241, 4,147,104,150,101,131, 13,129,166,105,120,229, 27, 95,239,184,154,221, 40, 66,158, - 81, 65,162,140,176, 63, 83, 5,108,237,255,247,253,160, 58, 42, 9, 73, 76, 74,178, 36,182, 73, 90, 11,182,142,127,203,186,142, -120, 11,213,141, 23,144, 48, 93,194, 98, 17,245, 0,132,138, 26,226,167, 56,139, 85, 25,255,127,103,227, 79,223,173,175,215,103, - 0,202, 79, 50,249, 49, 49,145,139,162, 19, 62, 50, 91, 30,243, 28, 66,117, 10, 83,117, 67,208,170, 19, 76,234, 16, 64, 82,158, - 85,229,178, 99, 82,104, 69,112, 46,238,179, 83,199, 65,211,237, 85, 37,177, 2,158,221, 28,162,250, 61,230,222,243, 86,217,112, -178, 92,198, 68,183,106, 97,210,231,122,127, 72,145,231,204,157,229,160,108, 16,101, 21, 19,139, 52,237,186, 53,134, 89,154, 16, -180,224,119, 79, 42,214,181,131,118, 9,210,159,209,109, 68,138,168, 26,190,125, 60,227,196,192,161, 54,172,235, 18,177, 88, 32, -122, 3,100, 83,162,130, 66,202, 22,105,114,164, 3,233, 74, 70, 46,240,252,230, 24,147,230, 49,217,173,203,104,250,226,214,188, -237, 45,109,154,210, 51,105,180,120, 37,112,208, 68, 97,141,255,101,252, 4,193,199,110,133,189,191,203,157,195,247,121,107,239, - 54,183,246,239,178,191, 94, 81,175, 42,234, 32,232,121, 79,147, 37,212, 89,130, 79, 12,106, 48,132,164,207,192, 11,180,111,241, - 66,176, 21, 44,153,209,244, 67,192, 8, 65, 8, 1,139,196,116,254, 6, 83,219, 50,212,134,195,170,134,117, 27, 61, 31,252, 39, - 3,171, 68,151,233, 10,186,202, 11, 27, 37, 87,211,140,223,121,114,135,191,119,237, 58,231, 50,197, 43,213,138, 87, 79,214,120, -169,152,226,145, 74,243, 65, 83,210, 42,197, 68, 40,174, 38, 25, 67,161,162,229,179, 0,100,188,255,167, 14,146,214,100, 88, 5, -137,214,172, 2, 44, 19,197, 58, 49, 12, 51,195,112, 16, 21,246,122,169,230,216, 90, 18, 4, 1, 56, 92,173,217, 74, 52, 7,101, -205, 36, 79, 41, 91,135,181, 22, 27,160, 85,154,224, 26,218, 32,177,109,139, 48, 9,179, 54, 48,236, 41,170, 74, 32,132,197, 5, - 65, 30, 2,107, 4, 67,235, 88,120, 71,210,182,172, 93,203,134,173, 57,176,150,121, 91,242, 94,109,209,173,229,184, 92,211,148, -107, 22,174,197, 16, 56, 90,213,140, 19,195, 91,243, 21,147, 94,198,219,139, 53,151,132,228,173,249,156, 3, 91,243,157,195, 3, - 50, 35,248,206,241, 17, 79,106,193,157, 0, 33, 56,146, 32, 25, 59,139,209, 73, 52,195, 14,142, 32, 28, 19,173,121,183, 12, 92, -144, 21,199,107,207,197,141, 30,247, 79,214, 36,210,211, 87,154,227,186,164, 72,163,127,125,169, 19, 26,225,226,115,155,117, 12, - 41,107,127,226,160,248,195, 7,238,157,152,140, 54,241,140, 70,225,188,143,213,186,144,132,214,210, 75, 13,107,219,208, 4,135, -212,112, 82, 58,140, 11, 44,154, 54,186,129, 6, 65,104, 58,108, 78, 91, 66,217, 57,136,226,227,179,255, 40,174,157,130,154, 78, -103,159,246,172, 91,252,255,251,160,238, 59, 41, 49,173, 58,222,122, 23,200,219,112,134, 42,116,237, 89,228,246,174,171,214, 62, - 9, 81,223, 1,226,132,234,130,184,138,191,211,214, 93,203,186, 58,227, 28, 54, 54,122,174, 55,143, 41,234, 25, 29,171, 65,249, - 24,176, 76,158,185,155,137,172,207,139,207,127,134,103,158,188, 78,175,215, 67, 27,197,186,170,184,115,112,159,189,123,119,227, -225,123,154, 28, 36, 26,146,132,173, 81,206,118,191,160,159,245,144, 82, 82,217,134, 85, 83,115, 82,150,236,174, 74, 88, 86, 81, -251, 57, 72,212,164,224,252,104, 64, 47, 53, 12,139, 49,219, 59, 27,228,137,102,182,106,248,214,107,119, 89,188,255,131,159,184, -133,243,216, 13,238, 70, 19,157,236,109,136,148,183,247,235, 21, 7,199,187, 60, 56,216,101, 93, 55, 92,217, 58, 71,222,207, 81, -194,243,224,225, 17,255,213,239,254, 19, 94,249,202, 55,187,160,103,226,125, 82,242,236,104,124,132, 57,232, 16, 38,173,143,149, -241,143, 19,247,249, 81,175, 34, 59, 11,138,139, 89,180,225,108,218,174,187,146, 69, 31,128,208,237, 1,239, 98,144,174, 42, 88, -150,221,247,106,232,231,241,193,245, 62,226, 0,230,221, 92,218,119,202, 21,233,169,211,223,169,196, 36,143, 37, 42,143, 5,118, -173,227,126, 60, 77, 42,165, 6,235, 59,139,204,186, 75,244,116,164,133,101, 25, 66, 9,196,186,138, 18,188,213, 58, 6,112, 37, -161,170, 9,173, 37, 56, 23, 3, 58, 68, 3, 14,217,129,118, 78,177, 16,222,131,245,188,225, 53,111,103, 9,175, 84, 53, 83,231, - 97,181,132,121, 25,247,112, 19,120, 48,204,153, 33,120,191,177,113,252, 81, 85, 81,191,191, 41, 17,131, 17,120,203,129,144,188, - 44, 4,107,147,196,189,188, 92, 67, 43, 17,202,116,186, 15, 18,241,255,114,247,102, 63,150, 93,217,153,223,111, 79,103,184,231, - 14, 49,228, 72, 50, 73, 22,139,172, 42, 85, 21, 85, 82, 73,130,160, 22, 36, 75,141, 22, 44,248,193, 3,208, 86, 3,110,219, 13, - 63,250, 47, 51,252,110,192,112,195,176,209, 70,171, 37, 75,213,146,154,170, 42,138, 51, 43,147, 57, 69,198,116,167, 51,238,193, - 15,123,159,184, 55,147, 76, 50,201,178, 90,178, 3, 72, 68, 70,144, 25,113,239,153,214, 90,223,250, 6,101, 17, 91,203,131,237, - 6,117,253,128, 91,215,142, 88, 61,190, 68,216, 30, 57, 88,164,208,136,160,144,214, 34, 11,133,104, 59, 62,233, 45,127,120, 56, -167, 16, 18, 3,208,111,177,219, 11, 86,245,138, 15,186,154, 48, 61, 64, 8,205,144,101,108,134,129, 19,239,185, 16,130,143,100, - 6,147,138,160, 13, 97,146, 19,154, 13,190,174, 9,247, 31,224,127,241, 49,254,242, 49, 65, 14,180,213, 49, 93,153,211, 41, 29, - 11,102,105,248,238,209,156, 27, 55,142,177, 46,199,132,150, 73,240,116,214,161,133,194,251, 1,129, 32, 87,138, 44, 4,154, 16, - 48, 90,243,160, 27, 88, 90, 7,117, 29,143,219,115,178, 25,196,179,150,206,206, 33,144,176,168,248, 31,223,120,131,239,221,186, -205, 76,104, 62, 89, 95,242,206,147, 53, 89,174, 25, 2, 44,219,158, 89,158,227,128, 91, 42, 99, 46, 37,133, 54, 76,132, 68, 74, -131, 37,112,233, 3, 7,202,208, 20, 57, 34, 56,188,212,244, 90,115,233, 61, 5, 10,147,233,216, 95,186, 64,149, 27,150,214, 83, -132,120, 29,158,110, 27,110,205, 38, 60,222,116,204,139,140,139,186,231, 64, 11,140,212,252,221,122,205,224, 28,173,215,224, 3, - 65, 25,148, 86, 88, 31,184,223,195,161, 10,100, 33, 80,134, 64, 7,204,173,227, 52,128,104,182,212, 33, 48,107, 26, 62, 28,122, -238,110,182,124,214, 13,172, 55, 43, 30,247, 61,194,245, 92,214, 45,198, 57,206,182, 61,173, 11, 60,104,122,230, 38,227,147, 77, - 67,107, 61, 79,250, 30, 19,160,189,216, 50,207, 52,247, 30, 60, 97,154, 27,126,113,118, 73, 46, 3, 86,101,244, 93,143, 45, 10, -142,157,231,220,118,220,153, 77, 57, 80,154,191, 89,117,188,148, 5,150,131,228,102,230,121,111,235,248, 97, 41,113, 34, 62,223, -107,175,152,232,192,113, 53,227,141, 50,231,129,135, 46, 35, 89,125,187,100, 6,243, 75, 14, 14, 42, 37,143, 10, 15, 62,145,220, -164, 96,232, 61, 91,235,153,103,154,203,186,167,202, 36,221,224, 9,214,147,201,192, 89, 29, 83, 62,109,231,147,227, 93,226,189, -140,164,107,229,147, 29,249,222,179,227,115, 30,135,105,192, 26,107,203,255,175,139, 58, 36, 55, 57,157, 38,193, 36,228, 31, 69, -255, 67, 27, 59, 43,111,227, 3, 94,136,184,220, 54, 42, 49,214,213, 78,228,159, 38,164,200,118,212, 49, 69, 13, 17,255,110,251, -221,109,109, 19, 75,209, 39,120,100, 60,200,185,217,113,207,228, 51, 12,135,174,135,170,226,230,173,107, 28,207,142, 41,202,146, - 97,240,212,219,154,119,238,126, 64,119,113, 17,139,158, 78, 19,122,145,113, 84, 25,110,204, 42, 14,167,115,166,217, 4,135,167, - 29, 90,182, 93,199,233,166,163, 91,117,208,244, 8,149,145, 95,159,114,115,154,113,109, 54, 99,106, 42, 94,122,229, 21,138, 73, -206,106, 99,121,255,239, 30,242,167,239,254, 5, 60,185,255,212,195, 73,188, 48,244,148, 26, 22, 49,190,151,152, 12, 84,167,164, -180, 89,150, 83,233,130,224, 53,171,117,199,207, 62,120,143, 79,127,242,211, 4,171, 39,169,134, 81, 79, 63, 13,251,244,189,126, -116,176, 19,187, 44,251, 95,138, 60,153, 94,107,121, 24, 39,115,145,108,111, 93, 42,230,117, 3,243, 73, 50, 28, 18,177,160,139, -244,121, 68, 11,132,136,141,223,166,139,231, 98,148, 73,218,100, 35,108,187, 24,220, 99,147,132, 82,132,167, 11,187,148, 73,190, - 39, 99, 34,133, 76,215,140, 34, 5, 12, 69, 27,201,200, 41, 40,162,253,240, 96, 83, 83, 82,199,194, 61,106, 91,115, 19,139,122, -158, 69,219,100, 72,175, 47,201, 56,199,235, 87,200,200,202,239, 97, 56,152,197,107,219, 7,184,220,198,162, 44,163,214, 54, 52, - 61,219,202,196,127,155, 73, 88, 54,241,218, 94,204,162, 68,173,168,224, 98, 5,229, 20,170,114, 23,236,115,177,130,114,130,240, - 3,120, 27, 19,168, 68, 76,108,234,231, 37, 75,107, 17,141, 69,172, 26,132, 10, 96, 20, 34, 12, 49, 98,120,112,144, 73,130,115, - 28, 59,193,145,239,200,109,141,104,123,134,102,205,178,235,249,105,211,211,151, 57, 42,159,224,165, 38,120,135, 84, 18,215,183, - 60,193,208,154, 2,170, 5,193, 76, 8, 66, 68,144,164,200,162, 25,201,242, 18,127,177, 36,232, 64,152,222, 32, 8,193, 80, 42, -254,235,131,146,255,252,118,201,119, 15,115, 84, 85,240,241,137, 37,147, 29,202, 58, 38, 90, 19,136,249,215,222,123,186, 16,112, - 82,240,164,111, 89, 15,158,229,120, 29,174,187,200,246,127,166,152,239,238, 33,153, 38,246, 84,220,101, 0, 83, 82, 77, 37,133, -208,252,117, 83,243,191,156,159,211,213, 61,235,186, 69,107, 73,161, 53, 10,137, 81,129, 45, 80, 72,197, 53,101,112,233,180, 22, -218,160,164,162, 23,146,198, 57,230,101, 21,139,117,240,244, 82,114, 14,180, 1, 38,133,161,146,146,243,206,226,189,139, 91, 72, - 4, 85,174,121,180,108,184, 49,201,185, 88, 55, 40, 41, 17, 82,112,222,245,200, 32,184,112, 61,125,231,241, 90,131,214, 52, 67, - 67,231, 28,219,190,199,135, 64,150, 41,206,235,142,128,231,253,203, 45,249,176,101,233, 99,254,251,169,183,216,102,205,224,225, -100,117,193,103,174,167,217,108, 88,110,214, 88,224,100, 89,179, 50,146,117,107,169, 7,203,121,221,225, 16,201,179,193,227, 86, - 91,130, 54,180,203, 21,193, 7,218, 39, 43,130, 81,216,186, 35, 12, 29, 97,186,160,169,183,172,116,198,111,205, 42,150,155,134, -206, 75, 94,158,228, 52, 93, 75,129,133,188,224,142,239, 57,241,138,174, 95, 97,109,207, 16, 96,145, 23,228, 66,210,218,232,210, -247, 32,136,200,125,154,100,241,126, 24,161,239,111, 98, 89, 62, 42,173,178,184, 90,193, 13, 9,185,181, 87, 40,192,122, 24,168, -123,139,181, 2,111, 3,195,224,217, 52, 14, 33, 2,182, 79,161, 96, 93, 31,159,159, 46, 14, 99,144,146, 78,247, 93, 87,125, 26, - 2,174,166,244,196,102,180,254,133,204,220,254,241, 20,117, 83,196,244, 32,228,151,230,117, 63,119, 90,207,246, 32, 80,165,227, -129,242, 67,100,172,219, 62,234,110, 69, 58, 34, 33, 77,135, 90,236, 96,244,164, 41, 39, 36,104,101,132,232,165,220,155,244,211, -212,101,197, 14, 94,127, 54,181,205,167,137,223, 37, 41,152,243,145,176,225, 1, 97, 56,203, 37, 47, 47,230,244,221, 64,176,150, -187, 79, 62,229,131,123,159,236,180,144, 58, 78,131,147,210,112, 56,201, 89, 76, 43,102,249, 28, 41, 37,214, 14, 44,251,142, 77, -215,243,164,238, 99, 30,187,206,224, 96,194,157, 69,201, 97, 89, 82,230, 37,243,114,206, 91,223,123,157,235,179,146,204, 8, 62, -120,239, 99,222,251,228, 35,184, 60,249,166,112,200,158,110, 51, 69,241, 86,115,178,178,228,160,200,200,181,161, 13,129,143, 30, - 62,224, 79, 63,124,143,247,254,230,239,192,109,246,150,144, 38, 22, 43, 41,227,212,238, 82, 65,175,219, 20,247,153,154, 38,163, -190,121, 39, 93, 20,177,136, 78,167,176,217,166, 41, 57,192,164,138,231,181, 79,222,246, 82, 70,103,166,182,191,178,239,197,199, -104,225,120,142, 18, 44,159, 21,241,245, 5, 82, 1,110,227, 62, 61,249,223,211, 52,113,119,175,216,161, 67,251, 81,139, 87,225, - 13,114,215,224,133, 61,214,171,115,177, 48,236,191,223,253,191,123, 31, 39,243,100, 97,138,115,145,112, 39,211,100,158,114, 5, -174, 86, 25,125, 63,218, 95,193, 43,183, 80,229,140, 27,101,197, 54, 23,240,228, 50,233,204,211,185, 92,204, 35, 18, 20,194,206, -132,102,181,142, 73,123,155, 26,174,207, 33, 4,196,172,136,175,121,219,166,102,110, 27,139,121, 82,153, 8,231,163,157,229,249, - 26,113, 48, 71,228, 38, 30,183, 77,141, 24,250, 24, 13,170,210, 74,164,183, 64,224,167, 93,207, 27,198, 80, 17, 80,125, 75,211, - 90, 62,169, 91,126, 58, 56, 62,177,142,235,243, 25,223, 41, 42,222, 94, 28,161,134,158,181,247, 28,116,151,124,234, 76,108,172, -102, 7,145, 56,184,184,193,143,143,143,185,223,172,240,189, 35,212, 91,194,253,207, 8,153,137,124, 10, 39,248,147,155, 37,223, - 59, 46, 89,228, 26,147, 73,126,182,246,232,213, 41,165,209,116,125, 71, 78,160,151, 38,150, 99,109,120,210,109, 25,132,196, 14, -150,190,239,232,214, 49,255, 65, 52,245, 83,197, 92, 60, 85,216, 61, 2,141,192, 94, 77,235,216,142,159, 7,195,159,122,199,159, - 55, 61, 53,169, 73, 20,130,237,186,129,204, 96,113,136, 32,201,149,226,186,210, 12, 4, 94,214, 5,185,206, 89,135,128, 70, 97, -181,230,176,172,216,122,199,160, 13,235, 32,112, 82,176,246,129, 13, 49,161,113,150, 25, 42,163,232, 7,199, 48,120,172,128,102, -176, 17, 58,111, 7, 14, 50, 21,141,180,172, 67,245, 22,213,119, 8, 33, 57,181,158, 94, 72, 6, 17, 73,215,117,223,114,233, 3, - 23, 46,176,217, 54, 76, 76,198,197,166, 97,161, 28, 15, 90, 75,233, 58, 30,110,107, 28, 61,219,110,203,159, 45, 47,184,168,155, -216,144, 54, 17, 70,118,231,171,248, 60,220,180,208,247, 49,201,174, 31, 98,200, 86,211, 17, 86,171,120, 15,157, 44, 99,145, 93, - 94,198, 21,195,233, 50, 26,187, 12, 1,108, 67,168,230,116,237, 26,134,158,133, 12,156, 15, 3,133, 17, 4, 27,157, 11, 55,205, -138, 90,192,147,166,230,208, 24,206, 91, 75,158, 5,166,166,192, 5, 16, 90,179,181,150,123, 99,152,202,164,136,190, 36,215, 15, -163, 75,162, 76, 68,225,175, 83,103, 76,182,139, 20, 31,221, 73,247,239, 65,239,163,117,122,223,209, 53,142, 70, 6,154,186, 71, - 40, 69,223,244, 73,174,214,196,223,235, 54,169, 64, 63,199,117, 85,243,140,220, 40,125,253,130,205,200, 63,142,162,174, 83, 22, -176,142,214,170, 95,197, 42,126, 62,213,120,239, 97,218,165,192,150,171,253,185,221,177, 92, 66, 58,112,195, 62, 20,236,158,110, - 14,180,121,122, 90,191,154,184, 83, 66, 92,231,118, 80,238, 62,132, 47,216,193,162, 33,193,180, 99, 23,166, 4, 46, 24,234,208, - 48,241, 61,203,205, 35, 46, 54, 39,108,124,199,224,119,150,130, 89,169,185, 86, 77, 56,172, 74,166,217,132, 66, 90, 78,169,235, - 0, 0, 32, 0, 73, 68, 65, 84, 27,108, 8,108,135,150,139,237,134,179, 77,135,219,246, 48,128,152,228, 92,159, 23, 92,171, 10, -102, 69, 69,174, 50, 6, 2,175,189,122,135,249, 52,227, 98,213,177,222,212,188,243,209,123,176,190,124,174,246,246,171,235,186, -219,243, 3,144, 48, 95, 80,205, 74, 14,178,156,160, 20,171,186,229,201,102,203,242,228, 18, 46, 79, 83,243,147, 46, 88, 61,162, - 32,169,248,140,133,193, 36, 66,158,237,119,251,229, 47,156,212, 83,215, 58,194,226,232,167,239, 4,157,104,252,102, 22,245,158, - 70,198, 27, 80, 22,224,154,157, 54,116, 83, 67,189,141,231, 56, 58, 73,128,206, 83, 99,230,226,121, 51, 58, 54, 8, 46,194,226, -148, 42,122,217,207,170,116, 46,109,146, 47, 57,162, 56,117,111,133, 16,194,211,133,221,166, 66,218,251,221,154,232,107, 48,117, - 62, 71,140, 51, 58, 54,164, 99, 65,246,196,227,233, 92,226, 61, 4,152, 47,120,235, 91,175,243,107, 71,183,184,153,151, 76,253, -192,227,211,232,206,118,149,147,144,151,187,166,202,218,200, 11,209, 38, 73, 63,199,172,231,128,152,228,177, 72,103, 10, 46, 46, -163,217, 19, 62,146,230,172, 67, 12, 3, 98,176, 8, 23, 82,118,193,140,127,254,250,109, 66, 54,112,250,217,229,238,149, 91,119, -245, 30,124,215,241,231,141,197, 13,142,198, 8, 30,122,203,251, 18, 62, 81,240,104, 99,185,121, 48,225,119,111,188,196,245,188, -224, 85,105,152,175, 47,168,221,128,217, 62,230,209,166,129,182, 39, 28, 28,240, 47, 95,191,206, 31,189,121, 27,161, 22,188,223, - 46, 99, 70,188, 84,132,135,247,225,248, 26, 28, 29,241,122, 85,240,237, 69, 78, 43, 4,103, 29,220,247,240,248,211,135,152,224, - 49, 4,214, 82,130, 16, 56,161,120,104,123, 10, 33,144, 42,103,232, 7,142, 50,104,236, 64,183,105, 16, 67,159,244,198,241,116, -238,127, 22,105,167,254, 84,177, 31, 44, 98,219,211, 78, 13, 78,166, 66, 47,227,196, 37,130,163,217, 52, 52,198, 80, 72, 34, 63, - 70, 75,230, 62, 80,101, 6,235, 44, 83,105,152, 72,197,214,123,122,233, 17,186,164,182, 61, 94, 74, 30, 9,197,178, 23,172, 26, - 75, 94, 26,182,110, 64, 75,193, 76,105,188,243,180,221,128,246, 30, 63,120,242, 16,240, 8,164, 8,176,237,152,181, 29,165,179, -168,224,104,115,197, 73,239,216,184, 64,235, 28, 27, 33,232,156,231,126,183,102,144, 25,149, 86,200,190,225,222,106,195,249,208, -178,238,123, 54,182,163,235,123, 62, 91,175, 57,107, 45, 92, 46,227,245,119,177,142,241,219,193, 71,181, 81, 63,196,123,202, 54, -241, 26,243, 67, 84,141,228, 57,156,158,199,251,111,181,138,215,196,118, 27,135,159,109, 3, 34,198, 37, 35,162,251,231, 89,223, - 51, 15,240, 51,231, 89,116, 29,235, 32, 88,214, 91, 30, 4,133,182,142, 39,214,161,188,231,174,179,252,197,118,203,107, 50, 96, -101, 96, 51, 12,252,101,111,227,229,138,143,107,184, 60, 71,234,156,151,143, 15,152, 29, 77,168, 15,231, 4, 39,211,250,244, 5, -208, 65,231, 34, 73, 88,184,221,189, 2, 41, 95,100, 72,171,222, 16, 27, 24,198,148, 75,129,235,250,248, 59,172,141, 5, 93,217, -157,204,247,203,102,168,209, 9,117,159,168,247,194,180,162,127, 12, 69,221,251,180,175,216, 17,135,190,209,207, 64,198, 93,135, - 27,226,131,168, 75,218, 16,199,110, 23,225, 34, 9,126,127, 0,189,130,136, 71,237,185, 76,208,188, 16,241,117,165,155, 63, 66, -156,163, 55,124, 58,137, 98,183, 51,143, 77,129,137,147,169,244,201,160,127,120,250,196, 76,102,148,243, 9, 85,169,200, 53, 20, - 38,222,232,151,214, 19, 92,180, 14,172,202,130,235,179, 41,243,162,162,204, 39, 41,173,171,231,124,187,230,164,110,217,110, 59, -132,245, 80,104,110, 45, 10,110, 86, 21, 85, 81, 98,164, 70, 74,205,209,225,171,160, 74,250, 32,120,248,112,201,195,199, 15,249, -232,254, 61, 88,158,127, 51,232,105, 31,133,240,196,155,114,126, 72, 85,149,232,148, 91,126,210, 52,108,158, 92,194,217,131, 20, -180,147, 90, 80, 97,210,234, 34,117,184, 89, 34,132,141,176,187, 75,123,238, 97,120, 62,244,174,229,174,113, 29, 93,253, 70, 72, -106, 50,141, 95,151,243,184,227,118, 46, 74,139,236,144, 32,172, 33,157,244,104,231, 24,247,224, 1, 84,145, 76,135,210,117, 83, -153, 56, 69, 84,217,142, 91, 81,165,102,161, 72,174, 79,222,197,255,103, 36, 77,202,196,187, 24,228, 30, 9,208,196,189,155, 52, -169,121,200, 32, 31,149, 4,207, 63,246,226,170, 81,121,186, 97, 9,251,141,141, 72, 1, 70, 46, 17,170,204, 12,249,171,111, 17, -206, 47, 82, 53, 17, 80,206,184,249,202,109,102, 69, 69,166, 10,140,132, 79, 79,206, 97,187,142,175,105, 76, 78, 20,130, 76, 9, -110,107, 88, 53,251,107, 43,153,204,151, 28, 28,205,160,152,197, 9,220,135, 68, 24, 84,136, 20,205, 43,246, 27, 62, 60,255,213, -219,111,241, 47,222,252, 46,191,119,253, 38,239,172, 78, 56,191,216, 92, 53, 56, 87, 54,150,222,227,109,207, 7, 97,224,207, 6, -193,217, 52,231, 1,158,115, 47, 24,108, 64,230,134,223,153, 46,184, 38, 13,197,224, 41,183, 23, 56, 4,210, 7, 84,127,201,163, -229, 25,223, 95, 28,243,251,223,190,193,155,215,231,156,108,122,126,210, 65,200, 6,194,201, 25,225,244, 81,116,194,155,223, 98, - 57, 59,224,179, 65,240,216,193, 71,173,231,211, 85,207,185,133,220,121, 90,219, 70,110,177, 52,180, 2,132, 16, 32, 13, 50, 56, - 22,153, 33,247, 3,202,246,132, 48,208, 46, 55, 8,239,159, 2, 67,197, 51,224,168,124, 22,150,183, 61,172, 54, 8,159,208, 64, -149, 26, 49, 36, 88,135,235, 58,214, 66,144,107, 67, 55, 12, 44,140,230,178,239,120, 75,231, 4, 99,120, 40, 36, 85, 97, 48, 86, - 80, 7,207,133, 54, 60,118,158,199, 27,203,214,123, 90,226, 37,238,149, 36,243, 30, 23, 60,218, 58, 46,235,142,185,148,184,222, -178,181, 3,155,245,134,126,219, 48,107, 7,140, 31,208,222, 81,132,232, 65, 95, 86, 57,119,166, 25,111,148,134,219, 69, 70,222, -247,172, 61,156,247, 13,239, 53, 91, 62,108,107, 30, 13, 29, 39,182,231,241, 96,121,220,108,121,112,121,198,210, 9,196,201,147, -216, 36, 95, 92,198,235,146,189,208,173,164,144,136, 60, 20, 23,229,155,163,194, 98, 31,145,218,123,110, 6,239,146,135,134,132, - 34, 35, 92,108, 8,133,230,161,247,220, 14,158, 71,213,156,118,123,201,251, 58,167,116, 29, 91,107,217, 10,197,165,119, 56,215, -115, 17, 2, 15,187, 30, 53,120, 78,219,154,251,193, 63,197,139, 58,194,243,118, 49,225,119,230, 19,126,237,224,136,223, 60,152, -163,103, 57,247,114,149, 86, 98, 47,176,250, 19,196,250, 50, 42,147, 70, 95,143,113,101,107,251,184, 82, 27, 18,147,221, 15, 73, -230,236, 18,212,158, 2,195, 94,244, 25, 60, 62,155,198,191, 75,253,197,132,220,127,180,240,251,213, 68,243,180, 85, 30, 90, 39, - 6,115, 98, 11,127, 25, 81, 64,138, 52,125,141, 33, 42,201,222, 85,133, 29,204,106, 68,124,206,143, 63,195,164,234, 46, 19,236, -234,146, 99, 80,158,195, 75, 7,112, 52,133,101,189,243, 65, 23, 50, 77, 30,209, 87, 56,154,180,236, 17, 28, 38,101, 44,236, 38, - 75,221,149,125,250,245,154,146, 27,119,110,240,202,252, 16,109,178,184,214,237, 91, 78,183, 93, 42,234,146,235,147,130,107,213, -140,210, 24, 36,138,206, 15,172,251,154,243, 77,205,197,101, 13,189, 69, 40,197, 43,243,130,151,143, 38, 28, 84, 37, 70,104, 50, -157, 83, 84, 83,254,211,223,255, 1, 63,126,243, 8,169, 21,127,241,211, 19,254,242,227,191,163, 89, 95, 68,189,242, 47,179,179, - 30,177,162,234, 16,142, 14, 40,141, 70, 9,120,188,174,105, 87, 27,184,184,136,197,121,212, 91, 74,145,136,114,121,220, 29,233, -189, 34,110,212,142,245, 62,118,194,207, 67,113,236,142, 0,138,220, 63,119, 58,222, 48, 38,139, 55,154,117,145, 16, 87,111, 64, -151, 17,249, 9, 42, 90,127, 14,109, 44,106, 33, 62,188, 17,169,185,168,242,216,104, 76,146, 4, 70,171,248, 59, 42, 19, 31,198, - 70, 38,182,121,216,153, 16,217, 68,192, 20,106, 15,194,243, 81, 58, 35, 68, 68,114,148, 1,153,237, 94,255,115, 61,197,147,235, -222,216, 84,122,187,199,122,245, 79, 55, 54,227, 49, 29, 43,199,181,235,252,240,205,215, 57,249,224,227,248,125,231, 33,203, 56, - 61, 92, 80, 86, 11, 46, 3,188,223,118,116,143, 31, 68, 38,183, 17,144,149,208,110,184,118, 60,231,247,143, 42,110,101,154, 66, - 5, 78, 46,215,241,191, 13, 77,132, 24, 69, 72,146,205, 99,254,217,241,171, 28, 79, 12, 15,158,156, 70, 67, 27, 19,163, 64, 73, -211,171, 48, 26,208, 44, 22,134, 63,254,193,143,248,219, 39,103,220,117, 61, 15, 30,159,198,200,224,177, 65, 73,210,176, 49, 89, - 42,120,201,153,201,240, 72,110, 2, 63,170, 50,110, 20,130,169,148,188,220, 7,228,208, 32, 49, 52,190,229, 0, 9, 89,206,203, -194,177, 25, 28,157,207,216,132,192,191, 62,233,120,210,119, 4, 83,194,172,140,199,110,189, 37, 72,135,206,143,248, 48, 72, 46, - 7,248,100,176,172,183, 17,181,105,234, 26,134,192, 36, 19,116, 78, 32,114, 77, 70, 12,136,154,168, 12,165, 20, 42,192,205, 16, - 19,178, 30, 53, 61,170,115, 72,118,133, 93,125, 65, 65,127,182,176, 51, 88,196,182,129, 46,217,127, 75, 5,185,185, 74,236, 10, -181, 99,179,220,178, 21,176, 10,158,185, 17, 8, 93,176,178, 61,103,182,229,124,112, 88,109,120,191,239, 80, 66,240, 68, 9,206, -154,150,117,240,216, 44, 99, 93,183,100, 97,192,123,168,155, 14,183,109,168,140,138, 54,202,131,229,100,179,230,108, 91,211, 52, - 13, 19,107,163,211,156,181, 4, 15,153, 49,220,152, 78,184, 49,155,112,108, 12,151,131,199,202,128,168, 27,222,111, 55,132,161, - 33,244, 45,222, 89,232, 26, 66,189,134,243, 83,196, 96,225,228, 28,218, 22,177,169, 17,146, 8,179,135,164, 6,217, 47,232, 95, -151,113, 46, 71,211, 31, 15,133,137,207, 82,239, 88, 26,131,234,182, 60, 54, 25,175, 14, 53,181,201,185, 59,180,204,148, 96,105, -123, 78,156, 67,234,156,239,248,150, 75,239,249,168,109, 8, 30,222,146,146,133,144, 92,122,199,155, 38,227, 87, 38,134, 91, 38, -199,168,128, 17,154, 75,223,115, 87,104,156,208, 17,189, 82, 89, 42,206,246,249,104,165, 73,211,186, 50, 96,219,196, 93, 73, 12, -246,253, 24,242,167, 2, 89, 82, 16,216,215,217,231,107,253, 12, 4, 47,159, 46,246,254,255, 11, 69,221,185, 47, 46,232, 87, 15, -197, 4,139, 7,249,197,112,201,213, 30, 34, 60,221, 5,238,235,112, 71, 25,149, 25, 63,167,255,238,252,110,210,145,137, 72, 39, - 45,211, 87,111, 49, 45, 50,154, 39,235,100,237,103,119, 48,116,231,119, 18,170,241, 53, 23,147, 4,131,202, 29, 84,237,159,121, -152,231, 19,236,108,198,237,131, 35,148, 16, 56, 31,184,216,108, 56,171, 59,148, 86,148, 74,113, 52,201, 40, 77,134, 86, 10,239, - 28,219, 97,203,197,182,230,193,170, 78,177,166,176, 88, 20,188,116, 88, 50, 47, 74,140,201, 98,230, 60,130, 27, 7, 51,126,251, - 87,191,197, 98, 58, 99,106, 20,239,222,219,240,206, 47, 62,196,214,107, 56, 59,121, 46,188,251, 66, 59,165,249, 20,200,120,237, -199, 63,224,215, 95,126,157, 91,179, 5, 65, 58, 90,215,209,124,250, 16,252, 38,237,206,139, 84,204,211,241,108,235, 72, 34, 28, -139,184, 20, 17,150,203,205,206, 11,249,139, 46,246,241,220,143,146, 77,253, 12,194,226, 71,123, 95, 19,111, 68,157, 39,107,224, -144, 98, 99,137,134, 67, 38,143, 77,217,200, 7, 48, 69,108, 20,117, 98,144, 79, 77,146,170, 40,200, 21,114,146, 35,180, 66, 26, - 69, 24,207, 33, 41, 48,104,176,241,223,140,112,154, 78, 48,254, 32,163, 49, 81,110,146,244,164,139, 23,135, 78,202,129,231,133, - 1,233, 81,159,191, 87,216, 71,207,234,103, 31,120, 34, 77,235,227,199,118,205,201,199,159,238, 96,127, 66,108, 88,143,103, 60, -201, 43, 78,135, 45,157,181,208,109, 34, 84, 58,254,204,131, 67, 94, 91,104, 50,163, 9, 1, 62, 89,246,108,181,129,213, 5, 76, -230,208,213,241, 61, 8,193, 31,190,254, 38, 63,124,227, 85, 74,239,184,215,173,232, 78, 19, 92,218,237,145,199,140, 70,100,154, -251, 23, 45, 31, 46, 31,241,192, 76,184, 11, 44, 55, 13, 97,179,141, 58,111, 41, 63,159,130,102,123, 66,208, 28, 21,240,134,210, -188, 81,149,188, 49,159,210,121,203, 13, 37, 81, 46, 66,157,153,146, 76,117,134,240,150, 30,144,125,205, 79,159,156,240,111,206, - 59, 30,116, 77,132,221,117, 70, 16, 6, 42, 77, 48, 18, 46, 47,217,108, 46,121,141,130,207,182, 3,125,221,208,116, 3, 85,219, -192,118,197,145,148, 8,153, 81, 77, 12, 90, 72,188,130, 3, 64,104, 69,142, 96,130,128,161, 37,195, 33,133,224,162,173, 81,131, -101,164, 8,236,255,217, 47,242,159,219,185,251,184, 99, 23, 46,128,214,136,210,196,128, 35, 37, 16,237, 16, 55, 78,118,224,210, - 57, 30,116, 3,109, 24, 56, 13,142, 51,111, 49, 66,240, 81,223, 48, 17,130,143,189,227,209,170,166, 53, 37, 79, 54, 75,250, 16, -168,125,207,196, 69, 87, 75, 97, 29,167, 67,199,114,187,165,173, 59, 62, 93,157, 51,244, 29, 67,112,172,251, 45,166,219,112, 83, - 40,108,146,241,137, 44,103,114, 48,141, 54, 17, 82,112,152, 25, 30,174, 87, 56,215,243,176, 27,168,235,109,188,103,150,231,132, -203, 11, 56, 95, 34,150,107, 56,189, 68,132, 14,209, 70,164, 70,132, 30,132, 65, 40, 31,101,138, 62,161,114,163, 84,245,235, 32, -131,222,167,240,149, 68, 0,237,134,132,140,246,116,194,131, 13, 92,106,197,118,179,129, 32, 89, 91, 71, 23, 28,232,156, 31,251, -134, 11,149,241, 27,153, 96,134,226,183, 84,148,159, 86, 67,205, 45,161,208,120,126,101, 58, 97,145,130,210,182, 67,199, 84, 74, -126,178,105, 8,133,142,210,183, 34,135,249, 60,145, 92,247, 82, 63,159,154,214, 83,243,210,182,113, 88, 24,119,227,157, 77,255, -205,255,191, 52,228,202, 47,159,128,191,228,247,252,195,155,207, 24,189,199, 90,126,166, 83, 82, 50, 86, 94,147,168,255, 50, 61, -221,195, 23, 9,241,247,222,138,251,130,130, 62,194,223,201, 4, 4,201,206, 46,118,172,112, 87, 38, 49, 22, 6,205,230,231,119, -227, 3,121,219, 38,210, 83,218,151, 42,187, 11,132, 65,238,153,181,216,120, 97,132, 4,155,116,225,105, 67, 1,128, 97,205,198, - 89, 92, 80,180, 22,214,173,227,164, 30,144, 8,202, 76,113, 80,228, 20, 38, 50, 97, 91,107, 9, 56,214,109,199, 69,215, 19,172, - 67, 40, 13,165,138,164,184,162,136,161, 33, 16, 67, 36, 92,203,195,179, 53, 39,203,142, 42,239,120,184, 28,176,206, 38,162,158, -251, 6,114,182,221,199,244, 55,190,195,183,230, 11, 38,170, 98, 54, 59,226,120,113, 72, 46, 13,215,219, 25, 85, 46,248,243,247, - 62,130,173,141, 59, 89,246,229,107, 73,106,214, 63,109,168,195, 36, 17,209,244,151,152, 42,140,231,107, 60,189,227,215, 58,157, -171,174, 7, 61,219, 17, 42,100,202, 35, 38,201, 25,221, 22,156,137,133, 93,164,140,248, 60,201,178, 72,205, 93,110,226,142, 44, -207,200,178,216,100, 41,160,144, 26,171, 28,181, 21,228,165,166, 27, 18,146, 52,155, 68, 63,245, 73, 30, 97,245, 38,105, 75,171, - 50, 90, 6, 75, 29,201, 67,121,145,222, 67, 27,157,232,122, 3, 19,226,123,126,170, 27, 79,124, 15, 29,167,221, 88,224,247, 59, -152,189,181,144, 75, 1, 16,227,234, 98,108,112,198, 99,145,103,209,140,105,179,129,195,109,116, 54,211, 9, 45, 40,202,168,195, -159, 86,240,248,140,119, 57,230,222, 12,100,110, 88, 41, 13,155, 75,152, 30, 64,187,141,123,116,239, 97, 93,243, 89,215,113,116, -190,229, 51,159,179, 12, 42,110, 49,106,251,244,121,243, 50,230, 84,219,158, 63,255,236,130,197,225,171,172, 79,207, 98,255,145, -206,249, 83, 83,250,222,159, 80, 47, 89,103,146,249, 97,193,119, 23, 37,153,144, 56,165,249,100,123,193, 91,197, 33, 70,121, 38, -147, 25,222,246,220, 12, 14,143,196,245, 43,190,181,189,228,238,234, 18, 83,205, 8,179,107, 4,100, 52,192,201, 94, 38, 20,115, -130,235,248, 23,179,156,191,189,247, 87,188, 89, 45, 88,150,135, 20,229,140, 39,237,150,107, 66, 64, 89,198,185, 91, 43,180, 20, - 76, 27, 79,143, 99,129,192, 23, 19,194, 48,144, 87, 71, 84, 66,113,190,174,209, 38, 39,198,194,124,126, 34,223,111, 84,174,222, - 87,250, 44,198,247,190, 93, 19,130, 36,100, 10,170,138,160, 12,225, 72, 35,122, 75,216, 52,132, 77,207,210, 57,254,109,231,249, -241,177,229,194, 43, 62,212, 27,174, 77, 42, 62,114, 27,200,166,108,125,160, 8,209,204,103,211,110,232,124,192,234, 14,113,182, -230,237,197, 1,178, 31,168, 76,198, 59,219, 19,174,137,156,114,176,156, 13, 27, 46, 29,220, 15, 45,101,223,112, 92,206,177, 69, -197, 76, 11,182,155, 22, 93, 21, 56, 37,176, 93,135,148,154,135,221,192,106,216,144, 97,105,235, 21,172,215,136,101, 3,171, 21, - 65, 14,136,145, 83, 50,158,215,222, 35, 84, 15, 72, 2, 30,161, 36,193,181,105,205,240,245, 72,175, 97,188,231, 85, 3,107, 29, -137,168,125, 7, 7, 7,177,192,151, 9, 82,207,243,120, 47,200, 36,237,180, 45,179,162,228,147,182, 97, 41, 4, 71,153,226,227, - 65,114, 68,203,185, 87,188,149, 5,250,208,209,175, 47, 97, 50,101,166, 21,107,215,115,210,245,120,145, 86, 35, 34, 68, 57,107, -211,195, 75,215,225,108,147, 34, 82, 19,172,222, 15,177,144, 15, 22,244, 38,222,159, 87, 38, 97,123, 70,101, 90,255,242,122,120, -173,191, 24,250, 15,207,148, 59,251,143,117, 82, 31, 39,112,165,227,222, 81,238,125,125, 53,229,176,251,108, 71, 93,174,253, 18, -182,160,125,250,107,255,140, 92,192,237,193, 33, 87,242,163, 44,254, 78,108,100, 99,187, 36, 53,112, 9,234, 80,196, 7, 38,169, - 83,243,118, 23,252,146,233, 84,188,211,207, 22, 68, 63, 95, 98,224,253,231,100, 87,179, 3,202, 42,167,115, 61,237, 48,176,238, - 26,122,219, 51,211, 25,135,121, 78,145,101, 8, 33,105,135,142, 77,219,114,110,123,150,109, 79, 24, 2,170, 52, 28, 87, 21, 7, -147,130,194,228,104, 37,233,251,129,203,182,225, 73,189,225,238,197, 25,205, 70,242,201, 67,199,187,159, 62,225,253,187, 31, 80, -169,128, 83, 57,109,239, 9,205,234,235, 23,247, 55, 94,225,159,254,202,247,185, 61,191,198,205,195,235,204,103, 7, 44, 14, 14, - 40, 76,134,243, 61, 77,187,228,211,229, 18,206,151, 59,153,213,216, 84,133, 16,215, 20, 89, 58, 31,253, 30, 52, 47,229,231,143, -207,243,246,248,114,239,239, 30,200, 85,156,184,155, 77, 34,160, 16,247, 89, 56, 80,147, 8,187,155, 44,157,184,116, 30, 77, 74, -200,209, 58, 58, 66,205,242,120,141,149, 5,224, 9, 62,112, 84,229, 87, 15,236, 76, 38,171, 77, 31, 8, 66,197,189, 95,112,105, - 98, 78,136, 81,174, 83,140,162, 74,193, 65, 99,196,111,136,223, 23, 33,238,214,242, 34,222,149,251,124, 17,159,184, 2, 9,118, -140,215,244,190,209,254, 30,203,118, 68, 61,174,162,113,247,110,114,159, 16, 16,159,194,136, 38, 51, 56, 92, 64, 62, 69, 9, 65, - 38, 21,110, 52, 81,217,180,145,244,119,185,161, 47, 10, 58,147,208,132, 50,143,238, 91,101, 21,247,128, 58,114, 33,206, 53,188, - 43, 53,247,187, 26,164, 67, 60,124,188, 11,164, 72,240, 59, 18,196,104, 0,213, 91,218,161,142, 43, 47,173, 9, 82, 71,118,116, -146,227,125, 62,163, 92,114,205, 24,126,235,230,148, 91, 89,193,196,100, 8, 37,249,197,208,113, 32,161,202,231, 8, 33,112, 56, -132, 16,244,222,177, 28, 58,154,190, 67, 52, 27,182,167,151,216,205,217, 21,124, 19, 76, 73, 40,103,252, 15,175,220,230,247, 94, -122,137,227,233,130,127,253,228,132, 91, 65,112,186, 61,231,150,130,163,108,194, 52,211,148, 69,142, 29, 98,242, 95, 41, 4, 57, - 62,242, 96,241, 20, 89,134, 14,138,105, 81,177, 40, 51,110,230,146,187,203, 14, 29, 28,198, 75, 12,158,241,113,174,158, 3,199, - 63,245,199, 59, 16, 30, 49, 36,110, 78, 89,112,109,118,192, 31, 93, 95,240, 79, 94, 57,230,164,222,178, 94, 54, 4, 60, 15, 55, - 53, 23,214,115, 62, 88,238,213, 29, 91,165,248,108,121, 70,231, 6, 30,172,207,104,112,172,173,101,109, 91, 30,116, 53,107,231, -248,219,139,115, 38,194,242,168, 94,242,139,186,229,172,222,114,183,169,209,190,227,175, 79,206,249,216,195,208,173,208,120, 78, -240, 88, 4, 74, 72,154, 20,108,243,222,118,203,123, 23, 75, 62,232,182,224, 2,153,237,113,193, 98,211,115, 82,180, 93,124, 15, - 1,132, 13,136,144, 38,115,107, 35, 31,193,249,104,123, 19, 66, 44,252, 95,115,205, 23,158, 69,109,187, 38, 93, 88,169,154, 41, - 17, 7, 41, 49, 18,107,137,114, 81,231,248,149,178,160,238, 26,222,158,228,209,138, 2,207,143,139,156,247, 26,203,143,171,156, -141,237, 41,165,164,177, 14,221, 53, 8,107,121,210,183,252,207, 23,203,216,168, 15, 9,125, 29, 3,190,180,230, 55,111, 86,252, -209, 43,215,248,209, 75, 71,188,121,243, 58,191, 88, 28, 50, 76,170,221,250,117, 24,146, 12,186,216,153,133, 5,183, 99,194,127, -227,130,254, 69,204,119,190,160,182, 61,127, 90,255,135, 45,234,251,147,202, 24, 87,122,213, 2,139,120, 34,145,241,160,141,208, -249, 24,146,178,127,209,248, 17,174,120,246,161,200,231,119,218,159,131,119,109,124,248,155,113, 63,158, 14,170, 86, 73,146, 38, -227, 5, 52, 6,200,140,110, 98, 97,188,123,243,157, 14,123, 31, 17,240,246,249, 5,171,172,200,167, 37,210, 7,182,125, 67,215, -247, 4,235, 57,154, 22,148, 89,129,146,130,193, 90, 90,235, 56,111, 59,214, 77,135,245, 1,101,114, 38,153, 97, 90, 26, 38, 69, -142,137,157, 6, 77,215,178,234, 91,206,215, 61,171,186,230,195,123,247,120,247,222, 7,172,150,143,184, 61,187,201,245,234, 6, -139,131, 99,238, 93, 60,138, 19,217,139, 94,116,142,136,138, 28, 46,120,229,218, 33,185,202,168, 38,115,132, 18, 20, 89, 78,179, -169,145, 74,240,100,249,132,187,255,254,189,248,158, 71,214,102, 8,187,162, 62,186,188, 57,191,251,220,245, 79,147, 12,191,148, -108,177,199, 33, 83, 73,199, 63, 50,229,139,196, 95,240,233,156,185, 4,201,211,165,203, 33,196,134,173,154, 68, 41,215,124,186, - 75, 94,146, 50, 18,227,132,231,104, 82, 82, 24,141, 70,178,200, 13,141,117, 84, 82, 99, 69,140,210,116, 4,130, 8,228, 69,137, - 27,229,143, 46,105,218,125,114,155, 35, 21,115, 41, 83, 66,148,221, 93, 67, 90, 69,251, 96,189,111,176,227,119,133,221,219, 47, - 0,206,252, 30, 73,102,143,131, 48,202,227,132, 72, 65, 66,201, 85, 14, 17,191, 95,205,225,232, 26,210,100, 8,169,240, 12,132, -182,129,139,243,216, 92,108,155,136, 44,228,102,151,239, 60,164, 9,108,232,162,171,222,232,156,104,109, 90, 79, 36,243,165,166, - 67,156, 62, 77,184, 20,222,131, 23, 8,147, 26,157, 54, 53,186, 87,134, 69,146,224,159,247,160,247,172, 85,198,143, 22, 37,183, -178,140,193, 59, 86,222,113,215, 90, 30, 73,207,235, 89, 69, 97, 74, 10, 97, 48,125,131,232, 26,238,213, 43, 6,239,169, 6,207, - 4,203,242,124,139, 61,191, 32, 20,146,144, 25,190,149, 79,249,195, 87,111,241,202,193,148, 7,155,150, 63,221, 52,124,178,189, -196, 11,205,194, 24, 54,193,113,123, 94, 48, 56,136,246, 51,129, 74,128,146, 10,165, 37, 2,129, 18,138, 73, 89,226,132,228,184, -156,242,250,226, 26,223,191,177, 32, 47, 52,219,204, 68,138,136,206,209,153, 68, 7, 80, 94,162,240, 95, 80,220, 53,210, 68, 18, -176,212, 38, 18,232,108, 64, 20, 25,191,127,115,193,111,223,126,149,219,249,132,197, 68,243,215,143, 46,162, 61,240,166, 37,116, -125, 92, 87,172,150,244,231,231,132,174,167,175, 27,194,164,164,111,107,250,203, 51, 6,219, 17, 54, 43,134,182,198, 5,203,189, -237,154,251, 23, 23, 44,187,142,243,174,229,162,111,185,223, 54,184,109,139,191, 92,242,241,186,227,253,118,205,153,180,124,108, -123, 42,169,249,120,187,225,253,229,146, 63, 59,189,224,189,190, 70,121,129, 12, 22,129, 99, 18, 60, 70, 9, 26,235, 35,225, 47, - 72, 68,202, 11, 23,222,199,226,206,110,125, 38,246,214,104, 79,113, 11, 94,224, 67, 60,143,195, 51, 38,223, 73,253,116, 83,172, -178, 84, 84, 13,167,214,242,135,243, 2, 23, 2,183,243, 28,225, 29, 39,125,195,175, 84, 19,126,178,217,240, 86, 49, 97,139,196, - 13, 45,189, 27,248,183, 79,158,240,201,106,195,249,186,137, 78,139, 38,145, 24, 67, 34,246, 5,199,239, 44,166, 84,198, 80,228, - 19,130,210, 12, 62,240, 88,201, 56, 24,164,192,159,100,234, 30,239,225, 33, 26,204,124,110,136,252, 38,220,178,103,235,215,184, -190,179,126,103, 95,254, 37, 14,115,255,176, 69, 93,250, 52,245, 36,131, 15,149, 58, 51,173,226,131,114,140, 59, 53, 41, 51,221, -166,233, 56,164,206,109,255, 13, 93,217,234, 61, 51,165, 91,255,229,140,121,147,165, 40, 77, 31, 9, 84,214,239,152,235, 87,230, -251, 54, 22, 18,233,175,148, 80, 41,104, 45,165,180,132,103,136, 17, 95,177, 91, 49, 37, 93, 86,144,233,192, 96, 7,218,174, 35, -207, 36,243, 60,195,168,152, 54,212, 59,199,186,111,185,236, 59,186,244, 30,170,162,224,160,202,152, 8,137, 17, 18, 99, 4,222, - 90, 86, 67,199,227,101,205,166,237,226, 36, 60, 56,172,134, 69, 57,225,229,227, 87,233, 66,143, 14,154,207,214,231,216, 71,247, - 94,108,159,238, 72,187, 49, 1,237,128,184, 62,165, 84,134, 82, 79,208, 89,137,210,130,174,110, 56,191, 56,229,127,255,249,207, -225,241, 19,110,254,225,239,178,253,244,222, 14, 5, 81, 9, 5, 25,189,142,159, 37,139,140,136,140, 20, 41, 17,206, 63,135,156, - 39,247,214, 49,236, 38,197, 44, 33, 2,117, 29,247,230, 67,212, 21, 71, 75,222, 42, 73,189,242,248,123, 22, 21,243,151,110, 83, - 84, 37,106, 90, 49, 56,155, 36,148,130, 92,107,148, 16, 84, 58,202,127,150,189,103,150,105, 58,239, 81,233,241,212, 91, 79,105, - 20,109, 61,196,253,153,243, 41,170,215,197,233,252, 74,155,238,211,132,110,227,181, 45,243, 88,120,135, 68,216,220,183,130,220, - 47,236, 90, 62,243,246,237,211,135, 96, 60,158, 87,246,197,236,153,221,164,239, 41, 21, 77,113,164,128,195, 25, 97,178, 32,216, -150,128, 76, 49,172, 77, 92, 7,248,116, 45,219, 49,125, 45,161, 38,219,246, 10,206,164,245,177, 1,176, 46,229,170,155, 72,146, - 11, 1, 86,235,232,136,183,255, 80, 30,123,106,163, 16,117,138, 57, 86,154, 48, 47,248, 87,111,220,160,156, 21,220,123,178,138, -123,211,103, 31,232,193,161,181,166,202, 12,107, 2,247,189,231, 3,235,248,179,206,242,123, 74,176,208, 37, 6,137, 30, 6,124, -187,226,129,179, 8,235, 17,214, 81,122,193, 66, 64,237, 29,221,163, 11, 2, 45, 47,107, 56, 44, 42,150,125,207, 95,157, 46,249, -249,122, 9, 82,210,218,150, 7,117, 67,237, 45,219,214, 82, 59, 71,145,151, 84, 10,114, 4,131, 15, 84, 1,156,119,136,114,130, -159, 78,169,202, 9, 89, 57, 69, 34,184,105, 42,126,253,198,203,252,218,205, 91,188,253,250, 29,110,221, 56,228,177, 46, 17, 86, -161,133, 67, 5,143,242, 30, 53, 41,162,171, 30,196,198,202,232,232,176,151,204,154,132,237, 17, 14,138,185,225,213,201,156, 78, - 74,238, 14, 61,239, 73, 79,216,118,176, 90,198,107,121,187,133,186, 35,244, 3, 97, 91, 19,250,158,112,255, 17, 56, 75,184,220, - 64,169, 97, 91,227,237, 0,221, 64,232, 90,252,166, 33, 88,143, 95,175, 8,117,135,111, 45, 97,179,193,183, 22,191,185,100,115, -126,206,253,117,207,167,131,227,223,212,151,252,249,106,205, 79,234, 53,143,188, 77,251,253,154, 82, 4,114, 31,200,188, 37,243, - 48, 87,130,181, 20, 41,201, 90, 34, 19,138, 42,242, 9, 34,215,187, 70,115, 68,110,158, 41,214, 95,172,239,255,170,194,174, 99, -209,154,148, 41, 82, 59,139,240,119, 57,137,141,124, 55, 64,105,120, 75,106,126, 59, 23,104, 83,160,156,101,229, 44, 62,120, 14, -148, 97, 35, 5,175,105,205, 25, 48,117,150,121, 94,112,210,118,220,145, 18, 63,116,116,109,207,182,238, 96, 91,167, 97, 36, 42, - 64,254,224,120,194,203, 89,134, 86, 25, 94, 40,140,214, 40,229,121,191,115, 73, 13, 35, 99,211,170,178, 36, 97, 78,247,239, 40, -171,126,161, 97,229, 75,184,200,242,139, 8,114,114,111,112, 77,181,238, 57, 48,255, 63, 92, 81,207,179,120,178,236,176,179, 33, - 29,109, 67,179, 44, 62,176, 61, 41,251, 60, 21,216,204, 36,194,211,222, 67,244,138,109, 56, 78,241,233, 11,251, 2,164, 5,173, -119,133, 65,154,221, 46,211,167,194, 48,234,217,247,131, 96,252,254, 78, 35, 77,162,146, 29,170,240, 34,154,199, 76,225,242, 41, - 94,198,160, 12, 47, 29, 19,101,226,164, 40, 21, 62, 8,186,193,114,209, 91,182,221, 0, 8,230, 7, 83,110, 47, 14, 40,181, 65, - 9, 16, 4,164,247,116,206,178,106,122,206, 86, 13, 97,240, 8, 31,146,116, 2,124,166, 17, 42,144,235,156,179,230,146,251, 79, - 30, 65,187, 34,188,136,193,139, 76,197,214, 73,232, 44,151,171, 37,159, 14, 61,199,101, 78,158,231, 12,221,192,166,105,184,127, -241,152,135, 31,222, 5,103, 99,152,194,197,242,105, 6,232, 87,161, 52, 34,101,222,203, 47,131,173,198, 48, 29,181,135,213,165, - 9,220,217,200, 92,109, 54,241,198, 31,145, 19, 63, 58,178,233,216, 20,222, 56, 38,207, 20, 90,104,132, 0, 43, 37,193,182,160, - 21,185, 84, 84, 70,145, 41, 69, 99, 3,149, 81,180,214,225,131, 39,136,128,199,145,107, 73, 63, 4,156, 27,253, 14,210,227,201, -118,169, 1, 10,145, 57,158, 21,169, 80,219, 36, 61,235,227,235,180, 54,146, 7,191,112, 90, 29,215, 73,123,219,230, 60,139,147, -244, 62,231,100,148,124, 62,187,190,130,216,160, 24,179,147,111, 22,121,108, 34, 84,130, 5,109, 23, 97,240, 85, 27,119,135,117, - 15,198,240,218,141, 9, 63,200, 53,175,101,138,187,103,171, 68,144, 75,122,117,124,124,144, 42,147,124, 5,178,200, 23,184,184, -252, 92, 81,199, 39,111,251,193, 38, 36,109,128, 44,231,191,127,227, 22,191,119,227, 14, 70,195,255,125,214, 68,159, 0,118, 22, -171,130,104,157,251,112,208,104, 41, 89, 3, 15,156,229,190,147, 88, 39,184, 27, 90,254,137, 41, 41, 48, 40,153, 81, 44,174,241, -242,209,109,174,103,134,101,223,226, 8,100, 88, 94, 54, 26, 41, 5,121,215,241,160,109, 8,126,195,191,127,248,144,127,119,118, - 70, 24,122,130, 34,154,214,100, 6, 79,108, 2,122,239,112, 54,112,123, 82,176,181, 45, 55,140,161,243, 1,147,229, 44, 14, 22, - 20,179, 9,250, 96,134, 51, 26, 33, 13,147,114,130,247,129,239, 29,220,224, 7,183, 94,229,187,179, 27,252,250,209, 13, 38,115, -205, 61, 15, 90,101,168,190, 71,117, 22, 57,153,160, 76,134,202, 75,228,224,144,194, 34,131,138,133,125,176,208,212, 60,217, 88, -154,210,177,148,129,159,212, 3,219,224,160, 72, 43,139,117, 29,175,105,219, 39,169,151,139,150,191, 67, 71,232, 60,129, 1,214, - 13,161,110, 97,121, 25,125,197,183, 29,161,183,132,224, 99, 19, 48,244,248,139, 19,130,235,240,109,131,239, 26,188,115, 49, 22, -183,174,241, 78,224,134, 26,239, 6, 6, 63,196,201,223, 65, 62, 88,140,112, 84, 82, 82, 10, 75,174,224,192, 40, 90, 33,152, 40, -197,171, 83,205,235, 7, 83, 14, 22, 5,213,193,140,165,154,166, 20,199, 72, 6,125, 17,199,202,231, 21,120, 1, 8,167,227,176, - 52,201,160, 92,196,235,149, 16,249, 33, 77, 90, 35, 45,166, 16, 36,255,201, 52, 3,161, 88, 54, 43,166,249,148,206,123,110,231, - 37,101,128,119,235,129,137, 49, 84,174,231,157,198,115, 93, 6,180, 18, 4, 9, 55,164,228,219, 18,254,195,233, 38,230, 62,116, -117,202,132, 8,220,154,230, 28,165,235,201, 75, 73, 23, 2,119,155,129,251,222,238,236,165,125, 34,216,230,121,188,239,138, 34, -162,129,243,121,228,173, 16,146,174,157,167,172,194, 95, 88,158,253,133, 68,185,125,101, 12,255,128,240,123,158,197,130,169,244, -142,249,172, 18, 44, 55,178,205,199,169, 67,232, 61,246,249,222,127, 27,255,222,165,128,149,126, 47, 42,245, 89,221,158,231,133, -172,244,174,138,138, 79, 5,217,201,157,143,182,142, 25,232, 87,233, 56,210,238,177, 94,246,150, 64, 82, 60,141,246,191,168,100, - 33,159, 35,143, 14,210, 84, 30,223,227, 52, 87,104, 41, 81, 41,138,117, 99, 7,182, 67,207,208,122, 80,130,235,243, 57, 71,147, - 42,234,124,189, 71,138,128, 7,154, 97,224,116,219,211,215, 45, 34, 88,194,224,147, 22, 50,208,181, 29,151, 67,207,164,148,100, - 42,195,148,154,229,221, 79, 63,175, 48,144, 50, 22,143,253,239,187,212,185,202, 84, 24,234, 14,206, 46,184,151,231, 76,144,156, -111, 86,156, 44,207,249,155,191,251, 32, 26, 74,120, 7,143,159,124, 13, 13,230, 30, 95, 98, 44,238, 94,124,201,201,211,169,113, -218,219,194,121,226,106,102,244,223, 55, 69, 58,159, 33,201, 18,211,215, 62, 64, 38, 49,147, 10, 35, 21, 2, 65,125,118,114,229, -224, 87,102, 17,130,239,211,164, 17, 66, 96, 98, 4,141, 15,248,224,232,186, 1,161, 37,110,136, 69,128, 33,217, 4, 15,125,212, -186,143, 54,179, 46,233,187, 73, 49,173, 17, 82,136,222,211,202,126,193,148,254, 12,204, 14, 48,159,237,246,237,106,239, 88, 93, - 25,152, 36, 72,220, 36, 56, 82,236, 61, 66,157,138, 83,117, 31,226, 52, 83,229,200,172,136, 92, 0,153,126, 94,221,196, 66, 61, -137,196,190,183,230,113,191, 60, 23,130,109,102, 88, 95,174,118,153, 7,235,109,202,143,111, 99,166,188, 78,146,189,109,106, 16, -158,125, 40,143, 48,236,136,204,204, 42,126,116,235, 58, 47, 85, 11,222,223,174,248, 15,171,250,106,191, 62,178,252, 69, 90, 63, - 8,111, 89,107,131, 45, 52,141,214,156, 9,141, 66,176, 14,240, 61, 45,184, 61,185,134,204, 10,212,157, 59,152,197,156, 60,155, -242,224,226, 4, 31, 44, 7, 74, 51,147,130, 55,203,140,215,202,156,235,210,243,127,220, 59,229,241,227, 75,252,102, 21,237, 71, -135,142, 16,162,197,232, 92,105, 58, 33, 41,164,230,187,121,137, 15,129,133, 20,172,250,150,105, 86, 48, 5, 68, 81, 48, 63,158, -146, 77,178, 56,109,103, 57,189, 8, 92, 95,204,249,246,241,130,163,107, 11,110,220, 62,230, 80,230,220,206,230, 76, 75,197, 71, - 97, 64,161, 80, 38, 71, 57, 17, 31,117,193, 35,165, 68, 74,141, 20, 17,198,150,193, 71,131,154,190,225,209, 89,203,199,189,101, -147,167, 18, 39, 53, 84, 69,242,187, 72,247,136, 73,205,235,120,111,217,100, 56,212, 69,171,209,224, 29,180, 53,161,111, 8,205, -150,208,213,132,174, 37,108,214,209, 82,183,235, 9, 62, 58, 18,122, 51,137,141,234,182,195, 93,158,225,215, 91,124,231,240, 50, - 96,189,160,198, 98,221,192, 53, 1,194, 15, 72, 2, 19,169,240,222,242,189,210,240, 95, 30,207,249,227,107,115,126,255,240, 26, - 63,154, 77, 48,153,225,246,225, 4, 57,203, 57,247,163, 37,179,191, 50,185, 18, 95,241,231,115, 80,189, 75, 13,162, 54, 80,205, -162, 71,196,232, 19, 18,136,182,175,101,206, 91, 70,179, 48, 5, 19, 37,184,165, 37, 51,157,113, 50,116, 92, 87,145, 39,240,211, -174,231, 71, 85, 5,174,231, 49,146,183,164, 35, 87,138, 92,103,244, 67,203, 37,112,182,105,120, 83,122, 62,238,251,120, 95,116, - 45,116,150,207,250,192,237, 66,115,156,103,120, 60,181, 11,252,111,117,178,119, 29,146,124,109,180,181, 22, 10,180,230,237,227, - 25,255,217,203, 71,252,241, 75,215,121,179,202, 56, 62,158,241,137, 75,131,135, 74, 80,150,208, 9,233,245, 47,246,124, 28,239, -117, 41, 63, 47,107,123,118, 74, 55, 89,180,191,158,204,254,158,139,186,214,159, 63,125, 89,130, 25,131,143, 7, 68,236,193,174, - 89,218, 89,200,189,221,122,199,206, 61, 43, 27, 3, 44,146, 65, 71, 72,108,224,111,162,189, 30,187,161, 76,197, 2, 46,147, 3, -157, 75, 83,250, 78,147, 18, 11, 74,240,159,191, 34,189,142,210, 13,207, 87,104,145,159,165,146, 31, 17,166, 21,101,150,161, 3, - 8, 28,165, 20, 40, 37, 17, 66, 80,187,129, 85,239,217,108,146,145,129,212,148, 69,134, 81,130, 64,192, 38, 18,203, 48, 56,206, -234,142,198,245,248, 54,238,234,128,200,176,237, 99, 71,121,124,231, 14,191,250,210,247,185,182,184, 65,169,167,124,252,209,207, -147, 17, 10, 59, 86,117, 72,244,165,253, 6, 73,142,133, 98, 12,198,137, 19, 88, 88, 45,185,127,178,228,254,217, 41, 39, 15, 79, -226, 78,234,120, 17,163,104,151,203,175, 39,217, 16,123, 37, 33,124,149,109, 99,154,212, 71,231, 38, 33,119,180,171, 16,118,202, - 5,183,137,208,187, 72, 70, 64, 87,251,111, 79,111, 29,117,219, 70,205,190, 84, 32, 2, 82, 27, 36,129,206,121, 22,153,166,245, - 46, 22,125,103, 49, 66, 82,183,129, 28,208,184, 0, 0, 32, 0, 73, 68, 65, 84, 29, 74, 73,218,110,192, 14, 46,158,228,113,183, -109, 19,151, 66,166,137,125,244,130,247, 34,153, 14,117, 41,139,222, 62,205,122,127,222,199,124,198,175,254,193, 31,240,248,209, - 41,132,209,168, 35, 53, 46, 35, 41,211,167, 41,126, 84, 85, 36,203,214, 8,223,200,104, 97,156, 16,138,197,225, 34, 58, 33,203, -232,187,142,119,209,202,210,185,200,242, 45, 11,242,105, 78,166, 36, 79, 20,124,120,186,142,205,208,208,197,227, 90, 76,162, 43, - 88,235, 96, 49, 37, 91, 28,242,223,188,114, 27, 76,224,241,147,243,157,213,237,243,166, 49,103,249, 64, 74, 50, 3,255,211,249, -138, 49, 71, 65,216, 1,186, 52,217,203,241,118, 10, 12,237,128,152, 76, 64, 75,164,206,113, 82,161, 51,141, 99,224,123,213,140, -108,122,136,190,113, 13, 89,228, 32, 13,225,244,132,204, 8,230,194, 50,211,138,185, 82,232,204,176,200, 12, 11, 45,168,115,201, -106, 8,248,179, 21, 97, 85, 19,148,228,123,139, 41, 7, 69, 69,169, 20,223, 46, 42,110, 86, 26,229, 6, 30,146,241,170,214,216, - 48,176,177, 29,211,114,130,208,154,220,104,148,212,228, 70, 49, 59,156,112, 45,207,121,245,246,156,233,181, 25,249,180, 32,159, -148, 20, 65, 83, 5,205,141, 34, 99,118, 60,229,177, 5,165, 99, 46,188, 42,203,152, 84, 55,184, 56, 3,100, 2,209,119,209, 94, - 55, 51,136,205,146,176, 94, 33,172, 39,100, 9,194,117, 46,162, 78,211,105, 92,167, 76,138, 88,212,159, 34, 89,122,130,247, 87, - 54,191, 97,252, 60, 90, 11,143,196,196,125, 25, 97, 86,225, 95,190, 78,200,115,124,211,225,189, 37, 88,139,239, 54,177,184,111, - 58,176,158,182,239, 49,161,167, 18,129, 74, 42, 58,231,152, 72,201, 15, 77,206, 43,153,225,118, 94,209, 75, 65,102, 10,114, 93, -208,154,140, 60, 47, 40, 38, 25,143,145, 8,105,226, 42, 88,131, 72,215,200, 87, 21,245,171,207, 33, 93,243,215, 23, 28,127,251, - 22,119,174, 31, 80, 86, 25,235, 85, 23, 81,157,220, 32, 50, 67,233, 3,111,205, 75, 50, 37,105,132,228,193,208,242, 45,157,209, - 59,199, 52, 43,240,174, 39,179, 61, 70, 27, 50, 2, 23, 74,209, 15, 13, 77, 16, 28,232,156,123,219, 45,223,193, 82,235,140, 7, - 77,203,224,147, 4,175,107,193, 14,124,120,190,230, 47,215, 29,127,179,110,248,233,233, 58, 90, 79,143, 6, 89,146, 56, 96,250, -116,255, 25,193,239, 30, 78, 56,204,115,150,110,160,200, 50, 10, 35,121,199, 19,159, 89, 90,199,232,102,157, 37,243, 42, 29,107, -221,151, 33,166, 99,125,250,220,196,110,247,184, 95,251,232,175,129, 27,215,225,160,250,123, 46,234, 38,193, 40,201,200, 42,154, -133,164,105,123, 92, 78,203,189,135,242,104,252, 50, 78, 40, 73,242,136, 74,134, 32, 54,196, 23, 63,116,105,127,145, 10,146,210, - 47, 6,123,127,209,129, 27,108,236, 6,197,222,208,164,216, 53, 14, 36, 86,190, 22,137, 21,191,199,134,119, 99, 76,107,130, 7, - 94,212, 9,111,114,200,252,248, 24,129,101,146, 75,140,242, 56,124,100,247, 58,199,186,115,212, 93,135,107,135,196,244,150,104, - 41, 48,193,209, 15, 29,189,115,212,214,178,234, 44,235,174,195,182,195,213,235, 18,128,200,116,252,119,147,138,215, 94,122,133, -235,213, 13, 76, 86,112, 86, 95,114,247, 23, 31, 69,168,105, 60, 63,251, 27,118,241,108, 23, 57,198,165,250,167, 9,217,161,139, -234, 0, 83,240, 43, 63,250, 46,223,121,229, 14, 55,174, 29,240,240,195,143,190,102, 83,181,231,219,251, 34, 50,144, 49, 28,101, -156,236,199,159,163,203,136, 6,117,155,148, 31,224,162,243,147, 74,190,255, 58,105,228,101,154,114,198,244, 62, 29,139,157,147, - 16,188, 96,176,241,218,148, 2,250,161,103, 8, 34,230,195, 91,199,208, 38, 55, 40,153,174, 1, 45,210, 83, 75,199,130, 45,146, -125,171, 76,174,117,210,199,137, 94,236,241, 8,244, 87, 68, 39, 10,201,226,206,109,206, 46,183,145,165,126, 37,135,244, 79,147, - 46, 71,119,195,177,161,185, 98,197,143,231, 44,178,171, 77,158, 33,179, 18,233,122, 6, 68, 84, 7,116, 67, 52, 83,202, 5, 52, -150,203, 44,231, 51,161, 56,233, 92,132,240, 79,150, 41,174,210,239,216,188,125, 7,139, 5,255,237,183, 95, 99,158, 21,220, 44, - 51,254,234,222,195,167,144,135, 47, 44,238,131,101,216,214,252,188,177,145,183, 98,116,156, 40,148, 70, 12,109, 98, 76,239,184, - 64, 2, 79, 91, 91, 66, 53,165,204, 51,110,149,134,235, 70,211,216,192,129,214, 92, 47,166,228,243, 35, 4, 18,119,182,166,169, - 47, 89, 40,141,180, 45, 3, 1,171, 20, 83,165,232,165, 98,155,231,148,147, 18,189,200,241, 71,135,212, 50, 70,146,102, 58,102, - 40, 84, 69,206, 91,243, 9,139,188, 68, 21, 5, 10, 75, 45, 2, 97,176,116,195, 64,240,130,182, 29,232,188, 34, 47, 37, 7, 70, -114,144, 25,142,139,140,163, 89,137, 73,134, 88, 33, 64,191, 29,152,152,140,151,138, 25, 55,204,140,107,243,130,108, 81,176,206, -114,110, 29, 76,104,136,249,232,178, 40, 17, 14,230, 85, 73, 63, 54,255, 58,106,158, 51, 47,177,247, 79,119, 33, 83,121, 14,121, -137, 88, 76, 17,179, 18,145, 25,196,186,223, 17,211,190, 4,222,126, 86, 97,112, 85,212,111, 93, 39, 28,205,241, 66, 17,156,199, - 55,245, 21,231, 50, 12,150,208,212,132,102, 11,203,134,165,135,163, 66, 17, 6,143, 15,158,204,121,126,115, 86,114, 36, 53,181, - 15, 28, 20, 83,164, 50,212, 74,161, 85, 70, 11,148,153, 65,105,201,105,153, 33,242, 28, 81, 86, 8,165, 17, 33, 32,148, 68,154, -104,188, 35,210,179, 90,228, 25, 28, 94, 67, 28, 30,198, 93,121,176,136, 30, 56,152,160, 94,123,137, 95,125,233, 22, 71, 85,197, -181,233,148, 70, 59, 14,231, 11,230,147,130, 44,203, 89, 43,197,171,153,228,251,210, 80,227,185, 99, 42, 30, 13, 3,179,204,240, -184,221,178,200, 12, 66, 74,222, 93,111,249,118,150, 97,188, 71, 8, 77,214,111,249,133,115,188,157, 73, 54, 66,241,112,217,240, -201, 42, 33,110,193,238,106, 66,215,195,182, 38,172,183, 81, 10,218, 15,145, 41,223,182,123,208,119, 68,157, 95,171, 12,223,153, -149, 9, 84,150, 72, 41,233,172,227, 97,235,168,131,139,207,173, 34,169, 99, 50,179,147, 70,243, 21, 67,224, 72, 10, 31,229,129, -227,122,249,139,212,220,186,128,195, 41, 8,241,247, 92,212, 71, 54,251,184,223, 20, 62,194, 43, 90,164,154, 62,230, 7,167, 68, -169, 50, 89,116,138, 84,192, 77,250,247,109,138,229,244,105, 18, 26, 89,194,163,166,221,168,111, 78, 78,208,169, 0,122,145, 18, -189,236,142,132, 39,210, 62, 83,134,221, 90, 64,239, 5,198,104,113, 21,121,249,149,228,184,253,143,163,107, 48,201, 40,101, 52, - 7,109,236,144, 40, 4, 1, 31, 60,203,166,165,223,244,187, 59, 50,215, 84, 74,199, 7,146,115, 52,189,163,117,158, 85,211, 18, -154,126, 23, 28, 50, 58,182,105, 73,118,120,196, 31,253,198,111,115,231,224,101,178,194,112,114,121,198,121,179,226,241,123,239, -236, 38,226, 81, 46, 50,178,213, 3, 47,198, 70,215,121,100,240,191,114,131, 31,220,122,153, 42,203, 89,148,115,222,175,215,209, - 54,242,235, 20,246,175,115,220,198,130, 53,122,152,143,143,174,190,141,197,122,146,180,225, 58,237,180,188,125, 26, 21, 24, 9, -118, 42,217,253,250, 72, 20, 11,214, 33,100,160, 15,150, 66, 43, 86,109, 79,102, 76, 12,246,176, 22,215,251, 24, 38,161, 50, 66, -155,100,151,232,221, 42,105, 36,122,250, 17,253, 48,209,163,160,208,241, 97,161,242, 29, 34,245,101,197,221, 90,206,238, 61,129, -119,207, 97, 49, 58,239,137,207, 91, 75,238,239,214,173,221, 37, 18, 38,201, 17, 93, 3,205,128,152, 79,176, 2,110,102,138,181, -141, 54,161, 46, 36,249, 93,189,137,247, 99,158, 36, 57, 82, 70,116,103,211,166,169, 48,177,130,187, 20,106,227, 5, 47,189,114, -204,180,156,242,225,106,205,167,203, 21, 44, 87, 95,205, 98, 30,108,132,220, 77,129, 40,242,184, 22, 40,242,132,102,116, 49, 20, - 70,238, 75,191, 44, 62, 47,184, 54,157,240,250,172,224,229, 44,231,102,102,232,252,192, 29, 85, 80,133, 12,177,109,241,151,231, -208,111,232,130, 37,147,224,188,199, 7,193, 96, 50,106, 33,104, 76,198,153,214,132,108,194, 26,137,168,102, 76,102, 83,206,236, - 64, 40, 74,178,190,229, 90, 85, 33,165, 96, 27, 2,151,117,244, 75,183, 33, 71, 40,133,119, 29, 79,150, 23,116,155,158,118,109, - 41,243,140, 10,193,225,180,100, 90,154,120, 41, 57, 79,115, 57,208, 39,120, 59,211,154,227,233,148,111,205,143,249,222,244, 26, -111, 47,110,113,123,122,196,203,211, 9, 55,143, 22,212,194, 33, 39, 5,181,208,152, 98,130,247,154,144, 25,130, 80, 88,223, 69, - 47,129,179, 39,136,218, 71,134,121, 89,198, 63,197, 4, 81, 76,224,232, 0,145,149, 8, 55,230, 99, 60, 77, 76, 11, 95, 81,224, -131, 29,160, 19,132,186, 33,180, 29,193, 8,194, 96,241,251,255,214,185,180,199,135,199,219, 1, 81, 72,214,157,197,122,199,117, - 41,185,157,229, 40, 41,144, 74,210, 74,205, 35, 4,191,112, 30,167, 51,156, 27,168,138, 9,159,166,103,163, 40, 51,196,193, 12, - 49,155, 35,103, 51,132, 48, 8, 93, 32,130, 64, 28, 28,114,227,135,111,242,195,111,191,206,173,227, 35,166,243, 9,231, 33, 54, -201,226,240,136,183, 95,191,205,141,197, 97, 92, 55, 6,207,171,199,175, 48,175, 38,124,251,198,171, 28, 22, 57, 88,248,171, 65, -114,205,120,142,100, 70, 23, 44,183,164,226,103, 77,199,247,170, 41, 63, 91,109,121,105, 82,112, 83,192,133,247, 12,118, 64, 41, -197,165,115,188, 42,163, 64,227,227,245,134, 62, 56, 30,214, 93,146,181, 61,171,170,242, 59, 87,188,174,139,205,109,215,239, 86, - 72, 67, 68,139,151, 65,241,195, 42, 39,215,138, 42,203,113,222, 49, 72,201,159,159,175,119, 3,196, 56,200,142,133, 57,168,136, -114,250, 23,244,129,255,130, 77,221,231,184,196,166, 0,165,255,158,139,186, 79,187, 7, 35,159,182,181, 30, 31,200, 97, 44, 38, -137,108, 70, 72,172,217,148,132, 21,146,214, 55, 31, 37, 72,201,163, 93,238, 89, 60, 40, 25,117,192,214,127,243,215, 40, 69,146, -246,164,215,123,165,139, 78,144,188, 20,207,236,214,147,212,194, 39, 41,210,184, 95,121,145,226,100, 52, 76,231, 96, 52,131, 29, -144, 50, 32, 69,136,196,101, 96,221, 15,212,235, 4,187, 19,181,190,121,110,168,180,185, 90, 65,215,118,136,208,124,151,136, 27, - 33,196,156,238,224, 18,151, 34,227, 59,175,191,196,175,189,241, 54,147, 89, 69, 8,158,119, 31,188,199,207,238,222,133,243, 39, -187, 11,105, 95,126, 38,120,177,105,217,196, 48, 23,166, 5, 78, 6,190,123,253, 22,214, 7, 54,125,203,221,119,247, 80,128, 23, - 66, 44,138,221,190,248,235,156,175, 47, 82, 25, 76,138,104,211,234,101,132,189,117,146,149,153, 84, 68, 68,216,237,240,243,100, -114, 52,158, 51, 23, 98,212,169,131,174, 27, 48, 90,208, 44,123,156,243,132,173, 35,116, 22,134, 16,235,168,117, 32, 20, 82,137, -189,135,168,220,145,211,228, 56,177, 39,179,152,178,140,138,132, 66,197,115, 83,232, 47, 71,116, 92, 31, 77, 54,198, 68,188,193, -126,254,186,218,127,239, 35, 55,100, 76,160,179,195, 85, 30,179,235, 6,244,172, 64,227, 57,144,146,137,136,219, 44,231,146, 52, -104,179,141,231, 61,159,236,156,237,182,203,157, 60,103, 24,118, 33, 60,131,227,195,162,224, 93,239,249,192, 19,207,243,147,179, -231,247,243, 35, 87,163, 72,108,252, 46,238, 67, 69, 89,196,251,187,200,185, 94, 78,168,187, 14, 26, 27, 11,187,181,209, 99,221, -228,220, 58,170,120,115, 50,225,102,150, 51, 85, 6, 21, 2, 83,103, 57, 26, 60,102, 93, 35,215,167, 8, 27, 87, 35, 82, 27,178, - 32, 24,194, 64,131,224, 66, 73, 30, 35,233,148,166,113,130,144, 77,184, 83, 78,120,189,202,249,193,180,226,117,147, 97,114,195, - 89, 15,245, 16,168, 7, 65,161, 20, 86, 43, 50,173,169, 10,197,208,193,208,119,244,237,154,147,199, 15,232, 58,205,205,249,148, -210, 9,180, 21,168, 32,217,110, 7,150,117,207,227,229, 22,213,247, 76, 38, 57, 89,166, 41, 76,198,225,108,198,245, 98,194,171, -211, 67,238, 84,215, 56,150,134,239, 47, 14,121,105,162, 17, 69, 96, 58,201,153,148, 57, 90, 10, 90, 23,240, 77, 71,240, 3,162, -239,162, 1, 80,215, 33, 76,116,159, 19,229, 12, 81, 46,248,141,107, 55,249,151, 63,250, 33,223,126,249, 58,239, 24, 25, 73,139, - 93,247, 66,210,177,144, 26,172, 16, 2, 65,105, 66,166, 8, 8, 66,215,125,241,132,111,123,196, 80,179, 94, 15,108, 58,207,105, -235,121,181,148, 28,101,146,153,202, 49, 82,113,191,239,248,133,247, 92, 4,143, 80, 10,148,161, 38, 48, 17,130, 19, 25,101, 98, - 2,144,147, 18, 81,100,200,249, 28, 49,169, 16, 55, 14,248,225, 27,119,248,222,173, 55,184,113,237, 58,147, 44, 35, 11,129, 91, -135, 11,178,163, 57,183,110, 94, 99,154, 23,148, 58, 71, 74,193,180,156,178,220,118, 84,197,148, 50, 43,200,179,130,195,106,194, -237,208,242,208,122,190,165, 36,150, 64,111,114, 50,103, 57,245,142, 55, 51, 67,239, 44,103, 66,112, 32, 4,154,192, 67,215,115, - 40, 4,114,136,100,193, 83, 23,184,108, 90,122,225,233,221,158, 58,231,185,250,241, 84,160,125, 31, 27, 96,219, 71,243,169,174, -101, 86, 25,110,107,195,129, 81,172,186,158,255,245,209,146,173, 15, 49,248, 75,135,157, 18, 43,164,117,102,219,197, 26,242,203, -186,208,233, 68,106, 14, 33,222,207,167,103,255, 17,136,114,126, 63,123, 60, 65,134,102,124,144, 39, 28,123,100, 62,251, 68, 38, - 24,119,137,163,190,153,176,155,222, 93,122, 88, 62, 37,233, 73,147,186,148,223,236, 0, 61,245,111,178,103, 96,117, 34,236, 46, -237, 83, 43,141,171, 85,194, 8,195,191, 72, 65,212, 26, 38, 11, 40, 13, 65, 8,130,242,104, 5,153, 22, 40, 41,168,123,199,170, -235, 9,125,127,245, 59,100, 97, 80, 82, 16,132,167,183,158, 85, 55,208,212,195, 46,199,119,132,164, 67, 10,250, 80, 2, 53,159, -243,198,241, 77,174, 29,220, 34, 4,193,166,105,120,231,238, 71, 52,167,167,176,185,248,188, 25,207,215,153,150, 85, 6, 7,211, - 36,225, 16, 92,218,134,123, 23, 43, 62, 56, 61,133,135, 15, 95, 60,206, 48,207,224,141,215,162, 45,233,122,245,203,219, 43, 14, -233,196,140, 97, 61, 33, 57, 17,102, 69,146,156,249, 61,237,149,227,191,251, 47,254,132,119, 62,124,111,215,216,180,177,112, 49, -120, 92,159, 44, 7, 91, 27,121, 31, 46, 21,227,100,156,147,229,121,204, 71, 54,130, 76, 41,156, 78, 89,230, 54, 21, 89, 53,218, - 13,167, 61,146, 73,196, 51,157,254,159, 76,127,249, 62, 77,126,205,107,247, 89,181,193,248, 61,231,184,182,168,104, 5, 76, 76, -140,163, 60,206, 13, 75,107,227, 78,176,107,227,245,124,235, 40, 26,240, 76,139,120, 12, 46,151, 79,253,140,248, 51,163,139,220, -144,171,157, 2,101,185,218,189,143,162,136,205, 94, 8, 87,228, 30, 49, 41,193,170, 8, 57,146,248, 47, 89,148,120,253,201,173, -107,252,243, 59,175,160, 75,193, 71,103, 27, 68,103,175,210,206,100, 83,115,237,248,144,239, 46, 14,120,189,152,115, 88, 76, 16, - 1, 78,218, 53,223,234, 59,140,247,104, 85,161,164,192,100,101,162,127, 72,134,161,227,177,119, 60,112,150, 54, 43, 88, 9, 65, - 71, 70,149,229,188, 49,159,114,172, 50, 94, 46, 42, 50, 4, 51,101,216,120, 73, 39, 36, 65,105, 50,105,144,218,224,133, 36, 4, - 77,111,123,108,144,108,182, 91,234,118,205,102,125,194,186, 85,124,171,172, 88, 40,133,107, 45,125,235, 56,185,220,242,233,229, -138, 96, 7,242, 54, 34, 61, 70, 25,178, 50, 39, 43, 10,202,105,197, 60,203,120,249,232,136, 59,135,135,188, 94, 30, 50, 65, 71, - 23, 99,233, 34,179,190,208,228, 89,129, 20, 26, 39,100, 84,177,116, 45, 98,187, 65, 14, 30,153, 11,228,228,128,127,245,157,215, -248,193,237,235,220,185,126, 19, 47,167,124, 24,122,132, 19,132,126,136, 59,250, 23,213, 65,103, 89, 66,151, 92, 50,108,250,146, - 41,113,232,193, 91, 68,231,120,119, 59,240, 23,235,154,135,190,229,255,220,212,252,101,215,115,174, 2,165, 52,132,224, 24,146, -162,211, 73, 21, 27,170, 16, 16, 90, 33,148, 65,228, 19,254,233,173, 91,252,218,209, 33,191,115,243, 21,230,243,235, 40,147, 99, -116,142, 50, 69,140,100,208,154,219,243,155,220, 94,220,102,158, 31,227, 80,180,174,229,211, 7, 15, 80, 74, 82,149, 21, 85, 57, -193,249,129,213,114,137, 36, 80,119, 61,127,218, 90,126,171,170,240,125,203,177,214, 84, 18, 26,231, 88, 3,199,222,225,181,193, -121,207,204,246,148, 82,208, 58,199,165,181,252,187,117,203,161, 18, 60,236, 98, 99, 31, 7,198,231, 12, 25, 87,249,230,123,126, - 18,227, 80, 48, 88,238,157,108,248,201,233, 37,255,215,163, 53,127,181,220,178, 29,149, 38, 34,165, 20,250,116,188,125, 72,146, -216, 33, 30, 91, 59,252,146,156, 53,249, 52, 68,230,253,127, 68, 73,155,209, 41,236, 35,153,111, 8,157, 38,120,187,131, 18, 67, -122,248,150, 89, 44,224,154, 8, 99,106,177,131,227,123,187,219,245,137, 4,225,167,137, 22,145,164, 61,223, 4,138,151, 9,146, -181,169, 80,219, 61, 98,220,216, 44, 8,246, 72,116,126,247,189,225, 5, 79,140,153,192,225, 44,217, 9, 10,178, 66, 82, 40, 21, -221, 61,149, 98, 61,244, 49,123,119,220,215,148, 81,183, 62,146,209,155,193, 97,183, 93,156,156,218, 1,100, 96,126,227, 58, 85, - 85, 81, 78, 42,154,166, 7,161,248,157,239,255, 42, 55,103, 55, 16, 66,112,182, 60,225,238,233,103,124,116,242, 24,206,207, 99, - 68,226, 47,213,164,165, 5,104, 22,253,214,235,147, 11,186,135, 39,112,126, 18,139,196,139,126, 76,167,188,253,107,111,115,243, -250, 81, 36,220,125,217,195,229, 69, 63,198,224, 31,159,252,181, 81,177,171, 86, 50,133,148, 36,156,215, 57,222,249,249,207,226, -223,155, 4,129,181,195, 78,142,230,210, 57, 21,255, 15,117,111,250, 35, 89,118,158,249,253,206,118,151,184,177,229, 86,107,119, - 87, 55,155,139, 72,137,212, 72, 20,103,145, 53,163, 17,168, 17, 96, 12,198, 30,251,139, 96,192,128,255, 62,195,254,102,192, 48, - 96,120,145,101, 91, 50, 70,163,161, 68,114,212,100, 55,123,173, 45,179,114,137,140,237,110,103,241,135,115,110, 70, 84,117,117, -119,117,147, 90, 38,129, 98,118, 49,179,170, 34,111,220,123,222,247,125,222,103, 73, 57,239,131, 97,142,143, 7,162,243,129,188, - 84, 81,169, 64, 64, 34, 8,131, 12,205, 36, 41,142, 86, 59,181,135,227,198, 75, 61,222, 75,238,203, 35, 20,159,215,169,251,189, -142,253, 57,239, 6,137,205, 12,227, 60,167,150, 2,147, 25,106,239,169,189,135, 85, 19, 73,115, 58,135,215,111,241,159,223,123, -141,111,207,167,188,126, 80,241,193,147,179,151, 55, 29, 54, 68,231,185,144,200,135,117, 31, 61, 2, 32, 22,116, 17, 67, 87, 34, - 7, 69, 71, 54,126,150, 18,208,244,224,243, 31,184, 51, 27,241,135, 7, 71,220, 45, 39, 4, 2,127,190, 88, 35,156, 69,244,254, -166,176, 47,125,206,239,220, 57,228,173,234,144,214, 91, 50,101,248,184,219, 50,221, 44, 56,148, 6, 83, 29, 32,178, 28,101, 74, - 68,240,209, 78,217,119, 92,246, 13,103, 66,178, 82,138,214, 11,178,172, 98, 58, 82,188,150, 23,168,228, 10,168,165, 36,151, 26, -167, 97,235,193, 9,133, 87, 10, 45, 53, 90,105,106, 1, 94, 42,154, 54,186,168, 29,231,158,220,183,252,245,123,239, 32,123,201, -108,213, 83, 53,158,118,189,101,211,119, 60,219,110,120,180,188, 98,185, 92, 68, 67, 28,101, 80, 66, 33,130, 64, 26, 69, 86,104, -178,105, 78, 81, 21, 84, 85,197,109, 89,225, 59,203,162,107,176, 58, 68,208,111,100,120,179,200,120, 59, 51,188, 33, 21, 89, 80, - 92,213, 22,113,189, 68,108, 27,196, 72,240,181,233,156, 7, 7, 51, 46,130,224, 73,175,120, 71,149, 80, 8, 68,166, 96,211,165, - 52,196, 47, 48,125,113,142,144,212, 49,248,254, 51,155, 75,241,194,159, 1, 31,221, 2,107,203, 71,181,229, 73,211,112, 46, 4, -143, 58,203, 60, 83, 49,167, 34, 68,148,112,221, 89, 90, 60, 43,169, 17, 34, 48,201, 70,252,119, 39,199,252,225,241, 45, 30, 84, - 51,190, 61, 63, 98,146,151,244,121,201, 38, 56,182,157,197, 57,139, 20,154, 50, 43,169,202, 41,121,150,145,203, 2,219, 11,206, -182, 23,156, 93,175, 8,120,156,235,232,108,203,163,171, 83,158, 58,207, 47,218,142, 63, 30,197,179,123,105,123, 22, 82, 82, 32, - 24, 73, 65,219,174,209,102,196, 7,125,199, 93, 41, 49, 82,145,185,142, 71,157,101,217, 91, 78, 52, 92, 89,203,114,157,114, 71, -218,176, 67,200, 62, 85, 31,110,224, 91,158, 39, 24,201,157,217, 88,219, 69,201,230,114,117,131,162,208, 37,107,217, 54, 73, 95, -187, 62,170, 71,134, 44,138, 95,202,168, 70,126, 90, 66, 32,229,223, 97, 81,247,123,108, 93, 37,227,126,130,116,232,117,123,174, - 62, 34, 77, 2, 34,121,180, 43, 34,163, 87, 16,139,134, 25,166,113,187,139, 51, 20,122, 87,100,135, 98,255,121, 83,187,214,145, -217,219,239,193,160, 74, 39,195,155,129,204, 32,119, 6, 52,214,239, 14,207,225,226,245, 9,176, 10,175, 56,229,230, 25,156, 28, - 66,158, 49, 62,152, 80,100,209,226,181, 42, 36, 2,201,178,177,108, 59, 75,104,218,248, 58, 74,131, 84, 34,134,215,117, 30,215, -116,241,107,219,148,205,155, 73,238,223, 61,230, 7, 95,255, 22,223,121,253,215, 56, 25, 31,240,201,234, 18,114,195,247,223,248, -117, 38,147, 25, 62, 4,254,242,253,159,240,179,139,211, 24,207,185,185,248,252, 9,241, 85, 63,156,139,135,249,106, 27,243,203, -219,250,203,255,189,109,203,217,249,130,179, 15, 63,220,237,102, 7,200,118,248,245,101,110,120,157,228, 48, 74,198, 9, 89,155, -221,125,228, 19, 39,162, 31, 82,225,162,196, 45,178,197,251,136, 16,101, 41, 12, 64, 37,219,215, 60, 41, 30,100, 22,223,240,116, - 64, 75, 5,165, 81,104, 17, 15, 9,233, 61, 58,151,209, 38, 26,199, 55,239, 30,113, 84,141,152,150, 5,139,171,117, 82, 88,232, - 72,152, 51,121, 68, 84,148,142,247,244,171,170, 37, 62,239,135, 30,174,213, 96,154,180, 95,216,189,199, 33,233,139, 2,242,140, -145,148,156,117,201, 53, 41, 56, 88,110,160,204,248,157, 7,175,113, 50, 63,192, 5,131, 50, 57,239,182, 93,124, 79,110,226, 30, -253,110,106, 11, 50, 94,155,225, 89, 27,140,117,124, 34,120,109,154,100,222,148,197,180, 58,147,131,119,136, 33,186,182,183,172, -149,228, 86,161,200, 8,252, 79,231,151,156, 91,159,248, 42,137, 45,237, 61, 66,103,124,235,176,226,160,172, 88, 7,104, 9, 92, - 57,203,127,191,216,240, 70,179,226,100,122,128, 30, 31, 35,139, 34,174,158,172,199,167,230,202,183, 53, 31,116,158, 54,203, 49, - 90,241,141,106,138,240,129,220,104,132,210, 88, 23, 48, 66,210, 17,184, 10, 6, 39, 21,178, 28,225,149,194,235,156,177, 16,100, - 38, 39,235, 58,126, 99, 90,240, 71,119,238,114, 32, 51, 58,123,205,255,245, 31,126,196, 7,155, 71,228,219,154,159,126,244, 14, - 31, 62,253,128,179,235,103,116,155, 11, 22,155, 5, 15, 55, 11,100,221, 97,156, 38, 56,143,176, 30, 89,104,204, 40, 67, 25,137, -206,115,148, 84,204,124,193,233,118,197,185,107, 57, 35, 48,207, 51,178, 76,241, 96, 58,226,126, 53,226,190,209,124, 43,207, 17, -185,100,237,122,220,249,134,211,126, 69,219,195,147,181,227,223,183,158,165, 8,145, 22, 51,157, 68, 45,183,202,193, 54, 81, 7, -207,231,152,189,120,183,123,223, 94,216,197,139,207, 42,236,131, 9, 23, 62,173,161,122, 66, 99,161,235,121,132,100,166, 32, 51, - 57,155,174,197, 57, 71,211,119,180,193,225,133,230,247, 38, 5,223, 59, 56, 97,150, 77, 56,172, 42, 84,158,161, 76,198,227,198, -114,177,181, 44, 90,203,233,118,133,235, 91,116,102,208, 50,163,154,140,241,190, 71,208,211,217,154, 95, 60, 60,229,236,236, 25, - 31, 61, 61,229,131,197, 5,151,171, 53,171,229, 18,164,224,245,170,160,238,123,198, 74, 49, 15,129,109,223,114,142,224,237,108, -196,101,191,229, 45,101, 88,249, 14,233, 28,109, 8,156, 59,199,129,243, 60,241,150, 15,150,253,142,235, 37,211,202,243,101,220, - 34,207,206,171,100,127, 98,255,204, 68,183,221,253, 78,219, 69,184,125,155, 36,157,182,219, 17,223,126,169, 41,253,133, 55, 42, -229,151,252,221,154,207,228,217,142,173, 43,197,110,103,103,210,158,177,200,192, 53,113,202,178, 54, 30,132, 50,193,121,106,216, - 75, 36,150,175, 74,127, 70,101,187, 67, 71,238,177, 10, 5,159,157,252,117,251, 24,249,205,251,132,203,237,110,170,200,210, 82, - 91,234, 61, 50,130,223,251,123,194,243, 58,105,239,119, 94,245, 95,244,230,140,138,184, 71, 31,149,140,166, 57,183,198, 99, 10, -163, 56, 26, 85,180,214, 82, 91,199,214,118,216,117, 29,247, 44, 41, 61, 44,248,128,107,211,110,211,246,137,161, 9,148,134,124, - 62,226, 31,189,118,143,215,239,189,133,145,146, 50,203,145,162, 67, 88,203,237,249, 45, 76,150,113,189, 93,242,108,241,140,203, -139, 11,184,184,188, 49,254,248,149, 52,104,131, 68,234,151,185, 49,235,122,183, 95, 54,217, 78,226,168, 72, 83,246,151,137,109, - 76,255, 35,242,157, 68,207,249, 8, 43,223,164,240,165,215, 91,148, 17,110,119,110, 71,208,188, 33,178,164,245, 80,144,100,153, - 33,215, 2,231, 2,153,145, 76, 75,131,150,144, 41, 25,169, 28, 46,114, 48,148, 84,104,163, 56,153,142, 24,229, 89,218,218, 4, -174,101,148, 32,222,232,141, 85,178,132,117, 3, 89,174,255,229,154, 44,253, 66, 28,227,205,126, 95,238, 8,133, 2, 92,150,211, - 21,134,149,216, 35, 68,182, 29,172, 59,232,106, 54,243, 41, 15,230, 7,244, 66,243,176,119,156, 94, 95,198,162,126,147, 54,184, -135,124,245, 54, 50,179,197, 96, 24,149, 44,102,125,186, 71,125,159,136,148,101,210,181,167,233, 71,233, 88,216,131,135,198,243, - 55,215, 43,254,116,181,225,188,141,230, 83, 34,211,145, 4, 38, 13,194, 11,132,107,232, 71, 5,179, 92,227,133,230,202,117, 60, - 10,150,139,160,248, 81,179,229,119, 21,148,147, 99,100,102, 16, 38,139, 33,122, 33,160,144, 76, 37, 84,219, 21, 63,110,122,114, -163, 56,214,138,121, 89,161,144,212, 93,135,134,104,182,162, 12,143, 28, 8, 83, 80,100, 5, 90,103, 84, 74, 50, 46,114, 68,239, -184,115, 56,229,247, 78, 38, 28,228, 25,101,166,249, 96,113,205,105,219,115,118,126,205, 95,124,244, 33, 63,189,124,198,207,207, - 46,249,248,234,138,179,229,138,203,118,203,217,234,138,109,232,184,232, 91, 46,154,104,246, 82,216, 64, 38, 21,102, 84,196, 61, -179, 3,183,233,232,154,150, 95,176,101, 33, 12, 22,201, 73,149, 83, 32,153, 20, 5,135,227, 18, 93, 26, 78,170,146,215, 76,206, -215, 53,136,179, 75,254,253,147, 15,249,171,237,138,235,205, 21, 2, 11,121, 92, 77, 48,169, 96, 62, 65,204,198,160, 50, 68,219, - 70, 15,246,207,146,142,125, 17,199,249, 37,223, 27,246,206,189,208,118,177, 72,217, 30, 54, 61, 79,172,103,172, 37,109,239,233, -131,163,238,123, 86,125,207, 33,142, 63, 56, 60,230,181,241,148,204,148,140,198, 37, 58,203,112, 82, 32,180,228,195, 77,207,143, -218, 53, 87,118,203,117,191,229,114,187, 38, 19,208,118, 91,156,237,104,251,142, 39,139, 39, 92,219, 14,154, 14, 33,210,106,162, -239, 99,242,157,209,124,212, 90,164, 12,220,149,130,165,235,201,181,225,208,182, 44,133, 98, 34, 21,215, 62,122,250,139,224,185, -114,142, 59,222,243, 39,215, 45, 7, 26,122, 47,169,109,226,100,249,180, 86,250,172,116,185, 97, 72,183,126,247,249,239,235, 99, - 88, 27, 14, 2,162,193,217,206,249,191,227,162, 62, 24,104,244,253,206,175,122,112,146, 51, 58,118, 51,131, 77,222,126,183, 36, -136, 95,211, 42, 65,248, 41,188,162,200,246, 44, 51,253,243, 82, 1, 62,163,168,251,152,228, 21,156,140,118,140,222,199,191,167, - 31, 86,254,233,224, 17,201,128,134, 61, 4, 96,136,105,117,169,200,191,202, 46,218, 20,145, 64, 85,149,200,137,225, 86, 85, 81, - 24,195, 56,203,144, 82,243,172,107, 88,118, 45,182,238, 99,195,162,146, 65, 65, 19,237, 94,177,125,212, 9, 7, 17,247,186,121, - 70, 62, 29,241,181,163,138,113, 14, 19, 51,195,152,156,109,215,240,244,226, 49,189,107, 88,219,154,166,107,120,178, 56,229,221, -199,143,225,226, 26, 86,215,188,154, 43,207,223,195,135,201,226,197, 31, 92,252,130,216, 67, 79,120,181,215, 61,220, 55,194,239, -252,152,179, 61, 61,119,232,119,169, 78,141,221,165,244, 14,193, 65, 38,221, 75, 74,147,103,134,224, 97,148, 9,148, 86,204, 74, - 69, 33, 5,133, 18,228, 82, 96,132, 68,163, 32,147,204,180, 74, 64,128, 96,219, 59,102,163, 2, 45, 53, 14,207,249,182,222,147, - 72, 14,205,159, 76,209,173,110, 87,244,190, 74, 97,191, 33,200, 13,230, 20, 47, 64,131, 3, 67,222, 19,195, 93, 70, 21,179, 92, -115,146, 25,142,140,100,172, 36,203,166,131,166,161, 21,138,119,140,230, 61,107, 57,181,233,217,124,124,158,164,129,233,240, 24, - 60,235,125,202,146,158,150,252,240,100,204,239,223,154,114,160, 37, 31,158, 47,146, 45,175,142,200,196,180, 74,242,181,180,186, -112,209,180, 67,164,160, 24,172, 71, 92, 47,111,210, 15,133,137, 49,203, 98, 92, 32,166, 99,126,231,193, 9,183, 71, 25,139,174, -231,137,116, 44,165,226, 39,189, 64, 74,141,210,134,255,251,163,143,249, 23,147, 17,249,193, 45,164,142, 18, 42, 57,174, 40,231, - 39,204,103,119, 56,174,123,178,245, 21, 63,115,150,131,204, 48, 86, 10,107, 91, 14,242, 2,107,123,122, 2, 63,175, 29, 62,139, -241,197,149,210, 76,181,230,246,184,160, 80,146,249,108,132,237, 61,211, 92,226, 67,224, 97,221,242,151, 23, 43, 30,175,175, 9, - 77,135, 23, 14, 47, 20, 30, 23, 21, 41,189, 99,213, 56, 86,235,150, 79,186,154, 62,212,124,236,106, 46,186,134,106,219, 50,237, - 37, 70,154,184, 98, 93,118,116,117, 67,107,107, 62,234,106,158,224,185, 16,146, 34, 8,166,153, 70, 74,137,202,115, 84,102,248, -218,236,128,223, 60,152,241,253,105,206,183, 11,205,237,109,224,240,226, 2,125,254,140,139,118,133, 16, 81, 94, 41, 66,218, 93, -171, 12,113,114,136,152,143,227,127,183,105,165,241, 18, 25,220, 23, 21,249, 87,106, 2, 6, 19,166, 85,195,169,243,180, 93, 79, - 16,129,117, 31,232,149, 64, 11,201,137, 54,124,109,122,200,253,249,156, 70, 40,116,174,104, 5,252,108,181,225,199,219,134,143, -124, 75,103,107,106,215,177,236, 90, 62, 90, 94,162,108, 71,223, 53, 92,110, 22,156,119, 75,182, 77,207, 15, 15, 11,254,245,173, - 25,111,143, 11,190, 89,230,252,141, 16, 8,169,112, 82,178,232, 35,154,154, 57,203,182,239, 88, 56, 88,244, 45,207,108,207,200, -246,156,123,207, 68, 4, 14, 2,252,162,105,185, 43, 61,255,174,129,237,118,203,161,128,186,237, 56,174, 12,219,198,239,101,125, -188,112,142,251,189, 28,145, 47,115,148,234, 87,248,126,163,227, 89, 52,248, 94,188,146, 65, 77,122,222,111, 38,245, 0,216,175, - 80,212,245, 47, 89, 27, 76,138,191,188,129, 29,251, 29, 12,127,227, 54, 23, 82,241,214, 59,118,122,110,146, 78,120,200,149, 78, - 50,180,129,128,244, 98, 17,255, 60,121,150,115,209, 65,104,112,230, 18,121,148,170,237,155,202,144,246,134, 93,251, 60,153,236, -203, 16,203, 70, 5, 84, 21, 84, 57, 24,137,201, 53, 85,158, 51, 54, 25, 66, 11,214,117,203, 85,211, 97,155, 54,178, 41,195,208, -121,185, 8, 1,119,137,205,158,155, 36,195,202, 65, 73,116,166,152,100,134, 60,211, 52,205,150,197,114,193, 71,103, 79,176,174, - 67, 8,184, 88,109,248,217,147, 71,156, 63, 57,133,203, 37,244,219, 29,145,236, 31, 82, 33, 47,146, 13,170,200, 98,177,205, 20, -200, 50,193,182, 73,219,248,101, 94,247,224,131,174,138,228, 95,160,118, 17,141,131,156,100, 40,242, 38, 21,212, 97, 15, 63, 50, -241,251,149, 64, 43,193,212, 8, 42,149, 33, 9,204,198, 25, 66,122, 74, 21,139, 91,145,201,184, 30, 39,185,134, 9,129, 73,178, -178, 69,219,210, 58,203,229,166,193, 5,145,146,221, 82,113,221,151,181, 25, 21,119,218,125, 98,206,251, 47,121, 74, 12, 67,250, - 16, 8,179, 31, 60, 47,146, 63, 4, 18, 38, 5,234, 96,134,204,115,238, 20,154, 91,198, 80, 74, 73, 22, 60,183,115,193,217,114, - 19, 97,248,241, 56,105,252,137,197, 60,132,104, 75,122,243,204,236,189, 70, 17,120,112,116,192, 15,142,167,204,202, 9,179, 66, -243, 23,103, 87, 73,254,169, 96, 52,142,133,125,248,126,151,184, 24, 38,143,217,226,164,233,189,109,210,212, 21, 37, 62, 98,154, - 67, 85,240, 71,119,142,248, 23,119,238,113,187, 40,120, 88,111,249,179,101,207, 83,149, 35, 70,211,104,189,106, 50,164,239,248, - 53, 60,135, 71,183, 35,187,186,202, 81,111,156,160,102, 19,244,108, 74,222, 86, 28,109, 55,124,188,120,204, 89,176,204,148, 2, -161,216,134, 8, 13, 95,245, 13, 31,136,140, 99,147,113,104,114,110, 27,197,173,169, 97,172, 21,147,145, 36,235, 99,227,116,186, -234,184,240,150,159,159,173,184,176, 61,171,224,113,117,139, 95,172,241, 70,224, 90,139,115, 30,111, 50,156,119, 56, 99,160,233, -121,124,118, 69,239, 44, 43,191,229,188, 89,112,220, 88,166,174, 32,116, 61,206,123,174,175,174,249, 15,235, 83,126,102,151,188, -211,247,108, 69,160, 35,250,140, 87,153,162, 9,146, 81,158,241, 86, 53,231,107,211, 3,166, 38,103, 20,122,198,202, 35,145, 28, - 1,191,209,116, 60,126,244, 9,117,223, 32, 66,159, 72,105, 50,106,193,205, 8, 49,159, 34,111, 31, 32,110,159, 32,242, 2,177, -181, 81, 93,241,183, 49, 53,186, 14,177,217,208,110, 91, 86, 1,186,190,231,245,195, 3,102,229,132, 34,203,152, 8,137, 81, 5, -211, 44, 99, 35, 5, 15, 59,199, 47, 22, 91,254,207,237, 50, 78,200, 46,113,165, 68, 68, 1, 47,186, 45,143,234,107, 22,237,150, -117,211,243, 95, 77,114,254,205,241, 9, 83,173,249,222,108,134, 54,130,183, 10,205,143, 18,114,107,149,228, 72, 8, 86, 62,240, -115, 39,200, 51,248,155, 62,240,166,129,255,181,238,248,154,150, 60,222, 52,212, 34,208, 4,207,143,106,201,131,208,114, 97,161, -181, 29, 65, 72,182,109, 66,129, 91,183, 83, 63, 13, 31,135, 71, 95, 29,233, 52,137, 99,163, 85, 60,203, 67,170,131, 82,237,210, - 42, 7, 39,166, 48,196, 72,191, 66, 97,247,251,187,126,110, 24,246, 95,190,168,255,178,117, 65,136,120, 99,221, 68,170,166, 44, -219,174,223, 65,134,131, 25,205, 0,209,107, 21, 29,187,240, 48,158,196, 31, 90,165, 20, 53, 45, 94, 14,151,124, 17, 27,125,112, -230,146, 69,220,175,155, 12,138, 73, 98, 60,219,228,231,237,191,154,169,205,208,217,141, 39, 41,119, 59, 67,149, 57, 85,110,152, -103, 10, 39, 5,181,237,184,236, 61,155, 62,237,208,131, 72, 38, 61, 97, 47, 32, 36, 57, 16, 9,181, 75,169,147, 18,101, 36,117, - 90,161, 62,221,108,121,178, 88,211,134,142,141,119,180,189,227,162,174,227,106, 97,211, 0, 77,252,153,134, 80, 16,249, 15,164, -160, 35,163, 5,169,201,147,189, 97, 30,155,171, 76, 39, 50, 86, 10,180, 20, 98, 87, 8, 63,107, 98, 29, 86, 32, 67, 81, 23, 9, -105,177,195, 74, 38, 69,166,234,108, 71,200, 28,248, 17,163,226, 70,179,158, 87, 37,149, 80, 24, 33,152,101,134, 34, 23,140,141, - 70, 4, 73, 38, 21,222,123,170, 60, 26,217,152, 92, 33,131, 32,168,168, 92,240, 1,148, 81,100, 82,210, 7,232,156,199, 6, 65, -112, 97,183, 30, 24, 26, 77, 23,146, 46,214,196,123,173,183, 95,146, 67,176,231, 13, 45,249,244,158, 79,229,241,192, 40, 21, 84, - 35, 66, 89,112, 52,173,184,103, 12,218, 24, 60, 1,237, 61,222,247,156,158,111, 19, 19,215,193,209, 60,217,146,230,113,237,181, -237, 35, 95, 98,136,118, 29, 8,168,189,165, 25, 85,188,117, 52,161,247,158, 31,181, 29, 79,174,234,221,154, 72,164,103, 75,101, -187, 21,131,210,201,140, 39,174, 70, 68,155, 52,191,195,164,215,244,241, 62, 40, 11,254,229,193, 1, 95, 31, 31,161,148,226,147, -190,230, 35, 15, 98, 84, 33, 85,129, 52, 5, 82,231,104, 37,184,190,124,204,119,231,119,200,231, 7,136, 89,137,190, 51, 71,142, - 11,164, 86,132,141, 32,172,107, 22, 31,125,192,143, 62,126,138,159,103, 92,180,107, 78,219, 26, 73,224,189,117, 77,208,134, 7, -197,152,183, 75,197,241,184, 34, 83,146,185,150,204, 51, 77, 37, 2, 66, 41, 58, 33,184,218, 88,150, 77, 67,221,173, 89, 35,176, - 56,124,223,227, 67,192,245, 29,190,119,120,215,227, 16,184,186,165, 55, 10,223,122, 54,182,101, 81, 59,234,122,205,249,226,140, -187,190,227,250,252, 25,205,114,197,159, 62,121,135, 15,234,107, 62, 14, 61,143, 76,143, 76, 50, 0, 0, 32, 0, 73, 68, 65, 84, -155,134,218, 90, 26, 4,235,222, 82,251,104,146,243,160,154,241,102, 62,138,118,210, 58,167, 40,199,180,161,167,243, 30,107, 61, - 51,169,249, 78, 94,240,181,166,229,241,197, 21,205,197, 85,108, 54,181, 70, 74,133,204, 52,223, 63,126,141, 63,254,250,183,248, - 71,247, 95,227,221, 82,209,173, 27, 68,223,125,234, 94,251, 34, 72,254,149,190, 94,100,241, 44,213,130,108, 50,225,222,120, 28, - 9,113, 65,176,240,158,167, 93,207, 19, 39,121,212, 58, 30,182, 13, 63, 95,111,216,180, 53, 77,183, 33,224, 9, 46,229, 37,144, - 16, 74,162,197,237, 55,164,226, 15,230, 21,153, 80,220, 46, 74,206,173,101,154,130,160,206,123,203,185,117,144, 41,206,146, 10, -226, 66,106, 62,233, 44,111, 75,201,169,131, 55, 71,154,247, 26,207, 86, 41, 36,142,191,108, 60, 95, 83, 45, 63,179, 34, 26,130, -230,121,170, 41, 68, 18,242,128,122,237,243, 93,190, 74, 65,215, 58, 13, 13, 41,113,116,144, 65,103, 50, 62,251, 62, 37, 88, 34, -158, 71,218,204, 32,151,118,175, 86,143, 95, 24, 52,255,238, 3, 93,188,223, 73,194, 66,216, 77,234, 69,182,139,230, 28, 76,105, -186,126, 7,139,226, 33, 43,200,191,251, 13,220,227,179, 68, 98,210,187,139,255,156,243,194, 75,226, 86,243,189,110,201,185,248, -251,162,132,147, 91,112, 56,143,147,138, 52,137, 16, 84,199,107,220,181, 95,173,152,155, 34, 18, 87,164,128, 89,201,120, 82, 50, - 47,115,166, 69, 78,227, 29,181,181, 44, 26, 71,240, 30,231, 3,247, 38,115,142,171, 41, 85,145,177, 90,109, 19,180, 63, 24,155, -168,184,227,237,125,188, 30,171, 45,110, 83,211, 93, 92,113,121, 85,179,172, 61,155,214,179,234, 45,155,174, 99,179,168, 9,139, - 77,116, 87,179,118,183,251, 25,200, 98, 90,126,154, 36,248,119,249,161,117, 44,224,183, 15, 98,225, 24,101, 73, 9,145,197,188, -100,146, 85,176, 78, 69, 68,137, 88,171,246, 39,140,125, 66,221, 13,209, 81,238, 32, 26, 37, 35, 3, 94,201,231,227, 94,109, 31, -239, 23,165, 35, 68, 63, 41, 35, 41,210,196,251, 34, 87, 80, 8,193, 72, 11, 10,169, 16, 72,164, 1, 35, 4, 82, 6, 74,173,105, -123,135,201, 52,190,115,168, 36, 81,243, 82,160, 84, 76,224,242, 82,210,135,128,208, 18,239, 60, 78, 14,106,143,164,224,112,169, - 73, 29,148, 27, 54,145,249,190,140,114,128,189, 7, 89,238,187, 77,165, 48, 22,173, 82,228,105,234,250,143,102, 88,109,184, 85, - 86,108,108, 71,166, 50,218,174,197,245, 13,207,158, 94,237,200,130,243, 49, 76,102, 72,109, 56, 24, 31,224, 71, 18,247,228, 42, - 77, 79,207,203, 54, 93,231,248,169,210,252, 24,120,124,189,141, 77,196,166,143,239,211,176,179, 15, 41,123, 26, 25, 93,247, 6, -189,110,235,161,173,119,240,174,247, 17,146,239, 44, 34,207,121,163,148,100, 66,240,193,230,154,127,119, 93,179,238,124,116,198, -203, 43,100, 94, 48,214, 6,213, 91,214,222, 17, 78, 63,230,141,163,123,232,170, 66, 77, 11,132,212,208, 4,252,217,138,190,217, - 34, 89,179, 89, 44,120,239,195,143, 56,111,225,162,233,249,100,187,165,147, 25,111,143, 38,124,163,200, 56, 40, 10,102,153,225, - 65,153, 49, 85,146, 3,173, 8, 33, 48, 22, 30, 39, 52, 70, 40, 54,155,150, 92,105, 78,235, 45,214,117,120, 3,110,211, 19,121, -247, 30,103, 61,126, 84, 68, 42,199,182,193,141,115,124,221, 99,183, 13, 75, 47,120,239,252,154,255,120,125,198, 95, 60,123,204, -255,242,232, 93,254,183,203, 51,174, 22, 75,254,250,252,154, 46, 4, 92,112,244,125,139,196,177,114, 61,214, 11,110, 21, 5, 35, -165, 56, 25, 79,145, 70,179,105,182, 92,120,199, 51,223,163, 20, 76,180,164, 84, 49,221,241,205,210,128,183,156, 61,185, 70,174, -174,145,190, 71,230, 21,255,197,235,175,115, 56, 42, 25,141, 43,100,200,249, 96, 44,226,250,164,233, 62,117, 6,136, 47, 59,159, -189, 4,133, 21, 89, 9, 65,114,124, 50,227,164,154,224,124,207,117,189,197,121,207, 82,104, 86, 93, 71,237, 61,109,211,145, 11, - 71,238, 59,166,206,146,117, 13,206, 57,122,219,198, 60,247,172,140,110,185,121,201,127, 61, 53,204,165,225, 56,207,232, 8,104, - 25,115, 50,158,245, 61,189,128,119,135,245,168, 84,172,165, 97,162, 5,121,150,243,137,139,170,162,159,119,158,219, 2, 30,201, -168,205,191,165, 4,239, 53, 46,122, 59, 25, 21,125, 27,180,138, 3,147, 50,177,148, 88,251,197,210,211, 87, 65, 14,227,133,217, -173, 6,229,128, 6,171,136, 14,187,132, 54, 27,177,243, 72, 81,233, 28,251,138, 36,218,191,191,148,182, 1,106,239, 83,164,164, -139,123, 54,114,179,211,182,231,217, 46,208,165,143,135,131, 59, 77,134, 23, 82,239, 18,169,134, 3,231,166, 99,121, 9,228,175, -211,244, 34, 83,145, 68,192,252, 0,198, 99,242, 60,131, 32, 41,171,130, 94,153, 40, 73,112,221,151,152,156, 82, 71,150,207, 98, -193, 44,243,248,127, 87, 57, 89, 89,112, 56, 42, 40,140,198,135,192,178,181,180,206,211,133, 64,219, 57, 78, 70, 83,190,117,235, - 77,198,229,152,178, 24,241,116,121, 29,117,234,150,157, 67, 92,211, 69, 45,119,183,138,145,140, 77,157, 92,141,250,104, 84,177, -220,192, 98, 5,139, 13,212,203,248,117,231,184, 73,244, 81, 58, 78,109,194,192,237,187, 80, 86, 80,142, 99,196,230,175, 66, 86, -245,170, 31,163, 34,134, 52,140,203, 84,216,228,141, 47,178, 44, 13, 50,203,152,140, 39,160, 13,213,164,138, 6, 55,101,138,255, -196,237, 30, 48,249, 5,112,131, 74,130, 89,225,192, 75,254,248,191,253,111,248,233, 95,255,100, 87,228, 85, 98,164,155,161, 57, -136, 80,186,144,130,145,210,140,165,196, 2,213, 72, 35, 67,192, 40, 73, 46, 37,109,112, 20,128,179, 30,105, 20,193,122,186,212, - 76,104, 1,157, 23,216, 4,173,123, 27,112, 33,224,186, 62,113, 61,220,206,218,120,240,211,239,146, 20,198,219, 87,116,243,251, -140,189,154,220,235,216,139,193,239, 94, 70, 43, 88,109, 96, 86,226,178, 28,111, 59, 70, 89, 22,109,228,251,158, 95, 60, 93,224, - 86,235,157, 29,229,108,194,241,209, 29,126, 48,154,241,102, 89,113, 71,103,124,216,111,163,167,255,139,230, 74,125, 7,171, 13, -193,228, 73,127,158,216,239,109, 23,167, 29,155,242,159, 93,106,146,131,220, 73, 69,229,243,105, 94, 55, 76,237,182,133,205,154, -159,173, 59, 30, 55,107,254,244,244,154,205, 98,139,204, 4, 50,207,145, 66,115,171,156,113,172, 51,126,247,238,156,223, 58,156, -227,141,160, 91, 47, 57, 25, 31,147, 85, 5,210, 9, 88,182,184,103,107, 92,187, 65, 72, 40,180,229,231, 79,158, 33, 55,107,212, -122,131,106, 98, 80,201,239,142, 21,247, 70,209, 36,102,174, 21, 69,145, 49,213, 26,129,224,200, 7, 42, 41, 57,145,129,179,214, - 33,133,100,107, 45, 65, 42,150,193, 18,250, 30, 95, 42,124,231,241, 62,224,165,192,119, 93,220, 52, 8, 25,101,207, 4, 92, 89, - 96, 23,107, 92,153,243,172,117, 60,106,214,156,250,140,237,234,154,179,174,198,173,174,113, 87, 43,220,178, 38, 56, 75,179,173, -209, 66,240,168,107,120,175,109, 56, 24, 79,144,214, 83, 24,205,199,125,195,135,125,205,181,181,228, 4,250, 16, 24,105, 77,165, - 53,185,145, 28, 20, 57,127,185,234, 41,230, 37, 97,185, 66,110,214, 28,102,142, 91,163, 9, 79,219,150,255,125,181,162,245,125, - 60, 87,134,128,158,174,127,174, 89,251,114,133,125,224,163, 68,126,148, 72, 86,204, 98, 60,227,245,147,219,168, 76, 81,183,129, -214,117,252,226,236,146,186,171, 25,101,134, 82, 43,170, 82, 96,132,103, 28, 60,198, 91,180,237,113,157, 37, 3, 70, 82,242,235, -211, 59,124, 99,118,135,163,124,194,194,215,124, 87, 41, 14,146,143, 64,103,123,164,210,156, 89,203, 7,125,195,199, 54,173,218, -146,107,100,155,146,213,144,154, 45,128, 52, 92, 74,193, 88,101, 72, 15, 39, 25, 28,101,146,105, 16,212, 33,208,137, 52,236,104, - 25, 99,138,139, 60,146, 65, 67, 26,170, 36, 95, 94, 38,173, 19,183, 68, 38,164,209,166,104,111,153,226,142,109,155,134, 72, 31, - 11,122,159,140,207, 20, 73,250,249,213, 77,105,254,254,138,186,247,169, 59, 74,236, 40,155, 32,187,166,221, 65,227, 42,105,121, -187, 62,254,190, 27,152,234, 38, 14,248, 34,153,208,124,145,231,186,202,162, 43,157, 76,176,189,148, 49,174,179, 26, 51,158, 76, - 80, 66, 68, 98,187,144,244, 93, 36,210,209,109,119,100,190,207,205, 70, 47,160,156,192,228, 16, 38, 35,168,178, 24,242, 82, 40, -212,164,100,154, 23,148,153,198, 0,173,243,108,172,101,211, 58,130, 7, 45, 36,111,222,186,205, 65,121, 64, 16,158, 76,148, 20, - 35,195,249,249, 51,168,109, 12,221, 88,175,162,165,103,179,217,101,146,223,236, 42,135,156,242, 46, 53, 69,221,243,185,229,153, -132,241, 60,238,244, 71, 51,152, 78,201,167, 19,142,143,167,168,170,164, 93,182,159,110, 94,190,200,159,252,151,153,208,243, 60, -198, 18, 86,201, 85,172,139,193, 21,163,162,226,193,244,136,131, 98, 68, 97, 50,238, 29,206, 41,116, 70,166,224,168,170,152, 29, -207,184,214, 89,114, 32, 84,187,125,151,144, 59,171,219,155,128,151,189, 53,143,136, 69,239,205, 95,123,139,119,127,250,110, 44, - 76, 25,187,251,174, 40,192, 8, 84,145,131,243,100, 70, 83, 9,129,201, 36,163, 76, 98, 59, 79,153, 75,114,169,176,193,199, 6, -218, 7, 58,231,110,248,152, 58,196, 52, 55,155,130,225,250,129, 6,160, 32,184, 64, 47, 6,131,138,189,247, 76, 16,165,137,131, -223,130, 79,141,237, 87,153, 10, 60, 59, 25,219,240,222,137,236, 38, 90, 1,147, 39,121, 30,108, 36, 60,107,123, 78,157,231,252, -122,141,187, 88, 66,187,217, 53, 4,243, 3,222,158, 79, 57,153, 28, 19,164, 32, 40,197, 51,187,166,123,250, 44,193,146,124,122, -197, 37,116, 52,173, 25,220,227,116,242,194,247,105,213, 35, 18,169,212,165,226,225,236,115,235, 50,241, 34, 89,167,183,136,186, -101,177,216, 32,234,109, 36,122,213, 29,178,208,136,106,202, 27,213,152,183,198, 83,190,121,123,206, 72,102, 8, 41,121,120,241, -148,215, 68,193,116,126,136, 12, 2,225,136,102, 54,189, 5, 28, 69,158, 49,234, 26, 30, 45,151, 40, 28,186,239, 57,108, 91,126, -111, 54,166,202, 75,230, 89,206,184, 26, 83, 6, 65,102, 84,140,155,144,146,204, 57, 60, 48,149, 1,145, 41, 58, 47,185,180,142, -165,235,241, 93,139,215, 2,159,231,209, 87,100, 93,227,235, 26, 47, 13,222,123,188,137, 17,170,118, 91,227,133,192,106,133,173, - 59,156,151,216,102,131,203, 74, 44,209,130,216,105,133,183, 53,190,238,240,109, 67,179,218, 16,172,165,182, 29, 63,106, 59, 90, -229,120,191, 89,241,212, 57, 62,105, 86, 52,109,139, 12,158,194,121, 2,129,128,100, 36, 53,179, 81,198,215,143,198, 28,205, 70, -152,217,152, 67, 35,248,232,233, 37,255,199,135, 31,240,227,235, 11, 58, 2,116, 53,132,144,124, 21, 52,204,166, 80,141,119, 65, - 50, 47,201, 68,255, 92,201,137, 76,220, 23, 33,163, 11, 93, 62, 97,246,250, 61, 42,157,209,117, 22, 31,224,253,211, 75,220,217, - 37, 27,107,153,151, 57,153, 9,228, 65,160, 68,160,179, 13,153, 48, 4, 39, 48, 2,164,109,185, 87, 30,112,247,228,132, 91, 71, - 71, 84,227, 10,143,228,190,173,201,131,231,150,206,241, 34,176,177,158,143,186,134, 63,105, 58, 26,203,142,151, 53, 88, 54, 75, -147,200, 28,233,107, 42, 99, 46,224,150, 81,108,133,100, 46, 37, 70, 57, 30, 59,143, 67,236, 56, 56, 58,249,149, 20, 89, 58,175, -198,241,243,112,222,192,171, 69,122, 15, 89, 38, 74,239, 88,242,122, 40,232,253,206, 77,110, 56,182, 68,114, 86,181,110,119,142, -253, 39, 87,212, 53,187, 60,117,233, 19,204,206,206,119, 93,138, 88,172,141,222,189, 89, 67,122, 91, 63,236, 72,147, 25,205, 23, -253,240,153, 78,157,156,220, 29,248, 33,218,209,118,218,160,165,140,171, 87,136, 69,253,242,108,119,161,141,138,175,161,156,197, -155, 63,159,196, 55,218,140, 34, 9,206,148, 49,140, 32, 31,204,111, 64, 86,154, 44,207,152,100, 25,179, 34, 71, 32,105,130,103, -213,218,104,239,234, 2,153, 82, 76,243,146, 91,147, 3, 74, 93, 96, 84,116, 85,250,217,211,199,180, 23,151,208, 92, 67,179,141, -230, 5,254, 43, 66, 64, 1, 56,152,243,221,111,189,193,111,127,243, 91, 60,184,119,151,163,241,156,197,122, 65,231, 61,221,182, - 1,215, 62, 63, 37, 14,159,141,254,236, 98,175,247,138,200,103,237,130,181,222, 53, 69, 38, 93,255,188,138, 83,170, 33,101,163, - 11,212,184,226,193,236,144,147,195, 35, 10, 97,200,139,140,145, 46,153,143, 43, 74,149,227,129,163,209,156,105, 89,114,149, 27, -130,209, 96,101,124,221, 58, 49,201,213,222,231,129,212, 53, 32, 60, 78,239, 10,122,178,130,141,146,172,212,157,103,134,224, 3, - 89,110,200, 4, 28,154,248, 62, 26,169, 41,115, 77, 38,226, 4,160,124,156,174, 91, 27,144, 74,226, 3,132, 16, 15,132, 46, 4, -180, 16,120, 47,216, 88, 31,141,130,172,195, 1, 97,184, 63,247, 47,145, 75,123,116, 33, 98,177,147, 42, 58,175,233, 60, 37, 21, -166,107,215,191, 42,243,255, 5, 39,185, 60,189, 39,131,138,163,172,226,212, 62, 16,113,154, 46, 69,233, 94,220,184,228,197,247, - 44,163, 60, 60, 38,207, 53, 66, 42,158,244, 29,143,186, 6, 22,203,157,201,204,167,254,109, 27,159,221,241, 40, 30, 88,101, 14, -163, 81,252, 25,235,102,215, 96,246,126,231,233,176,127,191,140,138, 88,124,115, 29,179,198,141,134,174, 67, 24,137,176, 18, 97, -123,164,237, 17, 69,198,236,232,132,111, 87,115,238, 28, 78,184, 59,174,200,181,102, 99, 37,239, 94,110, 24,117,107,238,201, 25, -249,180,138,242, 56,173, 17, 70, 35, 45, 4,223,161, 74,205, 97,145,115,213, 58,148, 30,241,186, 86, 28, 43,205,131, 81,206,116, -116,128,113,129, 96, 52,153,137,232,140, 86,138,208, 90, 84, 8,100, 2,150,109,207, 88,195,242,242, 26, 45, 37,215,118, 75,176, -129, 96, 12,161, 80,241,179, 86,132,229, 18,143,199, 11,112,157,197,139, 46,154,219,180, 53, 14,137,203, 13,206,111,177, 50,224, -235, 30,103, 52,174,183,120,173,163,241,181,237, 9, 93, 11,155, 13, 97,209,224,183, 91,222,239, 90,222,111, 90,182, 77, 77,211, - 55, 92,217,158,171,174, 67,116,142,210,193, 72, 65, 31, 36, 69,145, 51, 27, 85,156,100, 5,255,180, 40,249,225,120,202, 31, 77, - 43,190,101, 36,127,246,209, 83,248,248,147,120,166,218, 46, 58,115, 42, 73, 80, 10,202,156, 80,230,145, 3, 84, 85,241,136,252, -162, 65,201,177,139,243,101,224,189,196,226,222,143,199, 28,142, 70,212,190, 67, 11,197,229, 98, 65,184, 62,135, 62,112,182,221, -114,221,213, 28, 87, 5, 66, 11, 90,103,209,197,148, 50,159, 80, 22, 99,186,190,166, 26,229,220, 57,188, 75, 86, 20, 84,121, 78, - 91, 55,124,240,236, 35, 10,231,184,182, 29,231,193,241,179,122,205,255,120,121,205,181,101,135,116,145,194,189,134,194, 41,101, -180,218,245,150, 99,173, 25, 57, 79,174, 4,218, 57,158,246,158,177,210, 44, 8,116, 66, 38, 84, 56,173,174, 84,250,149,153,136, - 28,139,200, 77, 33, 75, 60,145,160, 62, 63,101,109,224,159, 8, 19,139,118,174,118,158, 39,221,158, 91,105, 72,197,223,250,248, -189, 67,227, 43,253,243,222, 40,255,233, 76,234,123,135,145, 74,123,243, 65, 78, 35,213,142, 44,231, 67, 34, 0, 37,150,160,243, -113, 15,111, 63,195, 23,251,165,203, 31,153, 46, 96, 58,216, 91,191,235, 46,149, 68, 72, 77,231, 2,157,245, 49,144,196,182, 32, - 29,144, 69,189,109,150,222,208, 81,154,122,134,130,231,146,207,183,147,113, 58, 23,160, 42,205, 97, 81, 50, 45, 53,243,124,132, - 18,146,166, 79,146,151,174, 37,184,192,184, 42, 57,172, 70,220, 26, 79,177,194,209,122,207,162, 93,178,236, 58, 30,126,242, 9, - 92, 60,221, 33, 22,191, 20, 33, 77,195,124,198, 15,222,254, 38,147,241, 17,213,104,130,181,142,171,237,130,203,245,150,176, 92, -165,195,218,238, 92,201,148,222,153,250,200, 4,221,203,180, 23, 29,138,244,240,119, 15, 68,198,151, 21,253,161,192, 14,251,236, - 32,227,245, 55, 89,130,207, 5, 20, 57,111,204,143,184, 55,191,131, 49,154,178, 28, 49, 45, 43,138, 60, 71, 11,141,115,150, 82, - 27,148, 82, 20, 38,122,128, 95, 6,159, 10,187,136,235,131,225, 94,218,151,117,236,123, 33,200,100, 63, 60, 52,115, 25,137,161, -157,165,159, 19, 40, 13, 42, 8, 70,185, 34,120,152, 24, 77,174, 20, 74,199, 61,151,240, 30,151,248, 15, 89,166,232,131,139,155, - 28,163,113, 93,135,144,146, 39,109,135,144,129, 32,163, 89, 72,112, 68,231,174, 65, 51,111, 7,162,156, 75,235,162, 16,211, 6, -179, 50, 62,204, 69, 17,145,167, 44, 69, 52,218, 62,113, 41,190, 66, 67,215,219, 61,217,103,106, 56, 51, 19, 11,184, 72, 94,238, -219,228, 40,183,255,247,219,142,107, 37,249,216, 40, 62, 64,240,172,107,227,186,103,187,141,190,210,242, 37,171, 45,151,126,198, - 44,135,249,148,127,125,247, 22, 63,124,237, 62,111, 31,148,252,244,244,122,183,183,149, 47,172, 97,134,213, 71, 48, 8,215, 37, -244, 36, 53,102, 82, 34, 66, 76,179, 18, 89,156,198,133, 0,155,231,252,227, 55, 30,240,181,201,132, 89,145,163,117,206,170,246, - 60, 91,111,121,218, 94,240,166,131,113, 49, 69,149, 25, 98,108, 34, 19, 92, 41,168, 91, 68,150, 83,150, 37, 7,193,147, 59, 71, -231,224,181, 34,227, 78, 53, 6,219, 98, 76, 65, 81,142,144, 66,164,158,223,199,219,135,104,223, 92, 73, 73,189,217,160, 50,193, -220, 91, 62, 58,123, 18, 45,101,181,230,143,238,221,227, 15,223,120,157, 7, 99,201, 79,214,155,184, 81,169,107,188,118,248, 98, -130,183, 46, 26,219, 40,133,171,175,241, 50,199,203, 16,247,240,133,137, 83,191,210, 81,205, 89,119, 17, 37,169,211,206,187, 94, -195,179,115,186,171, 43,206,206, 47,121,124,213,114,209,116, 60,220,246,116,117,131,106, 45,165, 23,204,114, 67,150,107, 58,109, -120, 93,231, 60,168,102, 28,155,156,153, 41, 57, 86,146,219, 35,205, 70,122,158,157, 93, 18, 46, 46,161,237,163,247,187, 82, 4, - 29,215, 96,255,242,254, 33,255,230,237,183,248,237,251,119,185, 30,107, 46, 46, 54,159, 57, 80,132,193,111, 33, 68,200, 88, 12, -209,201, 10,130, 13, 48, 45,233, 59,207,147,237,134,240,232, 20,182, 27,130,107,160,110,169, 55, 53,239,182, 27,182,237, 6, 65, - 78, 89, 76,201,203,130,239,255,103,191, 77,119,213,177,109,215,140,139, 17,147,241,136,104,118,211,240, 63,191,255, 49, 15,151, - 11,254,135,139, 21, 23,174,231,255,185, 90,179,242, 18,234,150, 16,246, 76,194,144,241,252, 86,106, 71, 74,149, 26,227, 45, 40, - 69,238, 44, 37,224,165, 96,101, 29, 39, 90,243,108, 95,243, 61,144,181,135,198, 90, 36,165,204,192,201, 26,220, 34,209,207,171, - 89, 94, 60,119, 7, 95, 10,210, 26, 74,232,157, 91,169, 72,191,119, 93, 66,209, 84,140,103, 30,206,168, 97,178,247, 95, 77,109, -246,247, 56,169,239, 77,123, 3,220, 48,132,179,236,231,108, 15, 18, 29,216, 57,207,245, 95,114, 15,236, 93,108, 28,220, 30, 34, - 19, 18, 57,194, 69, 6,107,232,109,148,127,117,219,216, 45,149, 85,156,192,139,180, 55, 82,123,241,172,106,111,151, 84,119,113, -242, 12, 1,114,195,164, 42,152,151,134, 42,207, 80, 66,208, 58,199,182,243,172,251, 14, 31, 2,101,161, 57, 46, 42,110, 85, 51, -124,144, 52,109, 75,227,122,222,127,250,140,167,167,167,112,250,209,115,145,150,191,212,135,115,160,114, 30,188,113,151,131,217, - 1, 66,106,126,126,250,144,247, 63,252,152,112,113,149,194, 59,250, 29,113,113, 56,121,179,100,113,234, 19, 19, 83,165,184,209, -144,236,120,117, 90,139,104,181,139,111, 29,246,114,131, 93,175, 16, 59,146, 26, 41,176,167, 79,172,239, 16, 29,221,100, 49,225, -215,110, 63, 96, 54,157,227,172,167,202, 71,113,208,212, 57, 65,192,168, 24, 97,125,195,192, 53,179, 4, 38, 82,131, 49,212, 62, - 68, 46,129,144,187,172,251,253,162,126, 19,231,187,231,188,164,108, 36, 9,169, 68,162,211, 38,189,214,104,115, 25,130,224, 32, - 55,104, 33,137, 52, 57,133, 49,209, 4,182,119,158, 66, 74,214,182,103,164, 84,220,250,180,129, 32, 20,215,193, 49, 82,134,174, -119,180,206,227,156,223,109, 2, 68, 72, 80,187,143,197,251, 38, 13, 47,220, 20, 82,178, 50, 93,163, 33,162, 80,236,188,185,191, -234,174,221, 37, 61,121, 85,221, 4,204, 40, 33, 8,214,198,181, 71,215, 70, 85, 68,232,118,135,134,115,209,110,116, 54, 74,168, - 88,106,236,154, 13, 44, 18,121,244,101, 54,204,109, 7,227,138,239,222, 58,225, 55,230,199,228, 58,195,122,207, 95, 53, 93,140, -173,124,241,245, 15, 68, 58,169,226,243,110, 70, 8, 21, 27,177,184, 5, 19, 49,134, 83,104,132, 14,136,206, 34,189, 64, 22,134, -127,118,235,117,222, 62, 58, 96,108, 50, 10, 29, 21, 8, 93,219,241,254,122, 67,103,151, 76, 54, 45,147,233, 28, 89, 40,196, 40, - 35,132,128,174,166,136,117,131,197,115, 48,157, 51, 55,134, 81, 7, 77,211,144,107,184, 61, 61, 68, 21, 35,100,211, 96,133, 38, - 83,154, 97,107,226,124,192, 53, 29, 78, 10,154,224,169, 28, 52,219,107,142,139,140, 79, 46, 47,169, 70, 35,254,249,157, 59,220, -170,166, 28, 77, 14,120,239,250,156,235,197,150,224, 44, 65, 23,248,237,134,160, 52, 94, 42,124,179,197,103, 21,222,246,201,183, - 41,158, 9,222,148,132,174,142, 22, 25, 10, 66,211,237, 22, 73,114, 47,140,165,237, 8,219, 13,246,122,133,109, 26,158,181, 45, - 63,239, 45,211,206,113,175, 48,116, 82, 50, 54,154,187,197,152, 82, 42,164, 50,209,152, 74,105, 70, 82,225,133,231, 32, 83,124, - 40, 51,124, 93,195,197, 34, 54,158, 46, 66,207,191,127,231, 54, 35,149,161,180,230, 82, 6, 30, 9,133,144, 89,124,102,247,138, -251,254,107,187, 81, 8, 13,235, 20,231, 0, 75,189,117,212, 93, 77,120,252, 20, 54, 87, 73,177, 33, 8,222, 18,218, 6, 46, 87, - 44,150, 91, 86, 70,115,255,240, 46,199, 71,183,217, 44, 90,180, 84,120,235,169,155,117,220, 32,217,152, 97,174,109,205, 95,127, -252, 24,209,247,156,173,106,186, 62, 16,218, 62, 61,251, 50,166, 39,186, 16, 27, 86, 31, 24,133, 64,111,147,113,151,130,214, 11, -238,139, 64, 19, 44, 2,129, 12,158, 18,193, 59,109,159, 12,162,194,243,110,150,195, 90, 88, 38,191, 11, 73, 60, 47,164,136, 8, -177, 54,177, 81,150, 73,189,181,255,156,106,149,228,214,123,110,143, 67,178,164,222,243,144,207,179,157, 90,164,103, 55, 0,188, -152,202,166,247,200,241,255, 32,139,250, 0,203, 74,177,183, 79,127,129,228,246,156, 30,156,231, 33, 59,225,190,154,172, 78,164, -176, 15,225,119,178,157, 44,103,252,230,109,166, 7, 83,182, 62,193,132,235,117,124, 19,143,102, 59, 67, 0,111, 35,124,152, 98, - 77, 81, 42,254,121, 68,252,222,129, 41, 89, 26,230,121,134, 49, 2, 35, 21,181,179, 92,215,150,117,103,233,189,197, 40,197,113, - 49, 98, 82, 20, 24,169,113,210,209,116,142, 39,171, 21,205,229, 51, 56, 61,143,211,211, 87,105,142, 62, 11, 38,111,106,222, 15, - 61,231,215,151,252,228,147,143,121,248,240, 9, 60,252, 56, 89,187,238, 77,217, 67,243,148,169, 4,249,239, 41, 11,148,220,145, -204,110,130,116, 84,114,250,147,207, 75, 10,135, 78,119,127, 74, 31, 60,215,117, 74,217,179, 22,188,228, 27,111,189, 77, 89,142, - 80, 82,146, 43, 3, 82, 81,230, 5,214, 89,140, 48,116,206,161,165, 64, 43, 67,221,182,232, 44,163,183,150, 46,120, 54,117,187, - 51, 37, 26, 86, 0, 54,253, 27,195,191, 61, 76,234, 50, 33, 5, 89,186,223,196,160,137,151, 55,118,177, 90, 43,166,185,142,211, -184, 81,100, 82,161,148,196, 7, 71,231, 2, 90, 10,214,214,145, 35, 8, 50, 58, 81, 5,231,227,218,204, 67, 43, 60, 78,106, 90, -107,227,228, 32, 18, 44,121, 3,191, 39,247,186, 64, 44,170, 67, 81, 23,106,119, 40,220, 60,197,233, 48,233,136, 81,192, 95, 37, -168, 72,107,152,205, 34,113,174,202,121, 80, 26, 50,231,152, 27,133,241,150,186,243, 49, 97,234, 83,114, 80, 31,215, 76,213, 56, - 18, 3, 6, 23,188,245,122,167, 6,121, 89, 34, 97,219,113,124, 50,227,184, 28,209,120,203, 39,182,227,195,118, 11, 77,178,146, - 29,190, 63,207,246,158,253, 4,223,170, 16,153,239, 67, 19, 22,199, 64, 68,154,102, 4, 10, 25,122,132,202,249,238,201, 9,175, -205,142,209, 90, 35,136,100,196, 69,211,179, 88,175,120,214,110,185,114,107,170,109,207,172, 24,163,114,131, 28, 21,209,253, 55, -104,202, 44,167,154,157,112, 92,221,225, 86, 89,209,173, 90,132,232, 40, 6,151,192,124,132, 12, 14,231, 60, 82, 41,132,150,184, -186, 67,230,134,237,182,102, 98,162, 87,198,170,105,144, 1,238, 26,129,240, 13,119,231,199,228, 74,241,201,118,195, 95,108,106, -218,109,141,183, 30,143, 39,228, 26,143, 34,168,130, 80,150,248,182, 37, 8,139, 15, 22,175, 51,130,245, 4,231, 8, 89, 30, 11, - 94, 15, 65,198,245,224,128, 40, 7,249,124, 49, 13,251,124,154,109,199, 7, 82, 48,111, 29,227, 76,211, 40, 73, 41, 3,135,166, - 64, 41,141,115, 14, 47, 5, 87, 93, 77, 38, 3,199, 74,242, 70,161, 80,163,130,199,249, 40,250,144, 47, 86,132,171, 21,183, 15, -114, 78,170,138,107,107,249,243,229,134,173,245, 80,106, 68, 89, 70,121,173,141,211,248, 23,202,219,122, 11,155, 85, 36, 88,246, -237,142, 59,145,204,157, 82, 5,132,224,104,174, 27,142,239,223,230,100,114,136, 82, 2,239, 28, 46,120,234,166, 78,183, 94, 92, -123,213,219, 13, 31, 94, 46,225,217, 41,108,108,156,198,151,219,232, 3,177, 90,198,198, 99,221,196,162,238, 28,253,186,137,175, -119, 40,236,193,179, 22,112,143,136,194,104,223,243, 65,215, 19,164,192,217,100,238, 53,236,181, 85, 26, 4,212,192,249, 74, 40, -177, 78,123,123,147,167,228,199,168,200,226, 38, 47,106, 47, 4,169, 40,210,153, 58,252,204,118, 23,237, 29, 82,198,200,144,161, - 32,134, 63,159, 92, 75,103,115,168,166, 41,248,108,136,246,254, 85, 77,234, 67,135, 32,245,243,126,220, 55,146, 34,255,233, 16, -137, 87,129,132,111,166,242,192, 77, 75,252,101, 96,251,175, 74,204, 27,220,188,240,112,255, 46, 63,252,167,191,201,119,110,223, -231,219,175,189,197,119, 94,187, 77, 89, 21, 60,126,114, 17,247,131, 89,158,114,223,101,210,235,166, 2,166,247,236, 49,141,130, -108,248, 44,201,115,133, 81,130, 92, 43,106,235,184,220,246, 92, 55, 53,174,183,148, 70,243,214,193,109, 14,102, 99,198,229,148, -213,102, 77,111, 61, 87, 77,195,114,177,132,197,229, 78, 19,252,101, 14,238, 1, 57, 24,160,203,193, 80,103,144, 12,102, 26,158, - 45, 89, 61, 62,165,125,248, 49, 44, 46,118,157,245, 0,237, 12,230, 7,131, 37,168,212, 41, 76,167, 77, 8, 71, 42,242,217,192, -220,150, 9,170, 79, 82,187, 44, 77,236, 55, 55,104,130,191,135,226, 58,152,173,116, 41,251,219, 11, 56, 58, 68,140, 71,220,154, -204, 25,153, 18,169,179,148,182, 5,101, 22, 11,187,117, 29,130,192,186,171,233,122,143, 82,130,171,245, 26, 43, 28,141, 16,132, -186,143,232,205, 32,121,212,164,201, 92,197, 66, 49, 48, 74,135, 61,123, 80,187,166,108,152, 56, 35, 61, 26, 37, 34,169, 34,215, - 18,141, 32,207,210,129,232, 64,136, 16, 61,201, 69, 64, 11,104,125, 32, 75,142,178, 91,235,145, 66,210,244,158,218, 57,100, 8, - 56,145,178,201,221,222,174,219,197, 67,140,118,207,161, 80,202, 93, 65,215, 42, 30,128,114, 56,244,210,123, 34,220,103,219, 86, -126,238,147,173, 99, 86,250,180, 98,102,226,253,106, 16, 88,231,169, 8,209, 73,174,169,119,204,119,191,247,156, 20, 37,183,103, -138, 77,117, 20,137,160, 50,161, 55,167,151,105,122, 23,159,158,214,173,229,217,166,227,175,187,134,191,106, 90, 62, 92,111,227, -125, 82,232,216,108, 13,205,170, 78, 12,121,147,154,153,161, 1, 20,121,116, 71,147, 30, 33,125,156,214,133,143,111, 81, 80, 8, -223, 33,108,203,119, 94,123,157, 73, 86, 33,181,166,211,146,211,117, 67,227, 3,205,102, 75,237, 90,150,117, 79, 79,199,253,209, -140,162, 42, 80,202, 32,148, 66,141, 74,204, 65, 69, 54, 25,147,221, 57, 32,147, 99,140,237, 57,191,184,100, 50, 18,228,213,140, -208,213,160, 20, 65,104,130, 15,200, 48, 80, 32, 28,211,188,160,173, 91, 38, 42,163, 16,146, 18,195,216,100,200,174,102,181, 89, -243, 81,223,240,231, 23,151,156,247,125,212, 92,111,226,228, 77, 31, 8, 74, 18,198, 25, 65, 11, 66,221, 18,104, 9, 34,202,165, -130, 25,206,166,100,172,101,227,164,123, 83,193,213, 75, 10,250, 11, 92, 53,250,158,119,250,142,166,105,169,157,135, 76, 48,149, - 18,237, 29, 65, 72, 46,234, 53, 29,129,222,245, 76,188,231,174, 50,156,228,134, 55,170,156,139, 50,103, 57, 26, 17,156,227,189, -247, 31,241,103,159, 60,230, 71,219,134,109,215, 71,147,160,148,151, 32,140,138,170, 21, 83, 70,233,154, 16,241,172, 25, 21, 47, - 93, 17,137,207, 67, 77,135,198,191,105, 1,203, 51,147,113,171,154, 96,148, 38,120, 79,223,181,172,155, 21,214,246,104, 2,189, -107,177, 93,207,138,134,245,227, 69,148,235,182,109,138, 62,173,119, 25,231,109,157, 86, 22,117, 36, 26,135, 20,125, 58, 52, 64, - 10,180,115,172,251,158,214,193,194, 57,236, 62,170,230,247,236,198, 73,107, 58,157, 30,116, 4, 15,116,198,127,121, 56,227, 7, -147, 17,255,100, 92,162,239,188,193,195, 31,255, 24,117,231,136,208,187,157,161,163, 24,146, 13, 7,211, 52,155,172,207,195, 78, - 30,170, 72, 43,225, 52,138,251,110, 71,214, 59,152,197, 26, 36, 21,108,234,184,254,252,149, 21,117,147,237, 92,111, 6,147,217, - 97,106, 27, 12, 96,134,169,226, 85, 14, 29,157,224, 69,157,118,133, 50,153,174, 72,241,183,195,184,126,177, 67, 81, 73, 11, 40, - 42, 94,251,214,219,252,250,253, 7, 76,230,183,144, 66, 49,157,206,113,109,207,187,182,141,157, 81,145,160,217, 54,165,146, 45, -175,211,141,148, 96,123,162, 71,187, 52,130,201, 40, 39,207, 12, 19,163,146, 93,168,103,209,116,212,235,116,195,105,205,107,135, -135,220, 62, 60, 97,156, 87, 40,161,241, 74,242,241,213, 37,139,171,107,184, 88,196,124,234,208,127,185,166, 69, 13,201, 95,233, - 49,146, 2,116,153,138,219, 16, 24,146, 76,109,156,125,121, 72,129, 38,162, 13,222,239,116,225, 67, 96,141,145,169,177,209,187, -110, 84,134,248,158, 13, 29,169, 18,177,208, 15,108,115,173, 18, 33,100,128, 87,253,206, 80,136,244,125,101, 52,230, 57,152,206, -152, 85, 35, 66, 8, 20,166,192,186, 62, 34,129, 64,103, 45, 4, 75,227, 58,140,136, 48,248,229, 98,137,201, 20,117,103,233,156, -199, 53, 13,244,235, 93, 70,113,218,195,198,130,147,228, 40, 46,197,211,146, 26, 80,157,116,186, 62,236,166,198,224, 33, 51,232, - 16, 40,141,166, 11, 30,233,226,125,221, 57,143,247,158,222, 7,156,243, 52,189, 39, 55,138,186,135,206,122,180,148,172,189,197, -171,232, 5,223,220, 32, 25, 73, 95,111, 83,230,125,235,226, 52, 33,210,107, 29,194,128, 84,122, 38, 90,123,147,131,126,179, 6, -169,155,212,217,135,231,209,151,231, 96,194,207,120,246,148,137, 48, 58,146, 98,148,113,168, 5, 66,105, 26,231,216, 52, 61,165, -183,108, 54,137,183,241,162,135,117,150,179, 57, 58,130,201, 45,126,167, 28,241, 70, 86,112,168, 2,167,215,171,120,112,126, 86, -212,112, 93,195,114,157, 16,172,132,114,105, 29,247,134, 46,125,125,240,138,184,185, 39,178,148,191,240,130, 45,169, 75,133, 29, -162,223,183, 20,136, 96,248,155,205,150, 55,142, 15,177,186,224,170,115, 92, 11,199, 98,221, 82, 1,227,190,163,146,130,183,143, -142, 56,152,143, 24, 85, 5, 18,133,148, 26, 89,106,228,225, 40,106,217,115, 29, 21, 15,219,128, 25, 9, 46,234, 37,235,237, 5, -227,106,134, 84,101,220,227, 10, 8, 73,235, 47, 19,163,122, 84,150,216,166,103,146,231, 76,180, 64, 11, 67, 38, 50, 86,237, 53, - 79,150,151,188,215,116,248,174, 35, 40,133, 47, 50, 66,215,227,155,109, 34, 4, 59, 66,219, 18,250, 53,212, 77,148, 78,245, 9, - 1,244,137, 44,217,181,187,169, 69,238,120,189,175, 34, 53, 19,222,243,180,109,249, 69, 93,243,255, 45,123,206,235, 13, 65,123, -182, 56,122, 31,184,106,214,148, 62, 80,132,128, 16,130,128,192,106,201,108, 92,178,146,154,235,114, 4, 71,135,241, 31,189, 94, - 35,206, 22, 17, 61, 25,222,171,129,253, 93, 22, 49,105,242,246, 45,126,248,107, 15,248,206,237, 35,102,199, 83, 30, 47,109, 92, -213, 5, 62,117, 79,138,151, 13, 88,131,148,214, 57,220,197, 5, 98, 62, 35, 35,196, 45,149,243, 4,161, 82,124,131,165,105, 26, - 86,221,154,211,197,138, 38, 36,207,138,254,115,130, 84,156, 75,187,235,136, 40,138, 68, 9, 10, 87, 43,150,222,179,105, 45,171, -166, 35, 8, 17,239, 61,149, 66,197,156,139, 53,173,245, 59,173,248,240,115,107,205, 55, 50,195, 91, 69,206,216,228, 24,169,249, - 14,158,223,124,253, 54, 39, 38,240,243,109, 31,155, 88,153,220, 35, 7, 84,211,171, 72,148,179, 3, 26, 39,119, 12,251,225,245, - 90,187,139, 44,206,116,226,113, 37,185,247,102,155, 26,189, 95, 69, 81, 31, 10,240,224,169, 62,176,137, 7,243,150, 1, 90, 29, - 82,175, 94,201,171, 86,238,138, 0, 98, 47,241,172,255,219, 47,232, 38,193,136,210,192,131,187,124,255,173, 55, 25,149, 83,178, - 44, 35, 56,232,123, 75, 89, 22,104,183,230,210,121,130, 15, 4,159,228, 17,219, 6, 46, 23,241,115,149,244,222,165, 70,230,138, - 81,174, 49, 82, 80,101, 34, 41,151, 60,151,171, 6,183,218,194,106, 3,153, 97, 84,149,188,113,124,155,131,114, 66, 32, 50,167, -215,125,205,197,102, 77,127,185, 76, 76,247,246,203, 17, 35, 6, 46,194, 62,251, 27, 17, 59, 62, 33,119,133, 29,191, 67, 68, 94, - 36, 58, 37, 84,232,249, 29,146,216, 85,252,125,243, 22,159,248, 13, 50, 5,173,100,106, 39, 35, 19,236, 50,196,111,152,231, 42, - 21, 45,249,188,169,144, 81,241,181,143,103, 76,199, 5,203, 77,205,253,131,219,180,214,226,189, 69, 9,193,182,107,232,108, 71, -109, 91, 70,166, 68, 75, 69,227, 90,140,209,108,234, 26, 23, 98,227,228,214,203,180, 42, 72, 26, 80, 19, 98,241,216,247,255,215, - 41,191,216,136, 56,189, 15,134, 62, 69,106, 0, 74, 19, 37, 62, 14,180,214, 88, 23,179,199,251,224, 81, 1, 28,158,173,117,228, - 82,196,126, 78, 7,218, 54,254,253, 94,193,214,245,180, 2,154, 62,196,239, 19, 2,215,135,221,218,104,216,239,119,110, 87,200, -135, 93,186, 52,137,149,191,127,221,211,179, 49,144, 0,131,123,254,249,120,153, 70,255,101,207,158, 41, 34,169,103, 82,210, 42, -201, 72, 72,182,120,148,117, 80,119,172, 54, 61,110,152,158, 63,181,243, 86,112,239, 22,191,115,112,139,147,178,228, 40,203, 81, -125,199,105,187,164,191,186,126, 57,252,190, 47,115,235,218,196, 91, 72, 4,189, 44, 49,137,133, 73,133,125, 88,229,228, 96,235, -120,144,233, 9,248, 14,209,217, 68, 94,141,123, 75,209,219, 88,208, 1,225, 4,130,192,251,218, 83,168,146,101,151,130, 58,188, -229,160, 50,220, 27, 79,185, 91, 76,184, 51,153,114,116, 56,195,110, 91, 52, 18,217, 6,228, 36, 71, 30, 22,136,204, 32,140, 36, -108, 28,118,219,210,103, 10, 39, 3,173,146,180,174, 71, 5,143,200,242, 68,230,142,197, 79, 25,131,197, 99, 16,100,121, 70,223, -212,228, 38, 67,133,192,214, 7,166,166,136,236,118, 91,115,222, 89,124, 8, 4,163, 8, 70, 18,186,158,224,122,112,155, 72, 58, -108,219, 20,140,178,199, 25, 34,133,251,236,107,246, 63,103,242,253, 44,255,118,113, 3,203,119,124, 92,111,249,127,175, 26,254, -100,221, 48, 22, 22,211,246,204, 60,140,149,100,237, 29, 91, 41, 88, 3,155, 16,232,203,140,181,209,252,227,163,138,127,123,247, - 54,191,121, 50,229,247,238, 31,113,160,224,189,167,215,136,235,107, 16, 42, 42, 19,202,152, 96,121,127, 82,240, 91,243, 3, 94, - 59,186,205,225,116,198, 59, 69, 78, 63, 42,147,178,196,164,231, 81, 68,199, 78,147, 71,101,199, 40,231,232,254, 9,181, 44,118, - 12,242,180,102,186,176, 61,206, 40, 50, 37, 17,105, 53,211, 7,139,117, 13,235,245, 53,206,183, 52,173,101, 45, 37,200, 60, 34, -135, 38,173,112, 94, 66,230, 19, 9,121,227,246, 93,126,239,123,223,229,215, 31,188,197,236,112,194,147,247, 63,129,174,229, 48, - 15,212,155, 58, 66, 33,117,183, 51, 75,106,109, 10, 17, 75,207,173,142,175,241,219,153,230,159, 76, 42,114,149,225, 67, 32,147, -154,198,247, 20, 82, 34,165,225,195,166,166,150, 3,243, 93,199,231, 86,153,228,201, 48,212,158,244, 78, 9,187,131,223, 93, 26, - 29,153, 26,155, 0, 0, 32, 0, 73, 68, 65, 84,148,134,103,124, 88,207,217, 16,125, 71,134,144,153, 95,186,168,223,192,186,105, -234,217,183,110,237, 82, 55, 17,210, 1,109,221,243, 22,146, 95, 4,129, 15,211,160,150,187,144,148,191,237, 41,125,144, 62,137, -116,160,119, 14, 49,159,112, 50,154, 96,116,148, 55, 9, 41, 88,174,150, 60,188, 94,113,118,189, 66, 10, 65,232, 18,177,105, 29, - 73, 37, 40, 25,229, 66, 82,199, 41, 61, 87, 20, 90, 16, 66,212, 46,215,157, 99,217,180,112,185,137,172, 85,109,160, 44, 57,156, -148, 76,117, 65,150,151, 55,147,228,214, 53, 60, 58,189,128,103,105,143, 62, 20,243, 87,189, 20, 38,221,212, 46, 93,119,159,116, -143, 65,237, 96,112,201, 30, 26,194,110,194,222,159,212, 7,199,190,161,195, 22,201,252, 32,176,211,128, 91,151,120, 8,114,167, - 77, 30, 38,255,228,151, 30, 67, 59,210,191,181,159,119, 63, 76,238,222,167,195, 59,193,244, 58,199,101, 57, 71,101, 73,221,119, -120,111,169,178,130,166,107,145, 74,179,105,214, 8, 25,144, 66,225, 66, 96,100, 74, 16,129,105, 89,113,185,190,230,234, 98, 17, -167,194,190,141, 93,123, 72,114,181, 97, 82, 31,200,150, 50,165,233, 13,196,189, 96,210,207,145,140,142, 18,226, 2, 1, 33, 37, - 69, 46, 89,119,142, 44, 37,172,181,189,199,139,184,187,213, 54, 68, 20, 47,153,195,213, 30, 90,235,169, 93,192,134, 64, 41, 37, -117, 99,119, 5,122,144,209, 89,151,174, 91,250,255, 82,238, 53, 93,114,151, 27,190,111, 8, 50,178, 77,220,167, 11,251, 60,105, -114, 63,110,241,197,102,249,197,134, 45,151, 81,122,153, 69,148,165, 9, 32,165,228,162,238,113,189,163, 91,109,226,123,248,178, -137, 91,101,112, 48,231,222,116,198, 97, 94,208,216, 30,131,231, 23,171,107,220,179,243, 47,110,194,123, 11,181,139,242,182, 76, -241,221,201,132,127,117,231,152,223, 62,153, 80, 77,114, 62, 57,191,142,215,196,167,179,228,224, 54,223,251,254,183, 57,253,224, - 35,132,204, 35, 4, 63,236,102,149, 68,120, 3, 94, 34,219, 53,210,197,233,237,161,114,156,231, 21,149, 11, 28,224, 57,153,142, -120, 99, 52,225,173,195, 67, 14,198, 19,242,188,192,123,203,229,163, 51,114, 43,208, 85,158, 12,142, 98, 20,175, 95, 54,216, 77, -205,170,169,177,163,138,144,101,212,206,211, 43, 77, 16, 10,163, 13,189,179, 40, 41,177, 65, 48, 26,141,240,206,199,251,116, 60, -194,117, 61, 2,184, 93,141,217,118,150,177,201,176,161,103,140,227, 81,219, 17, 66,192,107, 77,200,116,100,104, 55,237,141,214, - 63, 22,224, 93,118,252,238,243,206,112,236,197,255,126, 49, 70, 85,124,206,215,110,204,187,234, 45,118,179,229, 39,171, 45, 7, - 4,250,166,193,118,150, 32, 4,139, 0,219,204,112, 17, 4, 87, 30, 10, 99,248,245,106,194,221,114,198,215, 38,199,220,159,156, -144,151, 25,118, 94,240,112,221,195,250, 42, 14, 41, 78,192, 40, 99, 84,102,124,111, 58, 67, 41, 77,231, 3,191,232, 45,219,214, - 66,101,162, 74,104, 58,130,131, 57,156, 28, 69,251,225, 91, 71,252,219,111,191,193,247,143, 79,248,221,215,239,225,230, 5,143, -201, 99, 67,115,124, 12,101,206,166,200,168,148, 38, 8,193, 73, 89, 97,189,195,120,207,114,179,102,221, 89,148, 20,148,185, 70, -151, 57, 77, 94,194,252,144,252,181, 55,112,119, 95,131, 78, 65,150, 12,140, 32,114, 0,180,225,187,223,254, 58,199, 7, 39, 16, - 60,214,100,124,114,246,148, 25,150,197,114, 27, 39,225,122,147,160,251, 62,170, 60,250,193, 71, 33,236, 46,106,240,188,153, 25, -190, 89,142,147,167,137,130,224,240,222,161,164,102,211, 55,180,194,242,164, 75, 89,225,153,137,208,250, 96,231,236, 99, 17, 23, -200, 72,161,113, 50,161, 79,105,189, 98,221,243,178,212,126, 72,192,235,190, 82,109,124,121, 81,151, 9,114,240, 41,142,210,217, - 88, 64,250,189, 3,157,193,206, 85,236, 32,132, 87, 49, 46, 25,224,145, 23,141, 84,254, 54, 63, 6, 9, 85, 16, 17, 10, 65,176, -200, 12, 85,150,113, 52, 46, 16,194,227, 29,156, 95,175,248,139,119,222, 5,209, 71,178, 19, 62,193,166, 77,116,197,154, 23, 73, -222, 16, 51,166, 67,136,249,188,189,119, 52,189,163,111,250,216, 93,173,151,177,216,141, 71,140, 39, 35,170, 66, 35,241, 72,109, -232,250,150,198,121, 30,158,157,179,125,122, 26,247, 67, 55, 59,152, 47, 67, 54, 84,177,248, 26,177,131,151, 3, 59,223,224, 97, -160,147, 67,214,252, 75, 60,212,247,247,238, 67, 83,224,210, 62, 87, 14, 76,204, 68, 38,115,118, 23, 30,162, 19,188,173, 19,243, -220, 13,161, 58, 58,194,197,168, 4,127, 37,191, 99, 37,118,118,166,129,104,252,211,247,244, 65,208,107,133, 32, 36, 55, 88,135, - 11,142,197,118,129, 68, 82,234, 17, 74,104, 50,173,144,194,160,165, 98,219, 52, 76,139, 17, 15,183, 75, 56, 59, 75, 39,153, 77, -123,252,253, 2,153,224, 46,103,119, 28, 2, 51,200, 26, 37, 84,229,243, 9,100, 68,166,115, 7, 49, 80,195,122,156, 11, 88, 5, - 5,113, 98, 19, 30,172, 8,224, 3,181,247, 4, 33,232, 83,163, 42, 9,172,187, 97, 23, 42,246,228,107, 73, 70,166, 84, 60, 68, - 92,159,252,207,137,178, 60,215,236,244,222,174,143,215,175,235,119,201,102,251,176,251,231,125,188, 8,161,143,170, 72,230, 73, - 54,187, 78, 42, 90, 27,125,216,221,166,129,235,197,103, 63,123,194,195,108,140,171,170, 36,253,213,188,187,186,228,252,242, 50, - 54,172,175, 18, 10, 50,228, 59,204, 39,252,193,157, 99,114,169,152,149, 83,156,235,121,167,238, 83, 80, 82,186,103,182,215,156, -126,242, 48, 53,160, 18, 49,196,200, 14,211,122,232, 17, 65, 34,115,137, 8, 22,105, 5,178,105, 9, 42,144, 9,193,189, 81,198, -131,106,202, 91,243, 25,147, 34,163,154, 69, 51, 21,223, 67,215, 56,214,151,231,140, 84,142, 57, 24,199,251,196, 65,216, 90, 66, -211,227, 69,160,147,158,173, 20,184, 98,132, 77,220,146,218, 91,132,140, 33, 63, 69, 53,194,217, 30,161, 20, 89,150,209,214, 45, - 50, 8,100,102,240, 65, 80,100,154, 77,239, 57,206,198,116, 90, 98,125,195,179, 46, 74,187, 66, 12, 5,136,164, 68, 27,207,148, -151, 21, 99,249, 25,159,191,204,175, 23,167,248, 0, 4, 31, 97,255,159, 45,150,124,220, 89,124,211,210,246, 14, 39, 2, 87,222, -114, 42, 37,207,132,100, 94, 26,222,210, 25,119, 70, 51,148,202,208,198, 96, 76, 73,171, 13,125, 33,185, 80, 89, 92, 25, 92,175, - 97,121,197,166,243,188, 94,106,148, 84,156,246, 29, 63, 90, 44, 19,139, 59,233, 75, 85, 90,221,142, 51, 80,138,217,100,204,247, -102,135,220,169,102,140,203,138,172,200,120, 71, 73,220,120, 12,183, 79,152,222,127,147, 81, 81,130,146, 84,192,131,201,140,147, - 81,206,196,104, 46,250,134,218, 57,148,214,228, 66,162,165, 96,148,103,252,240,183,254, 41,255,234,159,255, 62,255,236, 55,190, -199,209,252, 62,106, 62,166,155, 29,211,118, 93,146,230, 26,206,188,226, 27,135, 83, 68, 86,209,109, 87,124,252,240, 9,237,242, -154,233,184,164, 93,247,233,249,232,161,109,201,180,194,109,183,209,178,185,237, 83,141,139,199,217,177,210,188, 53,202, 24,201, -140,222,181,145, 65, 79,160,237,123,150,222,242,151,203,134,237,224, 60,103, 20,163, 42,167,207, 75,200,116, 76,203, 19,137, 43, -129,223,157, 73,128, 8, 33,254,250, 21,214,193,151,159, 20, 34, 81,248,135,201, 92,232,221,132,190,109, 34, 57, 34,193,100,251, -142, 61, 55,196,160,127,136, 31, 42, 77,216, 50,197,172, 62, 89,178, 58,217,176,221,108,153,140, 15, 33, 52, 56,219, 36, 82,194, - 62,155, 60, 29,252,147,113, 60, 36,203,148, 50,119,179, 71,108, 99, 45,238, 45,172,183, 41, 35,126, 7,127, 74, 13,193, 7, 86, - 93,207,246,234, 20,135,100, 81,119,172, 47,215,176, 90,127,177, 27,222,103,153,233,244,169,233,232,147,214,193,200,228, 91,239, -227,207,200,144, 78,150,194,105, 20,187,223,219,189,162,190,109,118, 83,184, 75,123,244,125, 97,113,219,196,212, 51, 33, 99,193, -217,191, 23, 94, 28,216, 84, 42,252, 55,221, 73, 6,165,136, 83,103,122, 73, 56,189,155, 84,251,150,101,219,146,101, 26,183,245, -132,205,154,233,120, 12,214,115,114, 56, 5,160,204, 75, 50, 99,112,125,143, 50,121,220,165,251,134,215,230, 21, 15,191,254, 38, -188,255, 65, 12, 48, 81,123,124, 4,217,199,127, 71,217,231,175,111,219,237,146,200, 26, 27, 73, 92,222,199, 48, 17, 37, 33, 3, - 45, 4, 77,231,208, 72, 86,193, 83, 32, 88, 16, 8,206,115, 32, 5, 54, 4, 46,251,158,137,138,141,192, 38, 65,209,197, 16, 64, -228,247,166,213,129,108,227, 93,130,223, 19, 15,194,166,130, 23, 92, 34,246,245,207,255,153, 23,255,251,171,248, 19,232,228,136, -149, 26, 22,186, 62,194,224,214,237,174,255,103, 54, 8, 22,206,174, 57,157, 95,112,234, 61, 44, 47,226, 52, 3, 80, 8,120, 85, -197,229,102, 5,171, 45,109,215,115, 50, 61,100,221,183, 60,209, 49,171, 30,167, 65,118, 59, 18,163,200,227,251, 54,232,117,189, -137,208,252, 80,156,148,197,123,131,207,193,119, 29,254,236, 17,206,247, 60, 10, 61, 63,152, 85,228,128, 81, 2,157,105,100, 46, -200,171, 10,151,107,176, 61,107,215,177, 92,109, 80,143,174,201,239, 76, 99, 19,234, 60,106, 86, 48, 42, 2,186,201, 41,187,146, -243,229, 53, 11,105,233, 61, 28,143, 39,204,110, 29,162,148, 36, 88,104,183, 45, 25, 1,219, 89,132,136,136,157, 17,130,186,109, -168,138,156,215,230,135,252,199,235, 83,166,121,201, 55,111,189,206,149,123,194,199,109,131, 32,139, 69,247,238, 93,184,188,138, -171,182,182,123, 57,116,254, 57, 5,250,121,146,156,190,121, 78, 69, 90,231, 8,187, 99,165,135,255,159,186,247,108,178,236, 58, -239,253,126, 43,237,112, 98,199,153, 1,102, 6,145, 0, 73, 48,136,162,168, 72,221,171,171,107,189,176,222, 58,125, 5,127, 13, -126, 26, 87,185, 92, 46,135,178,101, 91,117,203,215,165,146,117, 45,139,162,196, 32, 6,136, 4, 48, 4, 6,192,204,116, 58,113, -135,149,252, 98,173,221,231, 76, 34, 2, 85,186, 86, 87,117,117, 79, 79,247, 9,123,175,181,158,244, 15,207,248,155, 8,124,176, -217,240,254,102, 67,216,108,152,108, 74,142, 70, 35,220,116,204, 47, 85,193,151,116,137,174, 11,106,161,232, 8,180, 33, 49, 20, -218,224,168,139, 17,119, 15, 61,247,164, 72,190,237,139, 53,108,123,254,135,239,253,132,232, 44,232,241,117,155,154, 73,149, 20, - 44, 67, 62,127,214, 61, 76, 71, 40,210, 56, 78, 41,131, 20, 2, 41, 52,183,170, 49,247,104,161,158,208,121,203, 97, 61, 66,199, -200,237,233,152,219,179, 17,181, 81,172, 27,205,173,110,198, 74,104,240,150,224, 18, 30,228,197,217, 17,175,188,124,151,111,188, - 54,199,148,154,155,199, 37, 55,223, 62,164,111, 54,252,183,189,163,251,240, 62,194,247,196,237,138, 11,111, 57,242, 61,147,170, - 98, 50,159,178,110, 91,150, 87, 93,214,108,224,122,150,221,111,219,221, 57, 65,155,102,235, 19, 7,182,226, 3,161, 57, 31,111, - 24,141, 21, 71,166,102,101, 27,162, 15, 56,224,157,102,203, 89, 8, 40,169,168, 43, 69, 37,210, 40, 86, 86,145, 77, 35,210, 88, -176, 80,233,188,183,221,206,203,163,123, 90,123, 63,254, 42, 64,244, 62,117,248, 83, 87,234, 3, 8,167,200, 21,143,207, 51,219, -224,115,133,222,166, 67,113,219,238,108, 81,201,135,214, 64, 33,250,231,212, 18,127,242,141, 63, 15, 60, 36,101, 58,228,116,238, -155, 18,224,104,204,239,188,126,155,155, 39,199, 76,231, 37,149,209,156, 28, 30,240,225,229, 57,171,237, 22,101, 20, 81, 12,109, -232, 68,237,160, 46,118, 82,152, 42,139, 4,172,123,216,108,224,106,155,248,200,109,127,141, 58, 86, 35,195,200, 40, 68,148,108, -189, 99, 99, 3,103, 77, 67,127,149,231,237,155,203,207,119, 96,171,189, 46, 10,131, 82, 87,110,221, 26,147,237, 70,243, 2, 40, - 51, 21,101, 24,228,201, 61,158,113, 36,123,210,199, 4, 2, 52, 38, 5,222,174,221,177, 20,164,220,241,106, 10,185,107,185,135, -144,103,167,123,115,173, 48,120,162, 15,200,238,140, 54,247, 49,207,239, 67, 66,123,186,252,243,110, 11, 33,176,237, 44,203,190, -103,213,247,148, 74,115, 52,155, 81, 21, 21, 39,179, 99,140, 81, 72,161,209,101,129, 16,146,217,120,130,115, 61, 35, 93, 80,170, -200, 5,106,103,149,232,251,244,248, 62,163,137,221, 51, 58, 65, 74,238,168, 42, 3,208,188, 48,100, 88,123,154,102, 40,137, 37, - 94, 23,212, 32, 17, 49, 38, 45, 23, 18,117,205,121,207,101,219, 81, 85, 26,215,123,182, 54, 80,228, 45,115, 13,148, 27, 40,108, - 3, 86,193,251, 92,197, 59,210, 48, 88,236,130, 88,239, 30,167,118, 62,171,195,245, 60,205,251, 39, 55,122, 53, 74,126,230,227, - 50, 37,120,101, 6, 8,250, 60, 11, 63,187,252,100, 7, 40,111,179,177,142, 72, 93, 42,107,147,167,192,114,243,233, 19, 81,159, - 16, 74,221,164,230,131,222,241,253,182,227,103,155, 54,237,167,102, 11, 62,139,110,168, 36, 49,122,173, 43, 32, 67, 66,194, 83, -164,239,243,216, 68,208, 35,131, 70,184, 6,169, 42,148, 23,168,222, 18,101,224,181,217, 41,199,166, 96, 50, 27, 99,180, 68,150, - 26, 85,106, 34,130,162, 46, 89, 44,150,232,141, 69, 7,129, 84,105,223,248,182, 71, 40,129,170, 53, 69, 81, 50, 50, 37,149, 48, - 8,161,185,117,231, 6,245,193, 24,115, 56, 70, 24,141, 18, 26,239, 34,182,115,200,210, 16,188,199,197, 64, 81, 26, 90, 31,104, -251,150,117,132,214,148, 52,192,168, 52,188,183,110, 8, 50, 18, 11,147,206,139,201, 24, 84,129,240, 1,185,234, 17,217, 65, 55, -239, 32,212,245,167, 70, 37,136,223,222,103, 72,191,227, 65,150, 5,210, 8,164, 18, 72,145,212, 48,165,247, 79,183,225,247, 43, -246,253, 79, 47,232,172,227,114,221,176, 88,246,196,182,227, 81,140,252,198,116,204,161, 54, 76,234, 9, 0,239,180, 27, 46, 92, -199,199,125,207, 54, 6,122, 17,113, 66,195,225, 12, 38, 35,226,100, 2,179, 89,218, 71,171, 38,105, 30, 92, 44,211, 26, 57, 63, - 75,126, 20, 34,209, 21, 27,160,150,142,185,210,180,206,114,101, 59,254,106,181, 77,123,161,168,185, 51,154, 50,146,138, 50, 6, - 94,158,140,152, 40, 73, 89, 40,188,130, 94, 40, 62,180, 14, 87,150,212,166,194, 17, 25,153,146, 55,191,240, 50, 7,211, 17,109, - 31, 48, 72,182, 54, 34,162, 68, 19,249,229,250, 42, 61,119, 81,114,235,228, 16,163, 10,122, 4,239, 93, 93,225,151,103,153, 97, - 16,210,243,219,236, 36, 24,158,156,207, 39,227, 33,164,166,233,123,126,218,123, 94,174, 36, 70, 68,122, 31,232,188,231,157,126, -195, 79, 54, 61, 27,239,145,217,151, 69,163, 16,165,160,245, 36,165, 65,145,217, 35, 82,165,241,168, 16,121,236, 41,114, 49,229, -159, 15, 42, 44,139, 84, 84, 85, 38,237,199,161, 91,250, 43, 42,251,199,131,186,148, 48, 58,132, 98,154,128, 14,163, 81, 86,184, -146,201,122,174,168, 18, 34,215, 84,169,202, 40,244,110, 46, 54,104,214,126, 30, 78,237, 63, 69, 48, 31, 14, 55,249, 12,125, 94, - 85,236, 29,230,164,139,116,115,204,183, 94,189,205,168, 30,209,181,129,186, 42, 80, 50,112, 88, 76,248,104,181, 96,219,111, 81, - 50,166, 24, 88, 40,162, 86,200,202, 32,164, 76,168, 73, 31, 97,217, 38, 95,246,197, 26,150,217,159,125, 86,167,235, 54,174, 48, - 38,205,147,173,247,248, 0, 27,239,211,225,237, 61,172,206, 63,123, 53,166,115, 23, 37,184, 93, 94, 39,217,179,161, 53,105, 30, - 99, 76,230, 71,154, 28,108,217,161, 57, 7,224,154,209,121, 54,170,211, 74, 68, 67,200,153,234,224,152, 23, 99,170,160, 66, 76, -139, 63,100, 10,214, 0,138, 51, 58,183,189, 51, 35, 32,100,107, 77, 93,236,230,251, 42,238,130,103,148, 89,191, 63,183,166, 93, - 82,251,162,235, 97,181,133,208,179,145,154,227,233,148,195,106,204,108, 58,197,123, 79, 89, 22, 40, 41, 24, 79, 38, 56,107, 9, -193, 98,187,158,178, 40, 8, 42,178,106,186,244, 6, 93, 72, 45,238,190,123,254,104,199,251,188, 49, 34, 96,114, 82,147,121,236, - 25,131, 16,131, 39,202,152,198,219, 49,210,245, 14, 39, 99, 50,112,241, 17, 27, 28,141, 15, 76,180, 98,219, 88, 10,163,114, 52, -207,231, 68, 8, 59,228,255,208,245,232,236, 30, 74, 63, 38, 0,159,103, 39, 60, 33,194, 39,239,157,231, 5,245,199, 70, 42, 21, -220, 60, 74,201,247,168,230,141, 73,193,177, 54,212, 81,112,164, 21, 55,100,224, 98,185,250,228,181, 39,196,142, 2, 26, 99,154, -237,111, 59, 88, 52,159, 92,233,239,239,205,174,227,170,141, 60, 10,145,141,202,215,223,147,170, 32,187,190,166,179, 37,212,176, - 73, 65,222,107,132,235,147, 0, 77,238,128,136, 40, 17, 42, 38,122,155, 8,200,114,130,244, 61, 50, 68,214,209,115,103, 82,113, - 84,205, 24, 41,141, 86, 18,169, 20, 33, 6,212,164,196, 90, 79, 64, 96, 53,244, 23, 43,100,231, 8,173, 69,212, 6, 57, 41,137, -214, 35,141,166,156,212,140,203, 17,243,217,148,234,116,134,158, 84,168,113,133,170, 12,193, 6, 90,235, 16,133,196,134, 64, 80, -146, 32, 37,141,247, 4, 33,184, 10, 30,163, 20,235,174,163, 51, 6,173, 43,222, 58, 57,230,230,184,230,168, 54,220, 28, 25,254, -139,219,183,248,175, 95,191,203, 91,167, 35,254,106,213, 34, 93, 64, 6,119, 29,204,245,240,213,104,180, 82,104, 37, 51,222, 80, -160,188, 71,121, 80, 74,163, 42,185, 75, 4, 4, 40, 41,144, 49, 33,224,229, 94,235,254,233,106, 93,167, 22,122, 78,110, 35,145, -216,103,157,254,117,199,182,138, 8,111, 57,179, 13, 87, 81,240,113,223,114,207,182,108,172,229,178,105,137, 66, 98, 51, 59, 70, -214, 21, 98, 52, 34,102,103, 63, 70, 21, 84, 21,163,233, 4,187,216,100, 91,209,144, 40, 89,139, 45,244, 61,247, 31, 92,242,221, -143, 30,112,213, 47,249,139, 95, 62,130, 15, 62,204,235,106,205,202, 54, 84,125,143,176, 13, 69,136,204,140,194,134,192,186,109, -249,225,229,154,141,212,248, 24,145,198, 32, 84,193, 89,215,113,103,114,200,205,185,193, 89,199, 98,213,177,117,160,181,132, 62, -242, 96,253,136,237,102, 11, 77,195,225,193, 17, 33, 70,186,190,227,131, 95,188, 11,155,101, 46, 90, 51, 8, 85,239,241,204,159, -220, 87, 33,183,203,183, 14,175, 4,127,223,118,252,223,151, 43,222,110, 59,254,118,189,225,199,139,150, 77, 76,116,213, 66,194, - 76,107,186, 24,136, 66, 38,207,166, 97,236, 27, 19,173,247,200, 20,180, 18, 94, 61,152,112, 37, 76, 22,235, 82, 59, 9,229,167, -138,184, 12, 52,237,243,226, 16,207,176,133,125,110,251, 93,235,164, 62, 53, 59, 76,243,218,168,178,218, 85, 1,151,151, 80, 5, -104, 87, 80, 78,210, 28,216,100,126,162,201,237,216, 65,217,203,185,127,222, 10,125, 95,201,108, 16, 81, 25,254,237,220,222, 91, -204, 78, 56, 58,253,205,203,211, 81,166, 77, 70,170, 66, 98, 10, 77,111, 35,101,110, 87, 42, 4,165, 0,105,210,251,178, 22, 98, - 70,236,247,214,165, 96,212,183,169,165,178,204,193,112, 86,229, 89, 82,170, 88, 61, 17,105, 10, 68, 76, 7,100, 41, 3,157,144, -159, 13, 16,247, 36,128,201,183, 32,170, 76, 83, 11, 59,174, 56,164,255, 43,178,232,193, 53, 90, 61, 47, 6,159, 91,244,251, 90, -223,229, 36,161,229,251, 12, 98, 11,213,110,132, 50,140, 86,182,171,180, 97,125,174,194,237,240,213,237, 84,232,174,171,203,225, -189,245,233,185, 6,235,207,184, 55,103,133,221, 8, 71,230,182,179,203, 86,179,155,158, 48, 25, 97, 2,196, 24,233,156,163, 42, - 43,132,148,232, 34, 85, 71,169, 59, 22,249,222,131,247,248,218,233,109,198,198, 80,158,206,233,174,214, 57, 97,202,175,223,254, - 10, 43,211,216,166,128, 14, 73,176,162,202,107,196,231,235, 84, 25,176, 73, 60,100, 8,202,222,122,218, 24,169, 60,120, 25, 48, - 14,214, 46, 80,105, 65,231, 82,160,170, 76,106, 26,116, 42,111, 82,163,119,216,145, 65,203,125, 16,224, 24, 2,163, 54,169,253, -238,229, 39,143,175,246,247,214,222, 82,127,172,139, 51,159, 51,159,212,152,217,136, 27, 82, 49, 51, 5, 91, 23, 49, 37,168,224, -241,189,228,213,227, 99,222,221,222,255,228,231, 90,183, 48,233, 82,162,164,115,199,174, 72,157,201, 79,189, 55, 71, 85, 74, 96, -203, 92,150, 78,138,212,241, 58,157,165, 91,112,113,158, 76,101, 84,149, 70, 40,195, 45, 42, 52,194,107, 34, 14,130, 33, 42,155, -243, 66, 75, 12, 37,193,247,248,178,198,105,133,125,180,228,127,253,209, 15, 24, 71,193,188,252, 58, 82, 41, 60,130,114, 84, 16, -123,143,152,214, 8, 31, 88,158,175,112,210,114,255,195,123,140,100,228,120,118,202,232,116,142, 26,151, 72,153,199, 2, 35, 65, - 57, 31, 35, 39, 73, 57,113, 16, 67, 9, 66, 18,163,192, 75, 73, 52,208,228,110,148,170, 20,155,117,147,192,103,120,212,168,100, - 46, 13, 55,162,163,139,145, 98, 58,227,197,245,134, 66, 27,254,112, 62,162, 38, 80, 86, 83,126,183,151,124,247, 23, 31, 49, 61, -158,208, 54, 13,210, 6,102, 64,211, 89,164,117, 72,231, 17,131,135,183,183,215,103, 91, 52,250, 41,206,122, 28,130,180,123,188, - 34,223, 63,102, 2, 26,177,223,226,181,225,122, 1,197, 46,161,191,127,252,119, 11,126, 60,159,115,251,246, 41,107,161,185, 49, -155,242,113,150, 22,142, 49,178,237, 60,197,184,192,201,196,124,153,148, 21,109, 76,235,254,173,219, 55,121, 57,118,244, 93, 79, -123, 52,226, 7, 77,195,253,143,174,146,184,141,112,176,190,202,186, 74,129,183,239,127,176, 91, 35, 75,141,248,210,239,242,202, -228,144, 27, 85, 5, 97,195,213,102,201, 61, 21,144, 82, 17,130,231,170,233, 81,170, 96, 90,214, 9, 15,101, 45,181,144,108, 62, -190,207,189,197, 21,181, 52, 92,184,192,228,245, 87,137,165,230,206, 75,183,248,250,242, 85,254,207,243, 5,156,159,241,227,255, -231,175,119,103, 90,183,217,139, 25,123, 4,132, 95,245,209,245, 96, 2, 92, 56, 88,151, 48,174,185, 88,101,141,249,124, 78,170, - 73,141,138,129,149, 11,140, 74,205,186,203, 12,161,222,131,134, 63,157, 86,220,136,145, 57, 0, 19,188, 13,124,124, 56,227,127, -218, 58,220,162, 77,137,198,106, 5,182,223,141, 81,202, 34,157, 83,195,248,146,140,103,178,242,217,251,255,169,160, 62,170,161, - 58, 74, 30,211,202, 64,219, 38,190, 92,211,193,252, 16,232,147,137, 70,183,222,205,212, 11,189,155,185,199,161,141,246,252,172, -125,244,123,191,201,246, 47,255,230,159,190, 82,223, 63, 68,158, 2, 20,237, 81, 70,100, 62,200, 85,207,189,143, 23,124,243,238, -150, 48, 58,194,148, 6,169,161, 82, 37,127,241,179,159,112,241,241, 5, 24,216, 22,145, 73,126,188,170, 84, 88, 11, 91,151, 57, -199,235, 38, 85,231,203, 54, 7, 69,153, 40, 68, 70, 64,165,174, 27, 33,135,229, 4, 41, 21,198, 84,124,184,186,160, 27,120,202, -101,190,198,159,229,163,235, 83, 59, 38,132, 29,143,220,134,157,242, 16,213, 14,160,228,119,221,249,148,190,231,223,209, 58, 97, - 3,122,191,211,229,222,191,143,251, 12,135,144,175,239, 48,243,244,121,152,106,115, 0,241,215, 15,158,231,237,114,151, 64,120, -210,154,105,114,102, 41,121,188,109, 59, 24,124, 40,185, 75, 70, 10, 13, 10, 44, 29,202,104,182,237,134, 24,234,235, 68, 11, 2, - 90, 73, 74,173,248,202,233, 75,156,175,175,168,202,146,170, 50,116, 70, 38,228,109, 40,210,252,248, 87, 1,180, 29, 36,162,249, - 54,137, 60, 12,243,238,125,205,250,152,223,155,221,105, 11, 7, 45,104,101,100, 82, 21, 20,170, 96, 28, 60,155, 69,131, 34, 49, - 65,186,144, 94, 66, 73, 96,217,248, 29, 62, 33,207,223,177,185,171, 97, 51,142,161, 8, 89, 53, 46,139, 79, 12,207,253,105,242, - 98,247,236,237, 60,159,106,166, 85,133, 50, 21, 7,165,129, 24,152, 25, 77, 99,123,250,206,115, 96, 52,141,240,105, 15,111, 63, -197,250,243,238,154,198,132, 54, 41,153,103,245,233,246,165,219, 75,178,182, 93,186, 56,190, 72,227,142, 16,161,236,161,154,130, -111, 82,133, 46,202,204,166,113, 59,140,134, 15, 48, 4,116, 61, 38,244, 27,194,168,194,175, 86,120, 52, 78, 68,172,208,172, 31, - 93,241,243,135,239,115,123,118, 3, 93, 24,154,222, 49, 37, 75, 21,228, 60,164, 45, 4,155, 94,115,142, 35,108,183,196,139,143, -185,249,209,132, 55, 94,124,153,233,139, 39, 40,173,209,227, 26, 66, 68, 42,149, 26, 43, 14, 92,227,104,215, 45, 91,235,176, 26, -202, 66, 16, 85, 66,199,111,108,160,169, 10,150, 33,208,136, 72, 20,130, 3,231, 56,247, 18,175, 21,119,170,130,143,199, 83,140, -243,216, 58,141,227,206,163,230, 91, 95, 62,228,171, 95,145,184,109,131,116, 61, 70,194,213,242,146,166,219, 98,131,231,195,135, - 87, 64,199,197,253, 13,162,185,132, 62, 57,183, 69,155, 58,165,241, 58,168,167,196, 39,118,253, 83,193, 60, 15,161,174,191, 62, - 89,185,139,189,200,112, 61,105, 90, 44,184,191, 88, 16,181,230, 74,215, 48,170,146,217, 75, 85, 18,181,162,111, 96, 52, 29,131, - 82,108,130,165, 22, 37, 55,149,228, 75, 70, 50,215, 71,120,181,165, 24, 31,160, 23,103,220,111,129, 81,155, 40, 99,155, 54, 3, - 65,247,248,235,166,128,187, 95,229, 63,253,218,183,153,207,231,244,155, 5,203,205, 61,188, 92,114,149,215,230,214,245, 72,111, - 49, 42,233,183,107, 83,177, 14,150, 27, 66,112,203,119,204,154,128,213,134,211,114, 68, 37, 60, 23, 34,221,243,131,201,140, 98, - 60,162,211, 25,219,241,228,188,250,186,232,251,148, 31,214,237,144,241, 77,147,240, 42,166, 74,103,189, 41,241,139, 13,219, 74, - 49,171,107,154,222,161,180, 98,107, 19, 45,238,182,128,113,140,252, 70, 89,177,142,158,169,208,168,169,225,101, 4,219, 81,207, - 15, 15,231,124,112, 49, 78, 74,114, 15, 30, 36, 87, 78,178,169,206, 16, 83,226, 94,241,179,143,139,122, 6,142, 34,181,223,181, -134,233,113, 82,178,137,234, 90, 78, 83,169, 50, 89,244, 9, 1,109,200, 64, 22,153,103,234, 67,213, 88,164,202,103,208, 7,127, - 94,251,240,206,171,124,251, 43, 95,229,189, 77, 3, 87,151,255,116, 65,125, 64, 85, 15,179,244, 33,184,239, 43,166, 41,185,163, -115, 9,153,130,203,166,229, 29,122, 94,157, 78,136, 81,210,181, 29,111,255,226, 29,126,252,224, 10,187,186,202, 66,254, 10, 31, - 34,227,194, 16,137, 88, 1,190,115,176,202, 38, 23, 93,214, 27,150, 89, 29,107, 82, 66, 57, 74,149, 8,145,233,120,198,124, 50, - 69,106,147,148,196,165,100,217,181, 9, 29,127,181,253,124,238,107,215,109,238, 28,177,245,158, 71,184,207,130, 47, 3, 86, 77, -100, 69,181,125,183,175, 50,189,182, 84,121,229,175,214,165,164, 46,228,170,178, 24, 2,118, 76,156, 80,223,100, 26,154, 76,179, -247,202,236,105, 20,228,150,187, 44, 51, 71, 62,209,213,112, 54,137,233, 12,226, 43, 79,182,139, 6,101,169,129,250, 54,206,244, -150,201,152,121, 85, 34,163,192,135,128, 68, 34,181, 34,134, 64,239, 59,218, 77,139,139,142, 77,179,198,147, 90,218,222, 90, 86, -157, 77,247,216,246,201,221,238, 19, 89, 24, 46, 37, 98,131, 36,164,139,169, 21, 63, 84,237, 66,237, 54,241, 32,149,155, 53, 34, - 14,170, 26, 41, 2, 94, 40,182, 77, 79, 97, 36,133,140, 4, 23, 9, 33, 34,181, 76,222, 53,144, 42,187, 65, 18, 86,134,157,170, -222,160,255,224,247,228, 98,241, 79,211, 14, 63,203,199,193,156,131,201,132,233,225,148, 88, 26,166,166,162, 84, 6, 71,146,190, -221,246, 22,105, 91, 54,219,150,197,249,226,233, 32, 28,158, 16, 74, 24,149,112,122,196, 27, 71, 83,190,121, 56,226, 55,142,198, - 28,141, 21,239, 63, 92,127,242,218,173,138,148, 20, 93, 91, 35,103, 63,133, 81,157,128,141,245,140, 59, 35, 67, 24,149,244,103, -139,204,208,200, 30,240, 54,181,151, 68,200, 95,163, 76,237,120,225, 17, 65, 35,156, 71, 84, 10,164, 65,132,152,184, 9,126,203, -253, 71,107,142,102,154, 89, 57, 71, 8, 77, 23, 97,211, 59, 54,109,207,202, 59,182,214,241,225,114, 69,231, 45, 23,221,134,243, -126,197, 7,221,134,179,229, 57,114,213, 50, 63, 60,130, 16, 80,198, 16, 92, 36,246, 14,187,234,105,206,214,124,116,181,102, 25, - 60,157,136, 56,163,176, 34,242,208, 71,186, 74,211, 6,216, 32,208,133, 65,121,143, 49, 10, 35, 36,174, 44,145,198,160,165, 0, - 99, 88,233,130, 43,235,185, 50, 5, 97, 84, 35,141,161,200, 62,241,149,169, 40,117,193, 68, 26,222, 28,207,248,198,201, 93,190, -124,248, 2,111,222,122,129, 77, 1,237, 38, 98,138,164,136,102, 32,201, 39, 3,134,128,182, 14, 29,194,117,251, 62,181,230,143, -145, 52,215, 36, 24,129,124,110,102, 24,159, 53,207, 13, 1, 92, 79,108,182, 9,255,208,108,210,218,213, 26,155,233,204, 35, 83, - 49, 82,145,215, 71,154, 3, 31, 24,107,133,209,154,166,111, 56,174, 70, 92,132,192, 69, 36,157,139, 85,153,214,131, 23,136, 66, - 38,206,251,248,132, 63,248,189,127,203, 87,191,252, 26,135, 71, 53,101,169,105,214, 45, 62,108, 40,138, 18, 79,214,112,176, 22, -225,114, 97, 28, 4, 50, 68, 42, 97, 57,213,201,120,201,147,204,149,238, 59, 65, 35, 53,171,117,203,249,213,130,127, 60,255,152, -248,224,193,174,120,121,222,200,234,179,152,166,120,159, 37,178, 51, 53,181, 27, 24, 47,137,151,222,117, 22, 39, 36, 86, 12,179, - 56,207, 23, 75,201,151,181,196, 10,193, 76, 40, 90,173, 56,208, 53,125, 81, 82, 85, 99,222, 67, 51,153,207, 88, 72, 9, 71, 7, - 80,141,211, 94,240, 54, 83,222,114,102, 90,100,145,156,103,188, 31,241, 84, 80,175, 10, 56,190,157,104, 62, 38, 75, 21, 6,153, -230, 45, 49, 5,183,228,103, 46, 97,187,200,115, 72,151, 90,243, 93, 6,207, 13, 92,220,231,125, 44, 46,121,239, 71, 63,250,167, - 13,232,195,205,209,250,241,153,250, 48,155,188,238, 61,101, 85, 53,113,141,100,130,206,226, 47, 87,220,211,150,191,254,135, 95, -240,183,127,253, 99,126,254,227,159, 96, 31,158,239,184,244, 64, 49,210, 20, 82, 18,144,200, 8,125,219,167, 42,207,219, 4,136, -155,212, 41,200, 21, 89,216, 63, 59, 30,129,228,100,122, 68, 81, 84, 8, 4,101, 89, 96,116,193,217,253,251,112,177, 72, 1,240, -243, 28,222,194,103,119, 49,177, 83,105, 27, 90,240,106, 79,143,125, 0,194,133,152,240, 15,131,216, 79,200, 82,132,195,124,215, -186,157, 25,129,218, 75, 16,100,166,163,233,220, 46, 14,121,150, 62, 0,232,134, 64,231,243,235, 16, 62,243,230,227, 78, 72,195, -125,194,251,147,185, 26, 22, 25,239,160, 18, 0,209,150,138,227,122,130,136, 26, 79,199,166,109, 82,238, 98, 35, 77,219,178,217, -172,177,193, 33,240, 92,110, 55,188,191, 88,167, 74,176,239, 18, 72, 39,186, 79, 47,134,228,178,125,218, 40,163,197, 69, 62,230, - 6,231,167, 33, 25, 9,225,218,246, 87,213,146, 90,106,154,174, 3,231,115, 87, 57,105,110,143,181,100,166, 4, 90, 70,100, 16, -180,249,255, 99,231,114,245,151,199, 84, 33,215, 80, 42,175, 79,216, 73, 38,127,222,160, 62,158, 96,199, 37, 98, 54,162, 86, 21, - 86, 8,140, 20,120,169,216, 4, 16,209,211,187,192,207,207,182,233, 16,178,185,179, 85,229,222, 94,153,173, 34, 7, 21,201,227, - 99,222, 60, 61,226,219, 55, 78,121,101,126,204,216,148,220,170,107,102, 53,188,251,209,197, 39, 84, 54,164,174,132,202, 35,169, - 40, 83,167,108, 54, 70, 30, 28,240, 95,221, 56,230, 55, 15, 79,248,114,173,248, 94,211, 36, 34,189, 82, 89,193, 81,164, 2, 66, - 6, 68,187, 77, 24, 13,101, 32,170,164,112,150, 41,154, 34, 88,132,243,105, 47,201,154,216, 53,252,227,213,138,218,120, 26, 7, - 54,106, 58, 34,143,250,158,171,174,229,106,211,224, 4, 60, 90, 47, 88,249,158, 38, 10,164,136, 4,169, 57,239,183, 44,206, 23, -212, 86, 34, 99,164,191, 76,250,237,205,217,138,247, 63,126,200, 59,155, 5, 75, 28,189, 49, 44, 66,100, 29, 5,157,128, 94, 9, -162,146,184, 66, 83, 35, 40,181,102,235, 29,141,143,156, 26,205, 66, 42, 52, 80, 43,201,149, 11, 89, 96, 69, 35,141,162, 54,138, -224, 3,227,162, 32, 56,199, 68,192,239, 31,156,242,214,209, 13,222, 60, 58,230,246,244,128,147,209,156, 87, 79, 95,228,214,205, - 35,198, 55, 15,185,156, 76, 49, 40,116, 52,152,222,163, 99, 72,254, 34, 90,161,133, 64, 27,205, 75,191,255, 91,252,214,191,250, - 54,239,255,240,251,123,192,185,180,215,196,175,110,245, 60,255,140,181,110, 39,197,218, 88,124,219,211, 41,193, 68, 41, 14,162, -229, 11,227, 57, 70, 74,182, 93,195, 68,107,214,193,113,223, 59,206,107, 67,172,139,164, 89, 48,159,194,180, 66,212, 19,168,102, -188,245,141,223,226,213,147, 91,220,185,123,152,140,209, 10,205,118,177, 96,219, 45,209,122, 76,101, 42,180, 20,216,222,226,131, -165, 42,167, 84,101,133, 86,130,117,111,185,108, 87, 64,160, 87, 37,231,162,228,222, 38,242,254,217, 5, 15,175, 46, 88,244, 29, - 31,174,175,114,155,198,254,106, 26,230,103,217,110, 58,251, 99, 12,194, 82,248,157,163,102, 22,152, 18, 34,123, 92,100,253,144, -127,165, 34,175,104, 77,140,130, 40, 37, 94,107,130, 50,196,162, 32, 42,131,169,107,110,205, 14,121,235,240,152, 87, 38, 35,190, -122, 56, 69,142, 20,139,160,240,155, 62,117, 60, 7,224,111,255,124,234,201,112,175,119,189,106,153,196,111, 0, 66,103,243, 6, - 79, 98, 13, 97,177,222,189,129, 34,207, 9,201,213,156, 41,118,200,221,255,216, 31,215, 51,245,103,180,224,187,103,252,110, 12, -172,191,255,206,227,200,104,178, 60,108,159, 17,253, 66,210,135,128, 18,146,198,237,169,129, 13,207, 17,114,160, 51, 25,193,108, -179,222,112,173, 88,116, 45,186, 54,140,138, 10, 98,224,193,197, 85,162,189,225, 62, 63,101,201,229, 85, 88,200, 93,111, 45,228, - 27, 24,179,165,223,208,146, 31, 42,244,161,242,206,146,181,248, 61,109,233,125,253,230, 32,119,191, 59, 84,225,158, 29, 94,162, -207,143,207, 48, 47,222,123,158,235, 36, 74, 62,221,106,255, 85,239,229,218,180, 40,166, 4, 98,185,101, 89,151,124,108,206,184, - 53,191, 65,187,134, 66, 43, 30,245, 45,211,106, 66,227,182,172,109, 75,239, 90,206,183,107, 70, 90,103, 11,183,161, 99, 96,159, -125, 94,253,230, 87,249,131, 55,190,194,229,250,146,159,252,217,159,239, 81,169,100,122,238,206, 67,185,135, 11, 40,196,174,163, -240,228,230, 89, 54,220, 15, 29, 69,244,212, 82, 97, 2,212, 49,210, 92,231, 93,158,145, 16,140,138,200,184, 80,124,180,241,232, -218,208, 53, 57,217, 17,185, 67,224,179, 32, 77, 17,118,116, 63,177, 55,139,127,214,136,233, 73, 4,212,254,124, 48, 4, 38, 99, -131, 17,146, 7,222, 18, 28, 76,235,154, 70, 72, 86, 4,106,105, 80,101, 65,121,235,128,110, 93, 37,112,226,102,149,124, 14,164, - 78,235,160,205,143,183,222,130,214,188, 54,159,112, 48,158,227,128,201,104, 12, 69,203,201,244, 34,181,205, 99,183,163, 48,198, -240,196,117,119,160, 38, 9,135, 51,170,210, 11,108,151, 32,111,242, 71,163, 41, 47, 31,222,192, 16, 48,245,152,255,252,141, 13, -255,253,213, 50,177, 71,132, 72,201,114,151,169,137,179, 99,104, 22, 73,153, 76, 8, 98,244,196, 32, 8, 69,133,167, 69,248, 2, -161,122,112, 13, 81, 58,194,106,193,255,248,195, 31,243,199, 95,182,156,110,206, 56, 60,184, 73,208,154, 77,112, 8, 17,136,206, -177,240,142,166,247, 28, 25,195, 88,150,200, 24,233, 8,220,243, 27,126,242,238,247,184,251,209,156,187,245, 1, 49, 4,150, 93, -195,125,215,112,105, 20,177,186, 69, 17, 60, 99, 20, 86, 66, 85, 8,172,139,168,210,224,189, 37,170, 4,232,155,234,130, 96, 91, -238,175,215, 28, 72,201, 74,105, 46,235,146, 19, 33,216,216, 64,239, 60,194, 24, 92,140,152, 16, 57, 40, 12,213,100,196, 29, 51, -231,166,214,148,194, 80, 0,117, 41, 49, 82, 48, 81,130,155,197,203,252, 54,183,249,195, 91, 75,214,205, 10,239, 35,139,230,146, -224,123,218,118,203,119,239,159,241,198,180, 4, 34,127,247,203, 11, 52, 63,161,218, 76,177,199, 22,233, 92,166,188, 61,223,140, - 37, 60,177,172,196, 19, 95,175, 63,182,109,250,220, 20,240,240,130, 7, 55,142,240,243, 17,191,109, 74,108, 76,182,197, 91, 31, -104, 66, 96,163, 5,161, 39, 37,100,163, 2,209,247,144,145,245, 71,102,202,203,167,183,208,133,164,109, 91,148, 80,172, 87,107, - 58,219, 98,132,161,210, 26, 99, 74, 84, 47,217,148, 27,156,243,116,182,167, 46, 43,140, 48, 72, 25,120,180,241,172,195,150, 35, -113,147, 27,167,167,220,169, 74, 46,214, 91,254,254,254, 61,126,182,188, 72,227,227, 27,135,105, 45, 62, 20,136,216, 37,252,192, -147, 45,248,231,181,226,181,126,186,213,237,246,168,220,195, 57,167,117, 2, 76, 11, 11,141,134,106,192, 12,165, 98,238,102, 93, - 80,133, 12,141, 39,209,249,188, 16,148, 66, 33, 67, 90,189, 18, 0, 0, 32, 0, 73, 68, 65, 84, 76,133, 82, 5, 5,146,178,170, - 56, 86, 5, 86,151,252,142, 80,188, 57,170,249, 15,135, 35, 30, 60,218,164, 89,123,187,218,141, 8,247,164,154,227,115,103,234, -151,103,132, 91, 47, 82, 24, 67,143, 73,104, 93, 35, 9,189, 75,122,191,171, 85,170, 78,135, 57,106,116,185,117, 25, 62,191,201, -202, 63, 53, 88,238,211,102,161, 58,255, 78,208, 79,247,158,134,116,103, 82, 82,206, 43, 42, 85, 64,244,196,172, 42,182,123,140, -204,113, 28, 2,251, 32,206, 63,184,132, 69, 88,111,215, 84,198,176,217, 88,148,134, 69,179,205,129,242,215,189, 96, 46, 43,142, - 13, 1, 54, 87, 70,131, 81,192,254,195, 15,115,221, 97, 49, 63,121,173,202, 98, 15, 13, 63,152,222,228,191,177,125, 62,144,217, - 89,177,178,159, 48,236, 61,135,149, 59,128,218, 39, 9,165, 60,121,239, 68,230,148,123,145, 64,128, 77,199,163,237, 22,207,199, - 76,203, 25,203, 54, 80, 21, 53,109,215,115,222,174, 9,177,231,188,217,114,119, 58,231, 39,239,190,151,109, 11,179, 71,184,205, - 9,166,206, 55,122,160,245, 45,155, 20,208,207, 30, 60,254,220,165,220,157,106,206,166,214,112,204,116, 1,235,118,110,106, 82, -160,240,148, 74,227,109,100,162,253,181, 56,247,180,132, 62, 68, 70, 67,135, 72, 64,141,192, 17, 49, 72, 14,203,200, 85,227, 41, - 10, 65,223,199,107,145,149,235,192,222,231, 36,194, 15,236, 4,118,216,137,200,227,192, 69,246,112, 18,143, 25,170,164,100,243, -162,117, 92, 85, 61,166,168,120,179, 26,177,245,129,121,161,184, 93, 22, 80,107,126,122,214,225,166,227, 20, 56,199, 53, 52,147, -212,105, 82,185,251,118,152,125,158,111, 30, 2,240,161, 11,156,122,199,188, 30,177,142, 9, 85,254,115, 49,130,187, 55,179, 64, - 71,158,151,219, 38,113,112,135, 57,189,206, 20,216, 81,150, 9,181, 29,152, 41,244,158, 18, 69,235, 61,186, 44,185,180, 61,247, -228, 56, 29,192,219,188,222,218, 85,214, 84,128,232, 54, 8, 89, 37,198, 9,128,169, 9,177,133,190, 69,148, 18,175, 29,201,203, -203, 19,131, 33, 72,139,235, 44,127,254,131,159, 80, 77,198,124,245,246, 1, 7,163, 41,211,201, 49, 94, 73,180,237,152, 22,134, - 64, 75,140, 21, 94,168,164, 18, 38, 53,141,235, 89,232,130,127,247,241, 47,105,253, 59,220, 85,138,169, 72, 9,238,120, 60, 71, - 53, 51,162,168, 17, 46, 80, 58,207,184, 44,105,125,164, 12,142, 66, 10,164,139,212, 74, 96,163,134,178, 64,245, 13,139,222,114, - 82, 4,218,135, 87, 60, 82, 42,205,134, 77,133,236,122,122,165, 57,174, 12,115,231, 57, 42, 74,102,133,100, 60,170,208, 94, 16, - 60,232, 40, 24,213, 6, 23, 3, 39, 58,210,183,150, 23,102, 71,248,241,148,109,223,162, 14,142,216,174, 86,152, 99,205,159,190, - 96, 9,182,131, 16,249,227,155, 11,198,122,204, 95,254, 73,228, 7,139, 43,238,125,188, 66,108,214,233,108,216,174,247,230,241, - 79,207,101, 3,207,159,213, 62,133,239,161,135, 51,203,217,162,228, 63,224,120,125, 62,101, 90, 86, 52, 4, 62, 34,226,115,130, - 47,149, 36, 56,203,100, 50, 99,235, 35, 7,186,228,141,201, 41,135, 71,167,104, 96,185,106,104,150,139,196, 32,235,122, 92,238, -222,105, 81, 32, 10,197,184,168,177, 46,205,227, 93, 8, 24, 85, 50, 42, 39,156,140,239, 48, 26,157, 82,141,231, 28,206, 11,188, -240, 28, 90, 5,116,185,109, 77,106,251, 31, 29,164,222,253,213, 26,161,214,169, 3,173,158, 0,166,150, 69, 6,196, 13, 2, 90, -123, 1,127,112, 68, 30, 18,237, 46, 51,120,186, 39,227, 79, 46,150,108,159,215,114, 65,215, 58,238,107, 79, 21,224, 5, 41,177, - 58,160,133,196, 75,197, 10, 65, 39, 13,133, 41,241, 66, 82, 32, 40, 39, 19,188,210,160, 75,250,224,185,121,224,121, 16, 11, 68, -223,130, 60, 76,230, 98, 0, 23, 23,169, 8,242, 22, 97,219,103,204,212,173,131,209, 4, 68,106,213, 17, 21,170, 40, 18,191,174, -207,173,151,245, 58,101,245, 42, 62,157,195,133,248,207, 75, 99,251,181,231,240,123,222,225,215, 1, 43,238, 60,164,111, 30,242, -214,171, 55,185,115,112,192, 23, 79, 79, 56, 28,141,185,236, 27,182,157, 77,128,143,109,159, 5, 11,212,227, 8, 20,124,214, 36, -214,215,109,254,109,116,108, 93,199,102,211, 18,109, 6,140,100, 32,196,231, 31, 57,228, 3,221,100,196,110,200, 96,110, 53,112, - 30,213,238,103, 3, 53,237,121, 20, 8,145,233,105,206, 63,238,154,229,195, 78,100,199,231,121,167,217,227, 92,135, 12,126,203, -163,154,235,118,250, 32,123,250,228,122, 24,168,135,207, 90, 39, 3, 22,194,199, 68,225,216,108,177,214,177,180,158,179,237,150, -243,109,195,131,245,146,181,107,121,240,209, 25,139,179, 75,250,224, 57,251,229,199,169, 37,232, 92,162,202,181,155,235, 0,124, -109,247, 58, 0,250,154, 13,103,103,107,184,119,111,119, 45,116, 86,212, 27,212,239,204, 96,137, 40, 82,203, 46, 88, 16,146,209, - 48,197,136, 73, 30, 82, 33,169,164, 36, 34,152, 86,130,109,155, 80,240,133, 16, 76,132,160, 18,146, 82, 72, 60,176, 33, 85, 99, - 83, 69,146,161, 53,130,198,250, 93, 22, 25,124,222, 83,236, 84,255,180,120,220,229,110, 96, 16, 12,159, 3,102,226, 73,183, 52, - 37,161,168,137,227, 26,111, 12, 95, 51,154,219,147,146, 73, 97,152, 20, 37,117,140, 92,161, 40,203,154,149, 22, 68,163, 96, 92, -241,173,249,156,201,168,230,168,212, 76,235,154,182, 52,248, 34,105,183, 63, 16, 2,107,198,212,178,100,105, 3, 15,125,228, 47, -122,155, 70, 21,211, 58,181, 84,235, 42, 29,158, 78, 36, 60,133,218, 51,126, 10, 38,143, 97,178,147, 95,173,249,176,174, 56, 84, - 21,107,161,121,216, 88,254,175,197, 34, 21, 13,171, 77,154, 25,146, 57,189, 33, 37,146, 66,237,113,136, 67, 50,129, 17, 82,165, -100, 80,120,162,211,217,249, 44, 16,188, 38,120,135, 15, 2,219,247,124,240,104,193, 47, 30, 46,248,201,251, 31,227,101,203,173, -170, 96,109, 91, 42, 1, 54,122,148, 84, 68, 4, 93,102,106, 60,180, 45, 63,109, 59,250, 40,121, 20, 5, 11, 41,240, 81, 34, 70, - 35,182, 14, 54, 50, 73, 63,203, 82,179,234,193,107, 65,139,196,118, 62, 77, 25,250,192,185, 75,244,182, 90,105,214,174,165,107, - 90,138,174,165,245,142,105,215, 34,156,101, 29, 60, 68,207, 77, 34, 50, 6, 70,193,115,208, 5,198,198, 96,140, 65, 8,137, 48, -201, 22,212, 55, 29,218, 5, 74,173, 40,163,199, 40,201, 44, 66,129,224, 96, 52,166,234,123,102, 74,115,247,228, 46,135,229,132, -187, 7, 55,153,160,121,101, 60, 99, 90, 21,220, 60, 40, 57, 62,158,115,223,133,228,103, 97,178,194,227, 51,206,132,103,241,220, -159,213, 36, 18,251, 0,178,174,227,131,203, 53, 75, 21,249,229,178,225,103,109,203,125,235,120,100, 61,181, 73,254,244, 65, 42, - 74, 97,232,189,163, 42, 10, 14,202,212, 1,170,234,130,224, 60,190,183, 28, 11,149,196,124,164, 78,115,242,124, 22,117,237,150, -214,181, 52, 93,139,144,129, 82, 75,148,212,124,233,139, 95,225,173, 47,222,226,133, 91, 83,156, 11,184,182,101,187, 89,241,211, -243,143, 88,186,212,114, 23,190,231, 15,142,143,249,234,201,156,175,221, 60,226,167, 93,158,135,111, 87,215,227,190, 84, 88,100, -155,102, 23,174, 19,202,199,180, 33,158, 44,134,194,243,207,102, 49,140,214,250,164, 40,121,207, 59, 94, 19,138,211, 66, 97,133, -162,146,145,165, 52,108, 77,197,123,202, 96,131,167, 82, 5,163,202,224,156, 69, 41,201,170,107,153,148,117, 82,254, 35,208, 76, -103, 80, 23,188,122,122,147,171, 73,205, 23,111,223, 69, 31,205,217, 72, 13,162, 64, 68,123,125, 63, 51, 79, 93, 39,222,172, 46, -144,179, 41,135,147,138,173,239, 40,141,225,133,195, 9,203, 77,147, 14, 79,223,165,202, 98, 0, 81,197, 12, 78,250,255, 67,235, -253,179,130,235, 30, 75, 71,247,200, 33, 90,162,110, 28,242,133,211, 27, 28,141,166, 8,169, 41,141,161,150,134,251,143, 22,176, -220, 38, 47, 95,155, 91,167, 3, 69,141, 62, 27,151,144,218,153,209,239,108, 77, 93, 6,165, 53,109,250,217, 16,124,126,237,113, -131,218,155,205,202,157,189,168, 12,187,121, 59,159,208, 10, 31,244,248,133,222, 33, 83, 7,217,215,161,125,175,242,123,244, 46, - 3,231,220,238, 58, 10,118, 62,196, 3, 40,234, 73,127,119,153,219,250,195,235, 24,126,102,178,203, 92,161,211, 92, 74, 85,153, - 62, 37, 19, 86,227, 60, 39,145, 23, 87,208,116,116, 31,159,165, 86,236,106, 3,171,203,140,109,112, 41, 0,119, 93, 58,244,227, - 32,115,251, 68,192,235,250,116,223,246,175,133, 12, 9, 23, 50,188, 23,155,109, 78,251, 28, 60,124,234, 66, 89, 37,137, 54, 50, - 83, 17,163, 12, 70,169,132,237, 83,201, 9,111,170, 19, 8,178,212, 18,239, 2, 90, 68,180, 80,196,224, 57, 18,130, 86, 66, 25, - 21,133,132, 71,157,163,148, 18, 59,236, 33,177,135,141,136, 89,194,214,103, 45,247,225, 62, 12,238,130, 33,238, 2,250,112,178, - 74,145,240, 12,195,232, 99, 50,130,113,205,183,234,146,131,210, 80,233, 34,255,151, 32, 10,201,105, 85,112, 97, 3,189,209, 40, - 93,242, 95,158, 28,163, 11,195, 87,167, 51, 94,153,159,242,226,168,230,214,104,204, 5,130, 38,235,226,159,201,146,159, 8, 73, -135,226,163, 24,248,102,125,192,116, 52,162, 46,167, 44, 76,153, 42,241,186, 78, 96,199,241, 8, 14,143,146, 2,227,124, 14, 47, -156,192,205, 99, 56,152,229, 89,125, 2, 12,189,173, 75,254,161,115,188, 61,236,163,205, 50,119, 70,178,102,252,208,114, 50, 69, -178,162,214, 10, 38, 19, 68,111,179, 70, 70,204, 1, 29,136,150,232, 83,130, 27,133, 32, 72, 75,240, 17, 79,139,119, 61,190, 89, -225, 55, 13,143,174,122,230, 99,141, 11,142,149,247,105,164, 80,214,184, 24,233, 99,196, 70,199,207,187, 45,247,109,196,134, 72, - 48,154, 82, 87, 84, 85,137,143, 10, 39,116,214,132,143,108,162, 72,213,121,161,105,123,143,147, 2,219, 71, 2, 30, 25, 2, 50, - 6,150,192, 44, 8,108,179, 37, 10,137,246, 29,173,237,120,232,122,198,170,224,170,107,208, 8, 78,138,146,109,211,112, 56, 30, - 99,172,199,117,150,222,246,108,150, 13,205,106,139, 80, 18, 25, 60, 90,165,253,166,173, 69, 70, 40,164, 64,216,158,170, 44,153, -140, 38,200, 16, 41,116,137, 86, 9, 7, 84, 10,197,152,200,188,168,168, 75,195,237,113,197,237,155, 71,232,131, 25,231, 49,161, -182, 99, 84,136, 66, 94, 87,161,226, 57, 85,186,248,196, 66,195,179,184, 92,113,177,217,178,186,108,217,110,123,204,124, 76,107, -251,196,185, 23,176,117,142, 73, 61, 38,184, 4,110,156,152, 9,133,146,188, 60, 46,184, 83, 24,122, 23,121,233,240,128,224, 60, - 23,222, 99,148,192,123,143, 11, 61,235,229, 58,123, 68, 8,170,170,100, 92, 76,185,123,247, 5, 78,143,198,180,157,231,195, 15, - 47,120,255,253,123,188,255,224, 30,255,112,249,113, 94, 75,129,175,207, 15,249,198,108,202,171,227, 99, 94,153,158,240,218,164, -230,123,203, 62,117,142,252, 54,123, 64, 20, 41,150,177,199,126, 25,198,146,195,121,166, 63,155,197,184, 8, 33,159, 71, 1,235, - 3, 45, 34, 41,123, 35,248, 32, 70, 26,163, 88,203,130, 51, 93, 49, 47,106, 74, 4,194, 7,148,210,120, 31,168,180, 97,217,183, - 32,193, 41,205,157,162,224,119,142,143, 57,156,204,249, 55, 71, 55,184,115,114,131,215,166, 51, 78,111,221,228,157,135, 15, 96, - 60, 69,116,201, 5, 81,113,252,133,239, 48,174,160, 24,163,238,220,224,180,154,242,141,187, 47,115, 88, 87,220, 28,143, 9, 34, -208,201, 64, 95, 23, 41,131,185, 56,223,129,121, 2,255,178, 42,244,231, 5,245,129,214,165, 36, 20,134,151, 94,187,197, 23, 78, - 94, 68,171,132,188,157,212, 83,100,132, 43,183,101,251,224, 44,169,198, 57,118,252,112, 57,248,118,103,145, 27,225,179,169, 73, - 22,218,240, 54, 85,146, 49,236,132,250,127,173, 96,206, 14,196, 37,247, 42,235,152, 27,104, 49,235, 22,199,248,233, 28,240,100, -142, 20,131, 82, 30,113,231,164, 55, 84,249,170, 72,149,186,235, 51, 80,196,239,124,210, 7,245,180,103,129,188,134,128,222,239, -129,215,170, 34,211,229,246, 90, 96,186,206, 45,248,172,143, 44,115, 23,164,219,164,107,230,187, 4,136,178,118, 7, 26,177,109, - 6,251,181,105, 3, 41,185, 75, 52,158,236, 68, 8,241,244,181, 24, 50,114,138,236,247,154, 77,138, 6,160, 92,182,127, 36, 68, - 70, 70,210, 91,152,142, 36,129,192,204, 72,148, 74,192,163, 40, 4, 42, 70,148,143,140,149,202,183, 39, 82, 74,201, 50, 4, 70, - 8,150,206,225,124,224,164,212, 44, 93,192,134, 44, 19,123, 45,216,148, 49, 28,110, 24,223,200,148,104,239, 3,207, 76,110,209, -203,189,170,125,160,222,201,108,170,164, 10, 78,166, 5,191, 49, 29, 37,203, 16, 9, 82,168, 36,217, 47, 53, 49, 70,206,163,228, -202, 59,254, 85, 61, 97, 90,143, 57, 40, 19, 40, 73,232,164,175,239,164,100, 29, 4,107, 83,226,101,210,208,126,179, 26,241, 82, - 89,243, 70, 57,226,112, 82,112,219, 24,238, 78,102,220,119,158, 70,155, 20,124, 77,145,130,187, 34, 7,246, 57,212,211,164,164, - 86,142, 18,168,180, 30, 37, 64, 92, 81,165,170,222,231, 49,134,206,236,131,211, 35, 56,152,195,237, 91,240,210,203, 48, 31, 39, - 5,179, 81,137, 32,173, 53,209,219,244,183,109,159,174, 65, 93, 19,157, 79,183, 74, 65, 36, 16,100, 32,108,219,107, 58,151, 15, - 61,206, 74,222,221, 56,222,238, 44, 63, 95,116,160, 60,115, 9, 94, 68,214,221,134, 95,118, 45,127,189,233,112, 62,226,180,162, - 48, 5, 85,161, 83, 34,107, 84,178,142,168, 52,222, 90,130, 8, 20,186, 96,221,121,138, 66,225,251, 64,235, 2,227, 90, 33, 67, -228,188,235, 41,219, 22,215,111, 89,119, 29,135, 66, 18,251, 13,155,108,151,252,151,151, 11,180, 52, 88,223,177,218,180,148,165, -161, 82,154,198, 59,206,182, 91,214,235, 37,163,224, 88, 54, 43, 46, 23, 75,198, 69, 1,206, 82, 6,144, 74,161, 70,163,100, 56, - 37, 64, 27,131, 12, 1, 51, 30, 35, 11, 67,236, 44, 82, 72,124,215, 19,162, 67, 16,168, 99,228, 70, 85, 51,175, 43,230, 82,242, -165, 27,135,204, 71, 37,167, 39, 51, 62,242, 50,221, 39, 15, 20, 50, 25,233,236, 7,114, 83, 93, 43,159,137, 33, 41, 55, 89, 46, -251, 73,108,144,207, 50,196,182,199,159,111, 32,251, 35, 56, 27,136, 82, 19,157, 99,166, 21,117, 81, 35,108,195,235,199, 7,220, -172, 13,194,104,238,206, 70, 68, 41, 16,163, 49, 87,162,166, 52, 83, 80,138,182,185,226,170, 89,114,177,217, 18,133,199,132,228, -150,119,114,227,132,211,195,154, 66, 71,222,189,247, 49,255,221,223,253, 61,247,126,244, 54, 60,122,148,206,177,202,240,159,221, -188,201,216,140, 57, 24, 79,169, 71,147,164,237, 63, 86,188,127,209,164,115,121, 48,123, 26, 58,183, 66,166, 49,156,214,187,121, -249,224,255,190,223,225,251, 85,182,199, 60, 97,174, 19,225,172,135,191,223,182,172,140,230,255,232, 61, 27, 17,248,113,151,220, -222, 14,138, 2, 45, 37,198, 40, 20,146,222,247, 52,206, 18,131,165, 17,145, 62,104,222, 56, 56,228,203, 7, 71,188, 57, 59,225, -100, 50,225, 11,211, 25,186,158,224,123,199,139,119, 95,194, 23,176,157,207,241,219, 30,197,173,175,127,167,120,253, 53,126,251, -173,183,184,125,116,135, 47,156,188, 64,223, 59, 94, 56,189, 65, 64, 81, 98,120,245,228,148,113,169,120, 24,186, 68, 73,217, 54, -255,241,228, 96,127, 29, 16,221,116,156, 14,154,224, 30,159,167, 40, 9,163, 89, 82,207, 67,177, 80,130,163, 81,205,141,195, 91, - 40,101,232,251,150, 85,211,176,108, 59,150, 87,219,212,150, 85, 50, 85,121, 74,102, 26,160, 73, 65,170,168,118,104, 93,153,179, -187,144,171, 48,235, 19, 55, 58,248,207,247,250,149,206, 7,162,201,128, 46,191, 11,164, 82,114,109, 24, 48,160, 56, 62,109, 7, -101, 8,132,215, 78, 65, 50, 7, 16,151,186, 1, 34, 39, 38, 67, 75, 91,102,231, 62, 33,115, 64,205, 63,123, 86, 2,161,116,174, -162,195,238,112, 24,218,243, 67,139,182,172, 82, 21,237, 99,146, 53,141, 3,207,222,237, 56,243, 3, 72,103,176,253, 29,222,219, -190,225,201,190,205,235,245, 33, 19,158, 47, 97, 44,179,175,177,200,221,148,114,143, 22, 41,228,206,233, 45, 66,105, 20, 69, 5, - 93, 23, 81, 82, 33,133,160,146,208, 33,216,246, 9,253,174, 68,162, 25, 85, 34,153,236,180, 49, 80, 10,201,202, 5,106,145,230, -139, 23,214, 17,163,160,243,123,140,132,152,105,145,131, 85,163,202, 38, 61, 46,236,128,144,131,221,192,181,244,236, 94,151,201, -101, 33,160,152, 16,231, 91, 83,241,133, 81, 65, 97, 12, 18,129, 86, 26, 45, 21, 13,129, 82,105, 30,118, 29, 7, 90,243,202,100, -130, 64, 49, 46, 42,150, 33, 82, 86, 37,202, 20, 56,153,146,138,119, 35, 68, 93, 66, 89,242,133,162,226,165, 81,197,100, 50, 98, -102, 10,122, 37, 17, 40, 42, 93,242,158,203,199,152, 41,178,225,209, 24, 85, 77, 41,170, 9,245,193, 45, 94, 46,199, 92, 84, 99, - 40,199, 9, 40, 37,242,186, 48,227, 36,105,171, 10,168,102,233,251,131, 23,224,240, 5, 24, 31, 65, 49,129,249,141, 68,241, 57, -190, 1,163, 26, 49,171,225,248, 48, 89,179,222, 60,129,131, 3,152, 77, 18,204,231,197, 91,137, 20,114,122, 66,220,110,137,243, - 83,130, 13,196, 62, 5,247,224, 37, 65,234,252,189,103,217, 71,182,177,195,227,104,125,224,123,203,134,181,237,241, 2,188, 20, - 72,105, 48, 90, 51, 46, 74,180,144,140, 43,133, 8,129,210,104,202, 66,177,218,108, 40,100, 74,152,124, 38,216, 92,173, 59, 2, -142,166,105,241, 93,195, 68, 8,164,181,172,187, 13, 74,105,238, 89,203,125,107,217, 70,197,205,131,116, 48,247,117,205,187,235, -158, 63, 59, 95,208, 24,193,195,102,203,155,243, 49, 87,237, 6,169, 37, 63, 95,109,184, 88, 47,144,222,163,187, 6, 89, 24,108, -187, 69, 42,133, 44, 74,162,115,148,213, 24,161, 13,161,233,145, 38, 17,219,250,174,161,247, 61, 93,223, 80, 41,131, 65, 50,142, -130,163,106, 68, 41, 37,243,170,102,164, 21,175, 31, 79,169,199, 5,151, 85,141,215, 21,200, 42, 85,239, 93,198, 56,248, 44,165, -170,117,186, 71, 36,208,173,144,123,238,156, 3,216,246, 9, 74, 28,219, 22,150, 75,196,163, 21, 8,193,111,191,242, 26,175, 31, -159, 82, 11,152,106,193,173,217,140,211, 73,205,205,233,136, 94, 73, 84,169,233,181, 66,141,107, 86, 62,237,233,174,239, 88, 55, -107, 54,109, 75,244,158,217,104,194,168, 26,113,124,116,202,104,100,184, 92, 55,108, 87, 27,254,230, 7, 63, 66, 60,120, 23, 54, -107, 68,212,112, 60,231, 95, 31,157,114,115, 58,197, 34,105, 16, 84,245,136,251,206,243,174,137, 9,201,239,251,199, 99,129,179, - 59,134,207,126,251,125,120,255, 70,239, 24, 71,159, 96, 57, 46,246,207, 64,161,192, 40, 30,181, 14,154,158, 51, 7, 75, 23,104, -117, 96,170, 75,166, 82, 98,144,201,249, 45,128,247, 73, 74,183, 21,130,186, 48,188, 94, 79,208, 74, 81,141,199, 76,234,138,178, - 48, 76,198, 21, 91, 97,240,245, 4,239, 37,119,230, 7,232, 89,141,226,139,255,250, 59, 95,188,251, 34, 47, 31,189,128, 41,106, -166,147,138,211, 27,183,210, 65,160, 74, 78,143,143, 9,189,101, 82, 22,188,113,114, 19, 89, 22,156, 15, 85, 89,215,253,203, 9, -234,197, 46,227, 39,232,164, 99, 61,124,212, 73,171, 29,163,210,108,112,219, 80, 77, 43,110, 31,223, 68, 75,205,178,109, 88,181, - 45, 23,155, 13, 27, 23, 19, 79, 93,202,116,240, 22,249, 48,214, 58, 37, 5,131, 83, 79,204,183,212,250,236,207,219,165, 25, 75, -223,124,190,215,111,116, 10,118,131,115,208,224,165,190,111,217, 39, 7,112, 88,120,218,138,243,147, 40, 43, 3,189, 75,136,132, -172, 31,146, 29,231,118,146,167,125,150,160, 29,156,246,244, 30,207,251, 89, 45,254, 65,138,118,160, 77,117,109,202,238, 7,219, - 94,159,223,147,235, 82,181,172,179,231, 59, 89, 31, 89,100,209,155,144,129,153, 90,237,172,128,159, 21,160,165,120, 60,160, 15, -137,195, 53, 46, 32, 60,141, 40, 31,232,127,168, 52,203,142,153,194, 55,140,100, 50,136, 74,201,200,177, 74,122,219,189, 23,140, -181,196, 75,208, 8,188,134, 34, 36, 97,156, 81,136,108, 0, 35, 69, 22, 49, 12,212, 82,112,238, 28,189,143, 40, 37, 65, 4,156, -144,248,193,181,238,122,110,158,120,173, 41,232,229,228, 74,239,129, 31, 7,223,250,161, 13, 47,242, 97, 51,140, 49, 68,154,168, - 81, 26,142,198,134,137, 22, 4,161, 81, 49,160,149,160,140,146, 69,240,124, 28, 34,183,116, 65,109, 20,149, 80, 56,146,252,104, -140, 73,116,197,122,152,143, 70,108,187,158, 11, 83,242, 39,245,136, 27, 85,193,164,210,172,123,201,214, 58,166,245,152,117,231, -169, 10,205, 54,194, 66,170,228,163,173, 52,255,230,224,152,215,170,146,111, 30, 28,240,166, 81,188, 80, 87,124,105, 52,199,171, -130,243, 8, 20, 35, 48,163, 68,133, 53, 89,196, 67,104,168,231,188,121,122,147,163,106,204,241,244,152,249,193, 49,186,154,178, -173,166, 41,176, 76, 15,161, 62, 64, 40, 5, 55,110,165, 81,195,104, 12,167,119,136,211, 10, 78,239,192,241, 65, 18,105,185,243, - 42,193, 89,226,184, 78,129, 60, 42, 66,232,137, 69, 73,208,154, 16, 36,182,119, 60, 90,116,188,211, 90,126,126,177, 98, 11, 4, -231, 9, 74, 16,140, 33,104,195, 72, 43, 42,169, 56, 25,149, 28, 9,137, 38, 48, 17, 18,235, 60,181, 86,184,222,179, 70,208, 90, -203,213,118,131, 13,145,179,117,131,116, 45,139,190,229,253,205, 21,219,118,205,165, 11, 60,176,150,183,215, 27,154,168,249,210, -141, 99,238, 93,109,153,215, 21,203, 69,139,168, 38,220,170, 43, 30,246, 17, 99,106,230, 37, 28, 77, 39, 60,104,123,126,210, 57, - 54,120, 86,214,178, 45, 12, 86, 21, 68,173, 89,109, 27,150, 2, 58,103,209, 74, 35, 59,143,154,142, 8,157,163,109, 55, 4, 17, - 89,119, 43,130, 76,107, 78,132,128, 82,138,224, 29,138, 72,161, 12, 81, 73, 70, 82,115, 50, 26,241, 27,243, 9,119,199, 21,191, -125, 50,230, 7, 61, 41,217,234, 35, 4, 71,172, 70,185,179,146, 71, 88,213, 52, 37,250,133,222, 25, 67, 61,167, 45,143, 77,221, - 2,198, 51,254,248,183,190, 65, 93, 40,230,227, 17,139,245,150, 55,142,142, 41,140,102,153, 3,171, 55,154, 86, 10, 30, 88,205, - 58, 10, 54,125,160,117, 93,202,113,125,143, 23,142,113, 89,115, 58,191,193,203,175,190,200,201, 97, 77, 45, 37,239,190,251, 1, -223,255,127,255, 38, 89, 94, 15, 32, 95, 23, 24, 29,140,121,161, 24, 19,202, 17, 93,132,183,155, 13, 63,107, 60,231,146,164,175, -210,248,199, 99,129,220, 59,251,134,226, 97,168,202, 93, 62,131,162,218,157, 97,241, 87,119,171,133, 78,166, 66,148,114,135,153, - 81, 58,119,153, 34, 91, 45, 57,235,183, 28,102, 7, 58, 31, 44,141,107,233,189,103, 19,123, 30,181,158,111, 30, 30,225,163,224, -104, 50,167, 11, 1, 93, 26, 58,161, 18,188,100, 92,211,134,136, 42, 39, 24, 89,114, 88, 77, 81,188,249,251,223,249,189,215,191, -204,209,209, 9,179,217,132,233,108, 66,111, 29,227,113,205,100, 58,162,107,122, 14,142,142, 24, 79, 38,152, 40,185, 49,157, 50, - 25, 21,124,100, 52,209,171,164,237,203,191,128, 22,124, 33, 19, 66, 93, 10,184, 90, 39,137,215,161,202,157,206,211,194,204, 51, - 63,124,228,226,189,251, 92,200,200,197,122,137, 66,114,182, 89,208, 57,199,230,193,249,206,241,202,103, 91,197, 34, 43,110, 21, -106, 39,116, 51,208,192, 66, 62,120, 67,191, 19, 98,249, 92, 84,189, 12,112, 25, 68, 13,134, 92,112,255,241,100,230,134,235, 79, - 65, 67,213,185,253, 60,120,113, 15, 45, 92, 37,211,124, 91,102, 14,186,205, 74,103,215,214,187,195, 28, 93,236,253, 94,120, 54, - 48,110, 8,172,131,150,252, 16,144, 7,249, 88,149,147, 15,153, 65, 42,195, 11, 27,213,233,223,213, 36,139,227,100, 85, 55,181, -247,250,158,156,113, 13,216,128,253,160, 62, 84,218, 62,211,173, 76,158,227, 15,191, 51,184,221,105,177,167, 83,111,216,167, 68, -140, 84, 74,114, 52,130, 88,106, 54,109,224,184, 20,180, 34, 82, 72,197,170,207,147, 22, 37, 48, 49, 82, 75,133,138,176,138,201, - 86, 17, 34,193,129, 22, 73,203,122, 25, 61, 5,130,101,235,119,246,198, 98,111,138, 41,213, 94, 96, 79, 38, 51,215, 72,222,107, -250, 98,254,155,225,186,135,176,115, 99,243, 30,164,230, 3, 47,249,210,216, 48, 50, 5,165, 84,120, 17, 81, 18,190,223, 88,254, -177,177,212, 33,112,168, 53, 70, 21, 8, 20, 74, 9, 36, 18,165, 20,198,104,222, 89,182,220, 11,112, 74,224,229,170,224,120, 92, -225, 81, 20,218,112,102, 29, 42, 66, 85, 22,172, 28,104, 93,242,190, 77, 35,159, 47,215, 99, 94, 80,154, 23,103, 51,164,210, 24, - 35,153,214, 53, 72,197,121,103,121, 80,142,211,107, 53, 38, 85,226,101, 1, 66,113, 52,155,242, 71,163,154,175, 29,141,249,210, -141, 41,119, 70, 37, 47, 21, 48, 42, 43,222, 9,192,120,150, 70, 46,186,128,178, 66, 84, 19,168,103, 48, 57, 1, 41,121,235,198, - 75,172, 17,152,241, 33, 95,120,225, 37, 30, 58, 7, 71, 71,196, 66, 18, 15,230, 68,165,136, 62, 18, 75,157,116,185,133, 36, 10, - 79,104, 91,226,122, 73,116,145, 96,123, 66,136, 4,109, 8, 74,224, 68,100,164, 53,115, 41,185,173, 21, 19, 83,114,144,249,241, - 83,169, 8,222,226,130, 37, 90, 79,211,247, 68, 68,234,230,245, 45, 15, 58,199,229,118,197, 89,211,208, 70,193,134,142,191,189, - 90, 98,189,167, 87,146,208, 91, 94,158, 79, 88, 49,101,227, 29, 71,117, 65,148,138,141,247, 84,101,193,119,207, 22,252,163,215, -188,189, 13,244, 40,222,241,130, 86,106,182,227,130,179,224,184, 52, 5,110, 90,113,229, 97, 89, 22,116, 93, 11,227,146,208,246, -116,161,167,151,146, 15, 86,231,132,232,104,162,163, 68, 16,242,248, 69,106,131, 15, 1, 23, 61, 49, 4, 70,198,240,178, 54,188, - 88,140,120,101, 58, 99, 41, 5,183,106,195,219, 54,173,179,104,202,108,190,228,136, 62, 32,234, 41,136, 36, 45,139,172,242, 30, -206, 22,198,207,233,224,138, 32,249,218,183,191,206,235,183, 95, 65, 2,117, 53,226,195,135,247, 64,150, 72, 33, 57, 29,215, 44, -156, 99,237, 60, 31,108, 61,223,181,145,247,122,203, 86, 68,150,214,129, 48,232,140,111,154,234,146, 27,199,167,220,120,225,152, -182,179,172,215, 29,255,203, 95,253,123, 46,222,126,251,241,100,194,247,188, 43, 12, 7, 19, 69, 39, 74, 46,189,231,111, 87, 29, -255, 24,243,121, 98,178, 80,215,229,122,167,136, 58, 36,243,214,238,102,233,195,207,135,194, 33, 10, 30, 67,174,126,146, 95, 67, - 85,236,180, 2,148, 74, 8,118,145, 71,136,203, 53,157,150,172,156,165, 16,150,232, 45, 11,219,240,209,182,101,105, 29, 47,141, - 12,135,101, 69, 89,142,152,215, 37,173, 20, 68,161,233, 99,224, 96, 84, 16, 98,164,151,130,135,157, 35, 20, 53, 50, 42,212, 27, -191,251,167,223,121,237,133, 23,185, 88, 52,156, 28, 30, 98,125, 96, 54,175, 48,133, 70,169,196,179, 11, 62, 50,158, 84, 24, 85, - 18,188,160,144,134,155,227,154,135,210,167,142,107,111, 63,149, 58,218,103,245, 6,254, 92,195,102,253,156, 57, 71,204, 60,242, -190,217,153,207,107,157,170,161,186, 78,224, 54,193,206,255,122,189,102,117,209,210,207, 71, 60, 88, 44,176,209,243,232,193,121, -146,118,149, 49, 29,178, 82,236,132, 96,194,192, 63,222, 67,147,135,144,126, 63,180, 73, 3,217,121,144,159, 19, 3,144, 91,186, -215,126,221,136, 12,198, 11, 79, 35, 50, 63, 77,142, 37,247,105,103,123,224, 16,173,210,130,179, 62,221,211,129,234, 49, 8,149, - 96, 51,152, 45,111,224,231, 25,167, 12,254,229, 58,207,220,219, 46,253,219,229,205, 20,179,233,204, 53,154, 95,239,161,231, 67, - 58,188,135, 77, 51, 24, 7,145,239,161, 28,228,136,229,227,111,118,216,116, 79,221,251,184,179, 18,134,116,191, 10,181, 11,252, - 65,103, 25, 46,177, 19,229,201,215,199, 86,134, 50, 70, 28,130, 82, 70, 14, 20,120,165,153, 32,121,100, 5, 66, 36,211, 23, 31, - 4,165, 2, 31, 99,202, 93,128, 62, 70, 52,130,101, 72, 45,114,161, 5,155, 16, 88,109,193, 23,114,135, 91, 24,238,229,254,235, -189,238, 20, 12, 82,192,236, 76, 39,246,157,157,134,185,158,247, 57,137,137,169,163, 82,149, 8, 19,121, 96,123,124,176,124,216, - 58,174,154,134,239,247, 14,108, 71, 47, 52, 47, 21, 10,225, 61, 83, 93, 82, 41, 5, 8, 98, 8,116,206,241,160,143,252,204, 89, - 94, 50,134, 49, 18, 29,160, 67, 98, 16, 28,205, 42,130, 23,233,182, 73,193,251,155, 45,103, 25, 7,240, 71,243, 49,163,178, 98, - 99, 29,133,210, 20, 85, 69,219, 71,124,244,152,122,132,136,145,139,152,109,144, 99,128,170, 6,173,248,173, 73,197, 43,227,130, -162, 50, 92, 89,201,172,214,180, 81, 48, 53,146,195,162,224,189, 62,166,185,188,150, 96,234, 44, 89, 91,242,237,201,132, 63,190, -117,130,139,146,111, 30, 30,112,211, 20, 40,109,184,115,112,202, 47,157, 39,206, 78,211, 65, 90,150,112, 56,205, 9, 88,145, 80, -224, 85, 10,114,209, 67,108,151,217, 57, 14,226,166, 35, 78,107,208, 26,129,224,229, 82,112, 36, 36,135, 33, 82,196,192, 17,130, -121,132,146,136,244,150, 14,203,184,144,244, 77, 79,239, 59,162,132,202,109,209, 74,225,109,199, 13,233, 41,188,199,246,150,211, - 74, 80,198,142,159,246,146,219, 35,205,182,179,140,234, 57,103,125, 79,223,119,188, 48,159,243,209,118,203,172, 26,113,217,181, -204,171,138,217,116, 78, 81, 22, 56, 96, 77,193,249,232, 0,135,228, 92, 22, 52,101,201,251, 27, 75, 51,169,185,208,138,243,174, -229, 35,165,248,165,119,124, 40, 2, 15,164, 38,120, 79,167, 52,147,232,177, 82,208, 59,135, 21,130,222, 59,130, 86,156, 72,131, -145,134, 90,105,130,212,156,154,130, 94,107, 46, 10,195,133, 0,186, 44, 79, 43, 69,234,156,217,237, 53, 13, 86,168,228,194,118, -141,173,121, 18, 85,175,117,114,166, 83,240,240,157,247,121,237,141, 87, 9, 4, 54,171, 75,254,183, 31,255,128,159, 63, 58,231, -141,249, 33,247, 55, 91,108,148,252, 98,225,248, 65,227,248, 97,103, 89, 72,201,153,179,156, 11, 40,202,146,136, 66, 72, 73,173, - 75,142,166, 7, 28, 29, 79,136, 17,238,191,255,136, 63,255,179,127,151,198,194,123,144, 26, 97, 29,244, 29, 63,235, 28,127,223, -181,252, 48, 68, 46, 84,145, 94, 63, 49,159,105, 89,149,115,219,165,138,122,168,204,149,126, 92,245,242,218, 44, 76,164,243, 63, -202, 79,198, 44, 93,203, 78,231, 98, 76,155,212,221, 22, 58, 43,210,229,162,230,252,156,245,170,229, 61, 31,233,218,134,101, 12, -244,222,113,175,107,208, 1, 94,170, 39, 28, 84, 37,231, 65,114,179, 42, 89, 57,203, 65, 85, 98,165,100,209,121, 62, 92, 59,182, - 65,210,224,153,212, 21,106,250,149, 63,252,206,171,183,110, 51,155, 28,226, 36, 8, 41,168, 42, 67,232, 2,101,165, 81,198, 96, - 10,133,144, 2, 23, 2, 2, 73,215, 37,203,152,182,107,184,218,118,233,208, 9,225, 41, 27,185, 79, 67,147,248,164, 4,224,179, -205,156,229, 14,120,244, 36,136, 97, 64, 35,218, 39, 36,101,101, 14,228,202,236, 42,208,135,139,204, 53, 92,209, 93, 92,208,109, - 58,182,151,203,212, 62,143,195,156, 37,183, 99,188,203,146,168, 67,192, 30, 60,171, 99,202,110, 93,159, 52,226, 67,158,195,200, -207,158,167, 60,230,150,117,125, 85, 28, 59,227,150,207,249,152,207, 74, 30,226, 19,226, 45,251,247,115, 95,165,239,121,152,138, -161,130, 46,139, 93,149,236,135,106,221,239,181,245,115, 5,122, 61, 23,207,242,196,131, 48, 11, 34, 3,194,114,160,234,114,107, - 94,237,241,232,131,125,188, 98,223, 15,110, 49, 38, 33, 32,111,119, 96, 61,185, 39,203,170,196,222,224,107,112,148,203, 27, 47, -219,205, 74,157, 64, 79,117, 37,169,181,160,183,112, 80, 37, 9,220, 46,130,172, 20,109,198, 66,110, 92,164,148, 17,147,177,131, -125, 4, 65,164, 19,130, 16, 60, 65, 10,156,247,148, 82,177,201,220,247,232,194,174,175, 30,247,241,198, 97,247,189,205, 64, 76, -177, 87,165, 15,244,203, 33,240,239,191,255,144,213,234, 26,203, 89,227,121,212, 56,222, 91,182,124,180,105,249,160,181,201,109, -209, 91, 58,235,232,188,231,141,217,140,177, 80,105,154,130,196, 72,205,195,118,203,119, 55, 75, 26,111, 89,219,158,223,156, 79, - 24,149,138,211,113,141,174, 18,144,208,247, 62,187,106, 6,254,194, 38,241,159,223,171, 13,167,166,192,199,192,188, 52, 44,179, -229,175, 85, 10,147,131,203, 61,235, 89,198, 12, 92, 52, 6,188,231,246,184,230, 37,163, 24,155, 18,139,160, 50,146,141,247,232, - 50, 1, 42, 23,109,199, 90, 73,182, 62,166,100, 64, 3, 66,241,214,124,194,215, 15,198,120,161,121,121, 90,112, 22, 13, 55, 75, - 77,101, 12, 31,184,136,158, 76, 88,186,152,198, 98,179,227, 84,213, 31, 28,103, 21, 72, 65,236, 33, 78,103,208,183,196,110,147, -153, 60, 45, 49,122,196,170, 5, 35,120,177, 48,124, 81, 4, 14,149,198,216, 45, 19, 4,211,232, 41, 98,224, 32, 68, 76,112,156, -120,199,204, 57,110, 8,203, 76, 9,198, 49,224, 67,154,153, 76,243, 89,227,148,230,134, 22,156,245, 61,151,155,142,190,235,248, - 97,223,243,155,199, 39, 84,117, 65,107, 97, 86,215, 92, 54,150, 82, 74,130,150, 28, 85, 99, 30,110,183, 92, 5,135, 21,146,195, -241,132, 88,150, 76,141,226,223,175, 59,190,120, 56,225,127, 63, 91,242,230,233,156,247,130, 98,189,109,185,168, 70,156, 69,201, -185, 46,120, 20, 20,151,133,100, 93,141,208,125,203,131,162, 36,218,158, 54, 68,214,118,139,149,146, 18,152, 20, 21,181,128, 32, - 4,165, 76,202,142,149,208,132, 66,243, 75, 41,105, 11, 13, 66, 19,251,204, 32,177, 54, 87,235,201,131, 66, 20,131, 24,138,127, - 26,187, 50, 25,167, 17, 73, 89, 33,108,228, 31,222,121,135,127,216,158,243,163,159,191,131,248,249,251,216,251,247,249,222,197, - 21,127,119,254, 17,151, 54,240,151,219,134,135, 49,119,212,188,205,243,104,201,178,235,185,138, 32,116,137,142,130,153,174,232, -172,103,185, 92,241,224,236, 17, 63,251,233,219,169,197,255,100, 12,242,185,189, 46, 69, 18,135,201, 73,191,112,109,146,153,136, - 49,237,151, 24,147, 90,219,117, 16,183,233, 12, 27,176, 66,195,156,221,217, 92,120,248,103, 83,119, 31,195, 19, 13,184,156, 44, -171, 45, 50,219,198,147,228,144, 99, 62,159,180, 73, 95,183, 13, 87,214,115,222,245,156,181, 13, 29,145,143,154, 14,240,220, 54, - 37, 19,173,169,202, 18, 81, 20,136, 0,203, 16,105, 4,124,188,245, 44, 66,143, 20,146,206,123,212, 75,223,250, 79,190,115, 52, -153,208, 52, 61, 74, 74,230,227, 17,158,200,168, 42,240, 46, 34,181, 32, 34,112,155,158,174,181, 68, 21,113, 25,104, 38,133,162, -215,138,205, 53, 15,181, 74, 72, 81,165,161, 40, 16,166, 72,154,195, 85,226,133, 11, 41, 16, 82, 34, 66,248,212, 85,186,248, 44, -213,236,147, 82, 9,207,188,224,250,233,120, 22, 67, 70, 65,106,184,218, 36,173,243, 1,124, 84,150,169,106,172, 50, 16,174,205, - 64,183,206,165, 27,147, 37,187, 49,185,194,235,250, 84,149, 58,155, 4, 69,162,206,179,195, 92, 29,154, 44, 41,251, 28,158,232, - 83,173,113,246,102,221,196, 92,221,102, 31,224,207,203, 36,148,251, 10, 38,207, 32, 90,254, 58,211,148,225,154,151, 38,155,115, -200, 93,165, 94, 21, 41,211,143,121,129,203,172, 75,175,247, 56,162, 74,166,217,221,112, 47,101,222, 72, 46,238,180,211, 33,121, - 14,136,231,184, 2, 94,163,240,243,107, 41,138, 44,212,147,193,133,200, 93, 66, 1,169,107, 80, 12, 20, 49,149,174,171,146, 72, - 37,121,169, 86,244, 2,162, 84,220, 80,130, 72,164, 12, 18,167, 53,151, 93,138, 3, 70, 8, 60,145,222,197, 36, 83,160, 4, 91, - 23,104,165, 64,100, 52,123, 31, 2,107, 34,150, 72, 23, 50,200,125, 0, 80, 14,116, 64,246,131,116, 76,239, 25,247,184, 57,207, -117,101, 31,119,137,222,179, 80,184,146,116,240,108, 92, 18,134,233, 50, 42,121,209,166,206,154, 8, 44,188, 99, 42, 3,239, 44, -214,172, 99, 75, 27, 28, 15,182, 43,254,231,243, 75, 26, 2,116, 91,188, 86,124,169, 44,209, 74, 48, 19,169,122, 17,125,210,218, - 47, 74,193,127,115,113, 9, 49,112,199, 68,156,212,220, 45, 53,165,142, 44,188, 96, 36, 35, 74, 72,148,214, 4,231, 48, 85, 65, -225, 61,239,185,184,147,202,173, 12,127, 50, 41, 57, 40, 19, 55, 57, 40, 65,244,129, 32, 21,203,198, 81,149,154,131, 74,243,161, - 13, 44,132, 72,107, 1,205,237, 66,243,173,121,197,214, 71,180,150, 60,116,112,107,172, 89, 59, 24,213,134,210, 40,222,147, 37, -219, 16, 19,208,238,255, 99,238,189, 99, 61, 95,243,251,174,215, 83,190,237,215, 78,155, 51,103,214, 69, 66,164, 0, 0, 32, 0, - 73, 68, 65, 84,230, 78,185,125,247,102, 91,108, 92, 18, 82, 12,137, 73,140, 67, 81,148, 40,144,200, 18, 36,161, 8,146, 16, 16, - 2, 36, 4, 1,139, 16,100,197, 40, 10, 37, 18,130, 72, 38,160, 68, 72, 17, 9,144, 4, 41, 9,113,130,133,141,157,141,189,235, -189,190,187,183,151,185,211, 79,251,245,111,121, 26,127, 60,207,247,252,126, 51, 59,115,119,238,238,218,230, 39, 29,253,102, 78, -253,150,231,251,124,218,187,184, 16,109,165,203, 42, 94,199,193,110, 52,152, 17, 33, 34,236,173, 39, 24,147, 88, 28, 81,247, 64, -212,142,217,168,228, 5,233,153, 52, 53, 19,173, 25, 56, 71, 30, 28,165,119, 20,193,115,205,123,246,124,224,102,112,236, 8,197, -208, 7,156,119, 12,115, 69,200, 20,165,132, 34,203, 25, 2, 94,107, 42,165, 9,153,164,173, 27,156,177,188, 62, 63,227,115,131, -146,169, 5,153, 23, 12,203,140,133,135,157,224,153, 5,143,237, 28,183,219,154,145,173, 97, 52, 97, 55, 87,124,109,209,240,219, - 14, 38,252,141,227, 5,255,244,141,125,126,177, 9,236, 6,135, 27,143,120,104, 28,203, 97,197, 42,215, 44,101,206, 45, 23,199, -132,167,229, 24,233, 13,247,178, 10,231, 59, 78,100,212,104,111,133, 98,207,123, 50,149, 69, 81, 20, 17,253, 10,102, 66, 82, 75, -133,206,179, 24, 60,170, 42, 74, 28,251, 16,247, 52,145, 0,102, 93, 11,170,138,160,179,124,152, 48, 29,253,152,171, 76,108,136, -152, 8, 10,225,160, 94, 19,110, 63, 72, 82,217, 49, 14, 48, 59,135,243, 21,167,119,239, 67,102,226, 24,204, 16, 11, 45, 37, 97, -181,138,123,133,206,168,145, 28, 27, 19, 45,107,235, 6,230,167,184,249, 49,191,117, 8,203,231, 46, 49, 27, 14,241, 87, 14, 17, -105,116, 40, 18,151, 94, 44,154, 4,184, 53,113, 92, 42, 99,114, 44,188, 71,200,164, 44,105, 72,248, 30, 30, 45, 14,122, 32,113, -143,229,233, 37,178,249,132,121,122, 15, 92,237,237,177,101,210,107,200, 84,234,108,203,248,245,190, 99,216,166,228,194,116,136, -186, 23,113,138,251,230, 29, 31,120,117,144, 49,145,154,135,139, 5,123, 85,116,199,155, 33,184, 51,183, 60,112, 29,109, 16,100, -206, 69,187,143,211,231, 62,255,227,151,202,138,195,131, 67, 6,229, 8,135,199, 7,137,150, 1, 93, 42, 2,208,206, 91,172,247, -120,225,113,235, 14,141,226,206,201, 9,185,206, 41, 21,156, 88,139,171,202,120,162,163, 17, 20, 5, 66,231,209,202, 85,102,136, -106,132,144, 57,232, 18,145, 43,196,213, 27,136,253,125,100, 94, 33, 28, 48, 25, 35,140,185, 8,246, 79, 21, 58,120,156,227,220, -183,128,159,166, 96,246,164,205, 78,203,167,183, 6,234, 58, 62,208,125,160, 80, 58, 82,112,132,220,136,238,228,121, 20,159, 41, -210,220, 60, 43,162,127,186, 46, 54,180, 30,151,204, 66,170, 49, 76,118,226, 53, 25,237, 69, 32,145, 73,173,170, 62,170, 60, 62, - 99,207,116, 18,213, 16,155,143,109,192,198,246,174,253,237,210, 9, 47,226,121,143,152,223,250,189,246,187,128,143,232,187, 38, -219, 51,170,162, 55,129, 9, 27, 4,125,159,193, 56, 31,175, 77, 31,216,117, 58,255,158,178, 21, 18, 77,207,233,212, 22, 79, 51, -177,240, 12,162, 71, 89, 30, 17,245, 89,226,122,155,176, 65,146, 95, 20,197, 50, 38, 22, 58,221, 59, 29, 91,102, 1,193,168,144, - 92,150,154, 67, 4,121,174,153,120,201, 82, 75, 86,193,209, 5,104,130,136,185,137,128,206, 75,108, 8,172,141,199,164,189,175, -245, 1,129, 96, 37, 2, 93, 23,112, 34,224, 2,184,222, 25,206, 37, 26, 98, 15,150,115,102,115, 28,201,170,242, 66, 57, 80,111, -105, 62,245,244, 54, 17, 30,101, 46,108, 39, 54, 38, 13,226,235, 38,182,150, 23,203,248,251,151, 77,244, 69,151,112,107,182,230, - 94,103,248, 96, 93,243,230,116,202,187, 93,236, 80,209, 52, 96, 27, 94,203, 51,180, 23,140,139, 12, 39,192,123, 75,103, 58,132, -107,249,169, 91,183,224,107,191,196,247, 95,191,194,155, 45,252, 96,174, 40,108, 71, 71,193, 78, 14, 50, 72, 22,173, 37,195,227, -139, 40, 39,253,150,177,156,118,169,114,146, 57, 88,199,107,195, 18,109, 3,186,210, 40, 31, 88,121, 65, 41, 64,105,137, 8,158, -185,151,236,123,203,187, 93,236,128, 77,114,201,203, 90, 48,206, 51, 4, 30, 39, 21,131, 66,210,248,136,155, 80,206, 83,150, 57, - 39,141,225, 60,203, 8, 65,243,252,225, 46,115, 36,175,142,198, 92, 59, 60,228, 65,107,216,201, 10,218,178,138,215,120,111,130, - 24, 14,162,163,152,105, 17, 34,130, 91,229,210, 96, 51,193, 11,133,102,108, 61,185,183,236,134, 24, 12, 14,188,167, 12,142, 75, -193, 83,233,130, 1, 2, 33, 36,101, 94,177, 14, 22, 33, 20, 70,231, 72, 1, 51,175, 25, 20, 57,173,177,172, 58, 71,174, 37,187, -202,115,189,148, 88, 27,104, 92,203,126, 57,226,111,124,252, 1,191,233,232,128, 51, 35, 25,105,193,199,171, 5, 55,139,156,135, -235, 37,165,202, 88, 26,195, 48, 47,176,133,230,181, 76,241, 15,141,224, 55,168,192, 3, 27, 88,218, 64,145, 43,188,214,232,206, -226, 70, 21,109,107, 57,169, 6,140,188,141, 12, 4,233,185, 63,152,144,117, 29,247,117,134, 51, 29, 58,120, 14,178, 44, 2, 66, -181, 98,233, 61, 43,169, 56,115, 14,165, 52, 7,163, 49,214, 24,206,117, 18,181,170,235,216,241, 25, 14,226, 51, 94,175, 17,197, - 8,225, 26, 24,143, 35, 66, 62, 47,147,186,102, 2,118, 10, 9,181, 65,180,230,201,243, 65,215,197,103,124,186,138,254, 32, 85, - 74,238,215, 75,132, 18, 49,192, 59,135, 72,180,213,147,182,230, 11,162,225, 48, 56, 70,174,227,123,247, 15,120,173, 42, 56,204, -161, 46, 11,236, 78, 73,123,235,254,102, 12, 40, 2, 98, 54,139, 69,149, 14, 49,200, 6,127,145, 28, 11, 64,104,129,104,252,198, -180,170,237, 30, 21,159,113, 46, 97, 64,196,183, 40, 28,251,238, 90,162, 67,170, 84,196, 20,169,253,222,123,167,248, 84, 56,218, - 16,227, 73, 82,181, 20, 89, 14,243,121,188,110,214, 65,215,225,181, 69, 4, 79, 7,188, 61,157,114,110,225, 87,206, 86,124,195, - 71, 83, 93,141,167, 53,142, 44,120, 84,120,229,251,126,252,104, 88, 48,202,115, 26,211, 65, 80,228,121, 70,103, 44,166,115, 44, -151, 53,133,214, 72, 2,243,243, 5,157,111,105,234,142,209,100,200,124, 49,231,116,185,194, 9,137, 32, 80,141, 71,152, 76, 71, -138, 82, 53,224,249, 43, 99,174, 28,237,113,138, 70,148, 57,159,251,236,117, 78,171, 9,191,245,229,171,124,241,250, 62, 55,110, -220,224,133, 23,143,216, 57, 26, 80, 29,237, 51,187,123, 26,105, 18,233, 66, 61, 18,216, 7, 35,184,113,149,193,171,215,241,151, - 47, 17,130,100,255,243, 55,168,171, 10, 22,233, 2, 93,208,144,194,147, 85,128,158,198, 81,223,166, 6,109,223,164, 30, 20,145, -229,241,226,183,201,212, 64,138,184,104, 85, 6,195,138,157,231,174,240,210,245,155, 28, 30, 94,102,255,240, 50,167, 90,198,108, -108, 56,102,116, 48, 65,151, 25,197,168,160,235,173, 60, 85,111,174,146, 90,190,125,197,158,109, 43,221,109,117, 30, 68,223,122, -214, 91, 85,221, 54,114,251,219, 13,236,114, 43,194,219,239, 78, 64,239,121,232, 61,149,172,105, 55,124,250, 71,164, 78,179,152, -173, 42,155,252,217,187,216, 21,233,205,102, 92,194,105, 52, 46, 5,175, 52,127,178, 93, 82,126,115,155,204,249,147,132, 33,100, -228,171,146,244,129, 34, 32, 70, 36, 3, 28,145,114, 26, 21, 3,102,136, 78, 75,253, 61,184, 52,200,216, 19, 32,165,196, 75,129, -242, 2,145,197, 54,186,117,129, 54, 72, 10, 41,233, 66,192, 38, 49, 25,151, 38, 5, 42,128,113, 2,227, 33, 47, 36,211,149, 99, -156, 5, 58, 43,104, 3, 27,231, 54,182,170,117,159, 54,188, 94, 58, 86, 36, 4,188,176, 41,153,217,106,195,251, 20,216,123, 41, -217,167,113,102, 31,255,156, 75, 88, 9,124, 84,137,236,186, 40,247, 58,175, 99,224, 63,153, 70,113,164,147, 41,180, 6, 95,106, - 6,101, 78, 33, 20, 70,120,166,181,225,254, 98,193,195,213,138, 91, 93, 3,187, 7,220,245,128,169, 57,238, 26,180,204,184, 82, - 66,112, 14, 47, 2,123,133,198, 18,216,213,129,251,235,134,159,175,155,205,102,234, 13,131, 34, 99,224, 28, 59, 58, 10,148, 8, - 39, 40,114,197,178,131,221, 42,218, 87, 22,120,190,186,114, 76,187, 88,225,151, 18, 62, 87,198,103, 97,175,202,168, 77, 32,211, -138, 69,109, 25, 8, 88,104,141, 86,130,155,133,102, 55,211, 76,148,224,185,209,128,171, 18, 6,227,146,145,128, 23,181,230,174, -147,180,137,154, 41,202, 17,248, 22,177,183,131,144, 25, 12, 74,196,106,133,176,134,121, 11,147, 81,198, 16,176,198, 32,157,229, - 57,160,178, 29, 99,161,145, 2, 50, 93,144,101, 37,186, 31,237,229, 5,133,138, 73,104,208,146,113,166,105, 17, 60,236, 28,151, -170, 44, 90, 11,120, 27,231,190,206,112,125,178,207,207,127,244, 54,159,219, 29,178,108, 21, 95, 62,189,203,251,243, 41, 39, 54, -240,222,114,202, 81,174, 49, 42,103, 60, 26, 97,144, 8,227,120,223, 9, 94,112, 29,239, 53,150, 60,207,105, 8,228, 85,193,170, -109,249,184,241, 12, 27,131,215,130, 27, 93,203,221,172, 96,108, 45,239,101, 35,110,168,192, 89,174,160,109, 89, 42, 77, 27, 76, - 82,225,243, 44,157,163,201, 10,166,192, 90,130, 80, 25, 50,196,209,128, 2, 78, 36,136, 50,131, 32, 17, 62, 89, 6, 27, 27,139, - 27, 9,162,168, 18,189, 55, 61, 99,174,139,235,218,153, 68, 91, 53, 79,239,190, 58, 23, 43,254,118, 13,183,238, 66,115, 22,139, - 35, 43, 16, 66,129,206,162,193, 15, 22,161, 20, 63, 58,169,216, 41, 42, 94, 27, 12, 9, 69,201, 85,145, 81,238, 93,101,112,237, - 69, 14,242, 9,239,200, 22,206,102, 17,176, 26, 98, 1, 37,188, 68, 12,203, 24, 42,164,142,232,244,144, 70, 65, 26,200, 20,194, - 6, 68,219,196,125,225,162, 99, 40, 55,202,163,125,108,121,218, 51,151, 12,189,200,147, 16, 88,111,112,209,218,184, 55,214,109, -108,185, 23, 9, 25,239,100,194,114, 37, 64,114,109, 17,227, 81, 82, 30,141,157,197, 7,199,115,222,235, 12,191,180, 88,240, 86, -103,248,149,217, 57, 31,187,150,105, 91,227,148, 70, 91, 67,158,231,212,205, 10,133, 63,250,241, 59,193,115,117,103,140,119,158, - 92,122,150,211, 25,214, 7,206, 78,103,228,185,196, 5,207,124,186, 64,229,177, 53,217, 57,195,116, 57,103,109, 91,156,240,248, - 16,168, 84,204, 96,126,203,149, 29, 86, 78, 50, 40, 74,214, 94,242,112,225, 24, 12, 11,254,169, 87,174,240,206,220,243,153,195, - 35,190,231,230, 53,170,114,196,205,171,151,121,225,218, 21,118,138, 9, 26,201,135,173,138,173,156,208,123,125,235,104,209, 87, - 14, 96,239,128,207,188,122,133, 23,246,247, 56, 26,143,249,204,243, 87,152,228, 37,121,165,153,154, 0,139,122, 35,230,209,143, -156,241,207, 30,212,121, 74,181,115,225, 5,222, 70,212,162,105,226, 2, 80, 58, 6,139,221, 61, 62,115,120,133,113, 57,224,234, -254, 97, 18, 16, 8, 76,155,154,124, 56,100, 82,229, 28, 14,247,208, 82,131, 46,105, 93, 20,102,136, 51,248, 52,247,245, 91,157, -129,167,233, 57,245,173, 32,177, 69,221,122, 90,235,245, 89,231,234,189, 36,162,181, 27, 78,253,119,250,202,242, 24, 44,157,219, -104,202,247,221,134,190, 58,247, 9,123,208,251,102,251, 44,206,222,116, 17,245,200, 67,114,109, 19, 41, 9,146,230,209, 57,149, -243,113,206, 37, 68,162,202,125, 11,197, 60,159,152, 8, 33, 9,190,248,176,209,175, 87,125, 64, 76, 74,128, 9, 60,151, 75,201, -149, 44,224,149, 66,132, 64, 41, 21, 34,147,200,214,162, 69,228,188,214, 46,144, 73,193,210,165,241, 19, 73,168, 71, 6, 58, 98, -176,215, 66, 50,235, 28,251,165, 96,218,121,132, 80, 81,255,189, 7,202,185, 45,201,101,159,230,235, 93,136,227, 0,195, 38,160, -123,187, 1,220, 94, 88, 10,247, 35,249,176, 17, 61,250, 52, 52, 70,159,240, 14, 93,172,202,105,214,177, 74,154, 47, 98, 37,214, - 56,234, 97,201,238,112, 68, 45, 84, 84,250,106, 91,222, 94,157,241,141,211,227,184, 57,133, 54,254,188, 84,180, 93,203,171, 90, -113,169, 42,208,222,146,123,139,177, 29,235,166, 37,152,142, 91,203,154, 59,205, 42, 38,102, 54,118, 90, 76,240,236, 11, 23, 59, -118,157,163,212,154, 81, 6,227, 76, 80,119, 1,137,231,108,109,248,242, 42, 49, 71,130,165, 20,129, 87, 39, 57, 89, 8,212, 54, - 80,230,146,186,181, 28,142,114, 30, 58,201,158,136, 90, 2, 15, 87,134,135, 94, 48,169, 10,126,102,217,241,249,157, 10,227, 61, -107,231,185,167,114, 6, 2,166,198,199,128,164, 52, 98,180, 27, 55,226,241, 8,225, 90,184,113, 3,121,124,134,220,155,112,251, -225,130,135, 18,118,139, 28,101, 44, 89,107,184,162, 20,121,240, 20, 58, 39,136,140, 78,120,178,162,164,149,154,165,212,204,242, -140,214, 89,100,145,211, 41,197,188,131,188,208, 52,105,162,210, 9,133,203, 53, 70, 73,206,231, 39, 8, 89,240,225,236,156,111, - 44, 78,104,186,150,198, 59,186,213, 57,214, 59,238,170,140, 35, 33,216,203,115,198,147, 33, 93,145, 83, 56,203,219,171, 53, 7, -163,146,247,215, 29, 7,185, 98, 97, 44,120,193,243,149,226,171,181,227,121,215,113,191, 40,184, 92,175, 57, 41, 42, 94, 20, 53, -191, 18, 10, 46,249,142, 51,159, 71, 91, 88,165, 57,183, 13,194, 89,230, 42, 34,227,167, 8, 92, 86, 97, 69,236, 72,246, 30,111, -153,210,156,133, 4, 94, 93,214, 8,159,244,210, 69, 74, 56,139, 10, 17,210,243, 95,183, 17,152,236, 92,178, 12, 53,207, 54, 86, -117, 17,185,206,233, 41,156, 45,225,228, 46, 66,198,145, 17,193, 35,112,252,216,254, 46, 71, 90,113, 73,105, 66,150, 81, 27, 19, -105,155, 7,151,232,148,164,243,146,243,197, 49,243,227,211,248,247,186, 14,145,233,232,236, 23, 98,146, 32,178, 12,145,101,124, -166, 42,249,129,225,132,239,219, 25,113,121, 84,241, 97,211,193, 98,141,104,235, 88,100, 94, 20, 80,225, 81, 23,204, 79, 74,164, -123, 86,144,202, 19,107,200,167,234,191, 77, 32, 96,210,190,159,168, 74, 33,141,133,219, 68, 33, 54, 53,162, 72, 99, 72, 27,147, - 34,187,110,226,179,185, 88,196,235,106, 26,192,178, 12, 48,117, 14,154, 21,139,229, 20,197,240,198,143,163, 53,171,188,229,189, -211, 19,186,110,205,170, 94,178, 88,206, 25,100, 37,139,229,156,118,213,144,149, 25,117,179,166,110,107, 58,211,210,212,134, 7, -235, 57,157,141,252,220,178,200,184, 57, 26,112,175,243, 72, 33,184, 57,172,184, 84,150, 84,227, 49, 47, 14, 7,220,237, 52,207, -141,246,249,220,165, 93, 46, 29,238, 33,244,128, 60, 31,176,172,225,218,209, 37, 6,229, 46,191,225,218, 30,183,145,100, 71, 67, -218, 51, 3, 42, 82, 88, 68, 57, 97,242,202, 33, 47, 31,236,115, 48,218, 97,111, 48,228,112,119,143,241,104,204,225, 96,192, 45, -187,198, 28, 47, 99,150,247,248, 60,245,105, 23,252,241,215,211,132, 90,250,141,175, 87, 47, 19,105,243,151, 10, 10,205,100,103, -143,107, 59,251,232, 92, 68,109,230, 60, 71,105,205,195,102,201, 40,215, 28, 14,118, 81, 85, 73,145, 21,100,153, 98,106,218,168, -144,214, 75,154, 90,191, 21,212,213, 39, 13,193, 55,224,177,237,238,130,248, 54, 85,253, 60,223, 12,178,250,110, 4,244, 30, 87, -208,219,121,170, 36, 98,225, 92, 2,191, 36,227, 27,111, 35, 55, 93,248,232,179, 45, 4, 84,217,102, 68,162, 19,133,174,179,155, -108,183, 75, 52, 26, 29,185,216, 40, 25,103, 79,223, 74,194,177,111,122, 8,183,145, 93,237, 43,245, 30, 97,174, 19, 61, 80,101, - 23,151,246,160, 82, 49,121,150,154, 66, 4, 26,235,201,115,133,176, 30,163, 99,219,253,196,120,134,153,162,243, 62, 61,144, 34, -101,248,241, 60,140,243,136, 16, 88, 58,129, 34,208,132, 4, 16,236,250,121, 91,182, 25, 37,244,163, 6, 69,194, 16,244,237,119, -185, 65,228, 7,191, 9,236,166, 79,254,122,189,130,111, 35,193,235,193,133,230, 9,206,129,133,132,157, 93,142, 39, 19,238,250, -192, 7, 93,203,237,174, 97,213, 52, 48,155,194,249, 60,178, 58,164,143, 96,164,182,230,195,206, 82,154,150,113, 48,204,218,142, -179, 85,205,213, 76,242,191, 61, 56,227,157,243,135, 73,167, 33,206,235, 9, 14,218, 53, 15, 77, 96,228, 26, 14, 16,100,193,225, - 13, 52,173,103,191,128,197,178,227,221,181,231,225,114,158,128, 70,154,182, 53, 12,218,142,231,138, 28,147,148,251,118,114,201, -131,149,225,249,161,166, 70,114,123, 29, 55,249, 99,149, 49, 53,142,239, 29,228, 76, 91,143, 44,163,166,196,170,181, 84,185,230, - 76,228, 72,173,227,101, 46, 7, 48, 60, 64,116, 43,216,191, 18,167, 95,135, 59,136, 92, 35, 77,203,202,192,187,167, 11, 74,233, - 25,229, 25,151,124, 64,133, 16,193, 75, 66, 18,202, 17, 11,192, 8,201,188,200, 57, 15,129,121,145, 99, 58,143, 85,130,221, 34, -167,238, 2,115,235,201,116, 52,241,176,222,211, 5,133, 10, 2, 45, 44,185,107, 25,218,134, 35, 12,106,181,166, 11, 30,235, 44, -222,180,124,102, 56,162, 44,135,156,173,107, 58, 27,104,138,140, 97, 89, 96, 3,136, 76, 99,165,228, 82,161,201,141,225,235,181, -229, 75,149,226,174, 13, 28,212, 75, 78,138, 1, 59, 77,205,219,162,228, 53,209,114,203,105,174, 20,146,115,151, 49, 51,134, 74, - 6,238, 16, 48, 93,199, 90, 69, 96,180, 19, 30,167,114,156,240,180,222,209, 56, 79, 14,100, 69,193, 92, 9, 66,145,131,174, 16, -203, 6, 81,175, 99, 65,214,196,103, 84,244,242,225,109,253,116,134,204,179, 96,166,154, 85,148,133,158, 30, 35, 76, 7,133,100, -183, 26,113, 40, 5, 55, 39, 21,166,109,240,214, 80,230, 25,109, 8, 24,103,184,187, 94,115,239,252,132,175,188,255, 17,194, 73, - 68,231, 99,101,222, 69,193, 28,177,182,136,221, 1,162,200,249,220, 96,192,111, 59,188,204, 75,163, 33,135,229,136, 93, 41,169, -131,227, 65,211,196,174,172,138, 93,232, 56, 7, 79,178,197,189,246,198, 39,137,123,109, 7,253, 44, 75, 21,120, 29, 11, 23,111, - 19,215,189,215,154,207, 54,117,156, 78,154, 28, 69, 1,164,113,116,103,146,158,135,139, 90, 31,237, 58,106,165, 44, 22,176, 90, -131, 89,227,108,203,108,189, 98,229, 12,138,234,218,143, 51, 95,176,250,232, 1,237,170,227, 36,147,124,124,114, 31, 47, 61,211, -245, 25, 67,157,241,112,113, 70,103, 60,245,122, 77,231, 28, 15,166, 51,130, 2,211,116, 56, 23,233, 6, 90, 74,172,212,104,165, -185,185,179,131,214,146,115, 39,121,249, 96,143,198,105, 46,143,247,249,236,243, 71,140,247,118, 17, 33, 99, 60, 26, 32,100,198, -254,222,144,114,144, 51, 28, 87, 56, 49,228,114, 85, 49, 81, 57, 31, 45,150,201, 28, 69,161, 94,185,202, 43,187, 19, 46,141,247, -120,238,202, 33,121, 86,161,164, 38,211,154, 60, 83, 28, 86, 35,222,237, 44, 44,231,207,102,105,250,164,192,254,137, 65,161,111, -161,244,193, 84,199, 10,202, 43, 76, 89,178, 55,170, 24,230, 21, 32, 25,228, 21,139,122,206,173,143,239, 83,211,113,249,224,136, - 16, 60, 66, 42,230,203, 53,171, 46,192,226, 52,182, 91,218,100, 55,218, 31,179,122, 26,230,191,167, 81, 36,179,145,199, 3,185, -148,191,190,114,189,125, 80,205,212,134, 59, 31,182,132, 81, 66,106,201, 27,226,249,246,109,113,225, 99,149,222,227, 35,212, 99, -247,196,121,144, 46, 58,192,133, 46,174,250, 50, 79,201,208, 86, 39, 96,187, 99,241,120,128,239,231,251, 23,109,235,176, 81,108, -147, 91,216,130,222, 4, 38, 5,228, 74, 75,198,121,148,124, 85,193,179,212,138, 29, 68,148, 8, 16,129,153, 9,204,131, 99,148, - 43,230,157,143, 46, 98, 58,141, 51,186, 68,147,233, 81,238, 66,160,144,216,158,182,102, 98, 62,131, 74,157,136, 11,237,247,109, -128, 92,234,188,169, 45,133,187, 94,237,175,175, 20,122,122, 99, 38, 54, 73,222,119,178, 14,244,150,110, 65, 63,158,217,219,131, -201, 36,105, 12,196,141,134,102, 13, 39,103,240,224, 1, 76,167,112,182,138,115,251, 0,116, 29, 31, 55,107,190,182, 92,242,141, -197,130,119,231,231,252,163,217,138,245,244, 20,104,227,172,190, 91,166, 68,162, 77,109,217,142,165,183,140,125,195,201,186,101, -136, 67, 89, 67,179, 92,240,206,210,241, 75,211,227,120,124,245, 10, 86, 51,232, 58,202, 44,167,109, 59,158, 47, 74, 74,239,184, -189, 50, 92, 25, 40,140,241, 88, 23,131,237,137, 9,236,201,168,168, 39,149,228,221,206,177,155, 41, 68,107,184, 84, 40,154, 92, - 19, 28, 12,164,160,214, 69, 66, 59, 7,198, 7,215, 48,206, 82, 12,118,240,121,133,152,159, 34, 71, 35,228,116,129, 8,158, 59, - 65,177, 50, 45,101,221,113, 35,203,241, 90, 99,164,192,102, 26,151, 21, 60,208,138,133,146,156, 16,112, 66,178, 20, 1, 13, 44, -141, 67,100,130, 70,150,212, 66,176,176, 22, 87,140, 8,182,137,213, 62,142, 44,147, 92,151,146,231,188,231,149, 92,243,170,146, - 92,111,106, 14,149,229,103,151, 43,174,231, 3,230,109, 67, 94,150,220,152,148,152, 65, 73,176,142, 61,165,168, 67,164,151,221, -211,154, 87, 69,224,163,181,225,200,183, 76,199, 35, 70,139, 5,205, 96,192,117,183,228, 45,167,184, 26, 60, 43,161, 25,200, 22, - 67,198, 87, 90,184,164, 28,247,179, 44,178, 59,164,196, 7,129, 64,226,132,160,243, 14,165, 20,101,158,161, 5, 28,230, 67,230, - 74, 97,125, 2, 23,170, 28, 17,146, 40, 87, 16, 81,213, 77,248,167,232,114,232,111,201,187, 21, 59, 59,112,249,185,168, 33, 34, - 36,204, 27,132,143,129, 53,175, 74,110, 12, 71, 92,173,114,246, 29, 4, 17,232,218, 14,103, 12,239, 47,167, 60, 88, 28,243,149, -135,247, 88, 26, 71,176, 14, 33, 4,194, 69,148,190, 12, 1,161, 2, 66,103,136,178,228,247,222,120,142, 27,195, 9, 74,105,218, - 0, 59,249,128,145,146,124,117,118,134,104, 76,242,140,176,177, 99,156,165,194,226, 91, 5,244,237,174, 98,239,125,231, 83, 37, -222,123,115, 8,159,104,189,114, 83,181,203,180,135, 6,153,152, 59, 2,130,137, 99, 14, 82,181,223, 39,225,161, 15,240,117,236, -104,180,150,112,255, 62,254,228,180, 55,116, 73,175,186, 38,220,123, 8,147, 1,243,229,154,211,217,154, 15, 86,103,172,156,227, -206,249, 25,171,182,230,225,114,206,188,233, 56,159,173, 65, 8,202, 74,199, 44, 53, 56,174, 12,135, 8,114, 66, 48,116, 40,174, -142,247, 25, 21, 57, 71,123,251, 84,101,197,238,238,144,253, 97,137,211,154, 97,158, 83,230,138,241, 78, 69,166, 11, 70, 85,198, -100, 92,208, 90, 73,240,146,231,143, 46,241,238,201, 41, 88,205,228,242,132, 47, 61,119,149,203,123, 59, 88,231,168,134, 21, 77, -107,144, 34, 74,152,238, 78,134, 24,223,240,240,227, 89,204, 98, 62, 77,251,241, 73,122,229,223, 52, 31,241, 27, 78, 33, 50,141, - 72, 20,120, 67, 40,135,236, 15,135, 40,161,201,179,136, 40, 61,155,207, 56,153,206,161, 94,145, 15,198, 4, 41,153,175,214,152, -160,168,103, 11, 56, 59,137, 27,183, 79,148,184,237,106,249,137,213,122,216,208,237,250,121,164,148,143,190,255,122, 6,245, 94, -184, 71,176, 89,244,143,207,214,165,120, 20,113,126, 33, 10,148,197, 5,170,179,141,245, 40, 36,250, 96, 58,175, 96,146,139,220, -150, 88,139, 20, 27,141,251,109,113,156, 39,169,198,245,178,182,189, 26, 91,143,105,232, 33, 5,253, 72,227, 66,120, 38,178, 52, - 70, 42,144, 73,133,204, 51, 38, 94, 98, 18,143,123, 25, 2, 66, 9,156, 15,212, 70,210, 6,183,169,178,123,157,249,237,164, 81, -203,136,172,182,108,216, 18,189,118,127, 8, 91,247, 53, 5,117, 41,158, 78, 78,232, 63,231,229,166,130, 87, 9,112,167, 30, 51, -177,249,180, 93, 22,173, 34,171, 32, 75, 6, 31,206,193,243, 55, 97, 56,138, 1,189,231,238, 26, 3,247, 78,226, 12,222,218,141, - 89, 78, 99, 98,208, 54, 62,182, 9,235, 38,138, 83,157,157, 71, 37,178, 69, 29, 13,145, 76, 7,231,179,152,168,174,151,224, 58, - 76,187,230,227,206,114,167, 91,242,230,123,223,224,117,114,190,114,122,194,157,197,113,236,146, 53, 11,104, 82, 50, 32, 28,211, -249,130,223, 49, 41, 88,172, 27, 10,165,216,145, 14,237, 3,183,151, 29,135, 10,126,110,218,240,182,245, 20,109,203,213, 65,193, - 73,231,216,215, 18,233, 2,119, 28, 76, 6, 5,101, 16, 28, 40,207,181, 65,133,149,138,203,185,230,197, 65, 65,238, 2, 47,238, -237,114, 86,119, 88,161, 17,163, 61,196,236, 1, 98, 60, 64, 24,143, 88,175, 56, 57, 95,240,102,169,121,174, 51, 52,194,227,138, -146, 7, 4,238, 10,193, 42,207,153, 6,201, 76, 10, 86,169, 45, 29,165,129,193,203,130,198, 24,222,247,158, 60,175,112, 1,202, -172,164, 69,227, 8, 84,197,144,129,247, 76,138, 2, 35, 53,138, 64,169, 5,178,238,216,209,112,210,156,115,165,136, 30,228, 39, -179, 6, 68,142,113,158, 97,149,161,172, 99, 26, 20,215,218,154,147,160,216,105,151,156,148, 3,118,166,231, 44,202,146,172, 89, -243,150, 44,121, 77, 54, 44,100, 70, 97,150,204,173,166,202, 61,149,133, 55,169,144,139, 51, 62, 18, 57,121,183,160,201, 74, 22, -237, 10, 47, 64, 32,162,254,188,247, 76,242, 1,147, 92,145,133,128, 31,141, 88,233,132,137, 89, 27,132,176, 96,171,136, 98, 23, - 32,116, 21, 91,233,143,206,253, 54,115,230, 39, 5,247, 44,231, 71,255,153, 31,225,135,127,243,111,226,149,107,215,120, 99,177, -224,210,171, 47,242,155,190,240,253,212,206,114, 54, 63,231, 67, 37,120,185,136, 94, 5,213,122,205,121,215,210, 90,195,237,213, - 25, 63,125, 62,103,209, 26, 76,221,197,110,139, 3,145, 41,100,208, 72, 47, 16, 33,142,212, 68, 85,240,242,206,144,107,163, 93, - 74,157,225,164,192, 19,184,179, 94,242, 13, 27,229, 92,133,105, 54,147,208,158,174,247,172,207, 87, 15,210,131, 8,178,201,178, - 24,132,139, 98, 19, 79, 66,194, 21,245, 64,226,222,148, 75,217,132,210, 79,238,132,242, 49, 42,113, 15, 64,118,169, 51, 58,159, -197,103,105,181,120, 44,168,247,175,243, 69,164, 28, 52, 53,204, 87,180, 77, 71,119,231, 14,139,182, 99,181, 88,179,246, 14, 39, - 97,109, 29,133,200,200, 52, 92,159,236,166,226, 66,130, 40, 56, 28, 77, 40,117, 9, 66, 49, 40, 75,124, 16,148, 69,197,120, 82, -144, 11,141, 46, 36,185,206,169,202, 12,165, 37,133,206,185,127,182,102, 60,169,168,215,150,229,170,229,189,245,156, 16, 96,103, -111,196,141,201, 4,169, 20,229, 96, 68, 8,129,162,200,144, 82,162,242,140,224, 61,205,106,201,135,167,171,104, 15,251, 29, 85, - 43,143,173,179,190, 74,223,174,214,251, 74,201, 72,152, 47, 56, 81,158,165,105, 88, 52,115, 30,204,207,249,120,185, 34, 28, 47, - 97,113,204,162, 49, 44,100,193,170,113,172, 87,107, 56, 63,131,102,186, 1, 69, 61,158,241,169, 45,181,162,222,226, 20,243,232, - 92,125,251,166,246, 0,191, 95,207, 42,221,152, 77,224,238, 93,215, 92,162,167,245, 98, 51, 61, 21, 77,138,180,112, 19,218,189, - 23,120,208,249,134,222,209,163,194, 93, 2,143,249,190,165,159,109,180,223, 73,137, 85, 16, 27,254,188, 20,223,172, 77,208, 43, -252, 93,180,220,229,150, 96,156,222,100,202, 23, 24,133, 88,173, 58,231,233,188, 96, 55,147, 72,173, 88,135, 16,213,183,164,226, -204,153, 40, 90, 34, 21, 11,239,112,253,239, 17,114, 11,145,158, 64,124,189,251,157,148,155,234, 61, 79, 0,153, 92,197,207,245, - 0, 69,169, 54,128, 79, 31,122,140, 76, 58, 23,177,105,226,244, 20, 55,122, 42, 32, 49, 64,110,111, 60, 23, 27,100, 9,187,123, - 49, 0,127,210, 61,204,213, 70,132,135,116,188,229, 40, 50, 55, 38,147,228,183,238,162,134,117, 91,199, 17,210, 98,145,174, 41, -241,221, 38,167,188,102, 5,243, 21, 44,215,176, 92, 65, 51,131,179, 57,204,207, 96, 49,219,108, 64, 15,103, 49,121,163, 23,206, - 49,145, 51, 78, 32,204, 78, 99, 85,190,154,193, 98, 26,141,125, 22,231, 96,107, 70,193,208, 53, 75,190, 54,159,242,165,157, 93, -190,122,255, 30,129,140, 15,206,166, 28, 73,248,219,181,225,246,249, 9, 47,155, 26,231,224,174, 9, 92,223, 29,226,114,141,237, - 12, 7,147, 1,243, 69, 77,174, 53,161,200,208,198,209, 0,135,133,226,182, 11, 92, 31,104, 22,139, 53,217, 96,194,103,117,224, -238,114,138, 24,237, 34,234,101, 76, 70,198,195,152,191,158, 28,243,122,166, 41,155,142, 51, 5,247,133,165,214, 25, 15,189,101, - 46,162, 43,222, 89,235,145, 90,178,104, 37, 83,103, 80, 46,240,139, 1,106,173, 9, 50, 71, 7,143, 47,134, 72, 12,131,225, 1, -187,190,161, 26,237, 97, 28,228, 90, 35, 84,134,149, 25, 82, 11,180,119,156,215, 29,109,187,166,198,209,214, 13, 39,117,205,123, -139, 37, 95,110,226,109,184,238, 13,111, 4,201, 75,120,206,148,230,200, 52,156,150, 67,246, 2, 44, 60,188, 20,214,188,229, 75, -246,154, 5, 75, 61,100, 20, 26, 26,167, 25,102, 48,182, 43,222,206,118,185,181,156,241, 1,154,118,126, 70,109, 5,132,142, 73, - 94, 80,200,140, 66,106, 10, 25,169,121, 95, 24, 12, 57, 84,129, 87, 43,197,221,214,210,117,150,235,255,216, 23,152,220,184,196, -252,206,233, 70, 91,253,137, 1,189,151, 72, 76, 27,110,177,173, 99, 81,241, 79,254,142, 31, 34, 43, 74,170,178, 34,180, 43,126, -248,251,254,113, 94,124,233, 42,135,229,136,215,255,222,207,224,131,229, 43, 65,242,188,109,248,216,118, 52,182,227,141,249, 9, -175, 47,151,220,239, 58,108,103, 32, 4,180,130,203,153,230,181,113,198, 97, 46,120,185, 42, 24,102,146,105,215, 34, 3,188,116, -249, 18,151,171, 49, 78, 73, 36,112,102, 45, 31, 47,214,124,216,212,113, 93,158, 77,163,227,154,181,136,158,142,108, 62,197,126, - 43, 28, 23,202, 81, 38, 68,153,242,182,141,231,107,125, 26, 69,102,177, 64,241, 73, 35, 30, 19, 71,146,157,217,236,151,150,141, - 59,102,207,127,239,247,181,199, 18,249, 39, 7,245,254,101, 82, 22, 62, 95,196,247,182,141, 45,179,218,226, 0, 93, 13,241, 82, -242,252,164, 98,214,193, 32, 83,152,160,168, 84,198,164, 44, 25, 14,114, 6,101, 73,103, 61,227,113, 69, 89, 72, 84,166, 25,143, - 50,180,206,201,181, 38,203, 20,135,163,156,218,120,118, 70, 57,247, 78,107,242, 66,161,133,226, 82, 89,114, 26, 60,151,171,156, -203,147, 33,151, 15,247,201,116, 70, 83,215,100,213,128,206,117,232, 32,152,173,102,156,175,150,124,124,190,136,179, 6,241,132, - 13,254,211,112,184,183,214,218,133, 19,221,133, 2,155,221,180,107, 73,153,150,177,180,214, 48,111, 29,171, 69, 77,104, 13, 76, -143, 47,220,197,194,218, 19, 22,211, 72, 21, 58,189,183, 9, 84, 79, 3, 89,248,173, 54, 75, 31,176,122,160,198, 54, 77,172,159, -195,252,255,161, 74,239, 81,220,125, 64,223, 78, 58, 92,156,133, 94,160,188,149,220,146,133, 5,172, 74,224,186,132,109,232, 18, -152,205, 54,209, 94, 53, 81,149, 98,208, 45,184, 48,177,239,171,239,222,198,180, 79,110, 50,189,201,146, 51,189,153,157,171, 68, -147,203,179,216, 17,241, 91, 1, 83, 19,171,209,212, 17, 41,148, 64,151,154, 90,194,185,243,140, 81,120, 4,199,174,163,146,138, - 22,207, 50,120,100,208, 92,108, 91,109, 66,242,247,107,165,200,211,188, 60,209,230,122,139, 90,147,196,120,250,174,131, 74,146, -195,189,160, 69,235, 55,222, 1,189,127,122,216, 10,234, 23, 70, 48, 9, 96,163,253, 70, 88,231,113, 0,143,183,159, 28,208,203, -100, 64,228, 21,148,137,163,223, 39, 39,210,193,229,195, 40,209,154,229, 73,201,175,142, 85,217,106, 25,209,243,189,138, 88,127, - 49,251,249,188,183,113, 67,183,221,230,255,219,235,218,216,248,181, 85, 29, 19,134,222,209,176,141,237,120,206,231, 17,129,127, -239, 54,156, 78,225,248, 12, 30,158,130, 11,116,161,133, 7,103, 96,107,222,152, 79,121,216,118,188, 59,187,207, 29, 7,111,204, -206, 88,205,207,192, 26, 78,101,244, 65,120,161,138,231,119, 74, 96,183,200,200,188, 99, 80,106,186,206,179, 43, 3,115, 29,169, - 92, 15,219,142, 10, 79, 94,100, 12,132, 2,103,200,117,198,157,144, 70, 72,222,192,238, 40, 6,171,206, 18, 60, 52,237,154, 55, -230, 53,167,198, 50, 83,130,169,107,176,153, 70, 42,197,251,117,203, 88, 11,124,200, 88,219,142,129,202,248, 27,157, 97, 21, 34, -234,126,222,181, 44,138, 49, 57, 1, 89,236, 48,212,154, 73, 54, 36, 83,138,188,218, 33,132,128,149, 25, 66, 6,140,214,184,188, - 96, 25, 44, 43, 93,114,111,109,121,216,174,120,184, 94,210, 9,137,111, 87,228,182,163, 54,150,207, 75,193,173,224,185, 92,175, - 56,174,198,236,173,166,204,144, 12,240,220, 86, 5, 47,179,230,196,107, 38,210, 80, 59,197, 80, 26, 22,157,195,232, 33, 52, 83, -234,225, 46,221,106,198, 44, 43,112,237,154, 73,166, 24,120, 71,165, 50, 70, 89, 73, 41, 4, 47, 9, 65,165, 53,101,240,140,133, -224,102, 33,248,229,198, 49,127,227, 29, 22, 31,221,142,227,201, 44,123,172,224,240,124,179,134,181,140, 40,240,155, 55,227,154, -114, 14, 20,236,223, 56,228, 96,103,143,249,124,202,123, 15, 31,240,249,207,190,200,120, 88, 32,164,231, 23,126,246,231, 17,179, -115, 40, 5,191, 60,155,241, 43,171, 53, 95, 93, 76,249,160,235,152, 37, 54,135,176, 32,130,163, 0,174, 15, 37,215,130,224,122, -158,113, 45, 83,188, 88,229,124,190, 44,153,250,142,175, 52,158,225, 64,227, 69,198,185,247,124, 56, 91,240, 15,154, 46,106,149, -244,207,208,114, 5,227, 33,131,223,248, 26,166, 53, 81, 95,254,153, 1,169,125, 98, 46,210,236,220, 38,234,106,114,105,202,212, -134,174,171, 82, 66,159,103,233,185, 72, 96, 94,177,213,197,235, 85, 63,125, 82,170, 11,201,171, 99, 43,209,248,228,160,254, 36, - 48,153,115, 17,241,106,193, 9, 73, 86, 22, 24,162,104,129, 71,115,115,156,211, 57,201,112, 56,164,208,154,172,172,168, 74,201, -238, 32,167,200, 75,170, 44,103,152,107,138, 66,178, 55,208, 12,135,154,224, 5,231, 43,203,188,117, 52, 77,131, 16, 2,157, 9, -102,211, 53,227, 60, 99, 55,207, 24, 15, 71,236, 76,134, 4, 41,217,153, 12,177,198,226,172,199, 99, 57, 62, 61,227,193, 98,206, -241,157,227, 40,247, 39,210,220,226,211, 58,201,105, 54, 85,185,125,194, 92,221,250,141,168,135,210, 41,121, 72, 52,171, 58, 1, - 26,234, 22,234,105,156,119, 36, 51, 3,234, 25,212,115, 88, 46, 30, 13,102,159, 22,208,212, 11,236,108, 1,166,127, 77,170,244, - 94, 78,247, 66,130, 87, 63,186,137,123,183, 65,161,103,122, 35, 52,211,211,206, 50, 21, 1,109, 50, 75, 21,113,207, 17, 77, 82, -177,222,166,192,214,165,202, 89,108, 2,122,150, 50,212, 11, 3, 5,187, 17,180,185,152,187,139,173, 17, 68, 66,138,247,179,244, -254,251, 82,179, 35, 58,220,109,117, 69,250,177,128, 78,234, 51,169,109, 30, 4, 92, 41, 36,115, 3, 7, 69,129, 11, 30, 43,161, -144, 18,237, 92,100,202, 11,193,220,137, 56, 79,239, 1,126,190,159,161,245, 65, 90,110, 85,162,108, 42,118, 82,117,155, 37,238, -124,145,228, 96,149,218,120,169, 39, 36, 62,153,120, 52,145,203,182,100,137,101, 90, 27, 23,226, 53,225,217,129,143,187, 71, 49, -104, 95, 58,140, 78,103,123, 7,241,239,181, 93, 74,138, 21, 92,218,131,157,253,141, 16,146,202,226,189, 57,157,198,164, 85,203, -141,229,237,183,227,220, 88,232,152,196,229,122,115,252,214,193,170,139,188,122,211,197,251,179, 94,197,247,166,129,121, 18,231, -152,173,224,236, 12,230,211,120, 47,143,239, 68, 33, 19, 41, 96,126, 12, 82, 34,164,231,104,114,137,194, 26,118,139, 12,103, 61, -185,119,204,189,164, 8, 22, 33, 5,167,198,243,126, 23,165, 92, 95, 25,230,252,242,131, 5, 82, 73,158,203, 36,239, 47, 86,188, - 58,168,184, 55,159, 69,151,185,249, 49,100,154,224, 60,161,243, 4,161,241,245,130,179,149,225,227,214,243,110,103,121,177,144, -220, 53, 53, 87,164,228,107,157,103, 97, 13, 3,169,248, 74, 8,204,179, 18, 92, 71, 32, 64, 89, 97, 93, 96,169, 75,118,139, 28, -139,100, 52,222, 71, 42, 65, 53, 28,226,243, 28,161, 74, 58,149, 51,151, 48,117,138,135, 42,199, 56,193, 74, 71, 51, 22,175, 50, - 44, 6,231, 60,115,157,243, 57, 17,248,106,107,248,162,232, 88,150, 99, 14,204,140,243,209, 1,131,166,197, 22,154, 27,161,230, - 61,147,115,168,162, 46,209,176, 16, 44,150, 29,168,140,117,103, 56, 46,198,148,171, 25, 62, 43,113,235, 37,181, 86,148,235, 53, -215,171,156,177, 46, 41,165,228, 72, 43, 6, 58, 39, 88,195,174, 82, 52, 30, 20,142, 43,185,231, 77,227, 19,180, 63, 21, 87,223, -180, 38,182, 91,238,125,242, 91,240,252, 23, 94, 97,118,214, 69,161, 36,107,120,255,141,183,248,242,207,253,191,124,237,157,143, - 56,195, 51, 18,134,213, 98,202,151,223,126,157,135,175,223, 2,105, 16,211,105,252,125,117, 29,237,120,219, 22,209,118, 73, 84, -198,146, 9,120, 99, 58,215,121, 0, 0, 32, 0, 73, 68, 65, 84,161, 16,148, 33,176,175, 4,215,117,198,110,150,115, 41, 83,228, -165, 70,123,201,131,213,138,183,141,229,151,235, 37,175,215, 29, 31,154, 58,185, 95,134,205, 94,159,229, 20,175, 94,231,115, 7, -215, 57,203, 61,246,238,244,153,100,209, 31,109,195,167,185,155, 76,115,244,158,206,219, 38,141, 14,181,253,125,105,175,243,253, -222,183, 69, 95,237,157, 37,123,230, 75,150,246, 54,185,121,230, 63, 93, 80,135,232,174,132, 74,148, 34,197, 11,151, 43, 38,121, - 65,235, 21,207, 13, 53,247,106,139,119,150,221, 66, 81,150, 67,134,101,198,238,168, 64,233,140, 97,153,115,237,176, 98, 50, 16, - 12,171,168, 45, 63,204, 21,109, 23,105,113, 81,225, 85, 32,133,143,182,130, 50,202,115,102, 2,206, 27,199,254,184,160, 26,150, -232, 60,231,228,120, 74,150,103,172,151, 51,100,240,252,204,215,223,143,224,157,126, 13,169,240,236, 85,172,222,210, 97,233, 43, -227, 94,213,205,251,111, 78, 50,123,234,129,177,241,130, 6, 31,219,131,245, 50,206,253,218,246,201, 0, 17,249, 29, 6,215,139, -196, 66,126, 50, 79,242,187,253,234, 41, 95,189, 7,122, 79,197,208, 91,114,188, 38,233,196, 91,183,161,115,108, 87,231, 90,197, - 74,149, 16, 3, 87,214,243,209,147,176,143, 49,169,130,139,226, 31, 23, 0,147, 62, 65, 80, 91,109,242,109, 32, 93,255,222,187, - 69,153,110,139,186,168, 30,165,126,201,236, 17,188,227, 35, 16,220,222,254, 52,209,239, 68,166,169,125,224,160,136, 60,221,135, - 78,177,151, 65,231, 2, 70, 72,242, 0,107, 41, 89,251,237,225,119,162, 84, 6,145, 90,240,169,122, 14, 79,160, 82,246,194, 19, -219,163,131,190, 52,247, 46,137, 29,165, 99,179,189,118,116, 47, 68, 20, 30,109,199,247,172, 12, 23,158,157,234,248,217,207,176, -115,227,136, 47, 94,127,129,207, 94,190,202,193,164, 98,111, 48,100,180, 55, 97, 58, 91, 70, 20,243,100, 2, 7, 99, 24, 95,226, -168, 44,121, 41, 47,121, 41,211, 92, 17,129,187,245, 50,130,228,124, 6, 7,123,176,179, 19, 29,175, 92,247,233,214,150,115,177, - 82,207,139,141,197,110,111, 35, 44, 84, 92, 11, 33,196,153, 99,211, 38,245,199, 38,126,172, 23,241,123,150, 43,184,127, 7,150, - 45, 76,231, 49, 25, 88, 45, 1,139, 9,130,171,194,114,207, 8,246, 84,180, 73,253,192,194,190, 14,236, 89,195, 91,198,243,176, - 54, 92,241,158, 3, 5, 31,118,158,151,117,148,240,157, 11,120,206, 89, 30,172,106, 94,174, 42,238,173,231,208,173,192,121,194, -124, 69,232, 12,190,200, 9, 90,226,219, 53,222, 91,124,187,230,227,198,113,164, 60, 15, 76,195,184, 80, 44, 87, 11, 58, 33,185, -107, 28,141,179, 4, 85,164,241, 75, 14,195, 29,130, 11,188,176, 51,100,164, 75,106,211,177,183,179,131,109, 44, 94, 15,240, 66, - 98,149,164,182,130,135, 30,206,144,172,242,130, 38,171,232,202, 1, 70,101,248,124, 4, 58,227,133,172, 98, 32, 37, 63,176, 59, - 98,237, 50, 14,204, 18, 91, 76, 24,155, 25,228, 67,178,174,225, 86,200,121, 49,119,172,140,163,202,162,214,142, 2, 90, 27,184, -151,101,200,213, 28,202, 17,147, 52, 67,191, 36, 21,167, 46,112,128, 99, 95, 72, 74, 41,185, 36,115,118,114,117, 33,136, 56, 84, - 25, 65, 8,206,157,225,235, 30, 56, 57,139, 34, 51,206, 60, 1,225,238, 31,107,197, 71, 53,207,217,233, 57, 44,167,143, 22, 41, - 58,137,127, 53, 29,239,191,115,155,175,255,242, 27, 60,252,165,143, 98,101, 43,227,158, 35, 86,171, 8,160,108, 29,162, 73,232, -118, 27, 41,146, 82, 10, 14, 66,224, 69,173, 57, 16,130, 61,169, 25, 40, 69,145,105,114, 45, 25, 72,193,204,123,102,235, 46,250, -184,247,163, 57, 33, 99,210, 37,162, 2,101,240, 30,123,231, 12,183,171,153,189,254, 46, 98,189,250,244,123,168,216,162,173,170, -212,189,236,131,114,175,176, 25, 32,250, 30,167,203,180,221,230,239,247, 48, 37, 34,128, 78,108,213, 86,129, 71,170,245, 79, 23, -212,181,222, 40,229, 20,146,163,215,118,248,248,173, 51, 6, 59, 25,135, 69,206,221, 58, 16,130,229, 82,169,104,125,206,115,135, - 67, 14,118, 75, 92,200,168,180, 96,127, 39,103, 50, 20,140,170, 28,239,147,228,102, 38, 49, 38, 90, 2,158, 44, 26,170, 66,225, -124,224,225,201, 10,219,212,228, 89,172,182,134, 85,129,247, 2,149,229,120, 31,184,116, 48,230,252,116,206, 98, 49,229,175,191, -119, 11,238, 78,227, 76,207,134,141,109, 39, 60, 91,245,208,239,203, 50,157, 95,106,219,125, 51,111,253,177,247,254, 63, 79,219, - 60,251,100, 65,242,221, 49,178,251,213,160,161, 61,203, 61,183,143, 38,214, 17,101,190,149, 88,100, 58,137,192,164, 64, 45,182, - 43,249,196, 41,239,101, 99, 67,136, 93, 14, 89, 93, 56, 41, 69,109,247, 46,205,200, 83,155,218,182,137, 54,152, 61, 26,196, 67, -216,154,169,139, 13, 8,174,179,143,242,213,123, 84,124,182,165, 92, 87,136, 71,121, 52,130,141, 96,145,202, 55, 82,144, 40,130, -119, 56, 41,105,131,140,167, 40, 21,181,151, 81,132,201, 64,166, 21, 75, 19,131,252, 69,192,118,225, 81,173,227,190,163,114, 97, - 79,107, 55, 85,122, 63,203, 15, 61,152,166,167,203,184, 71, 1,112, 50,141, 6,182,147,153,190,187,224, 83, 30,209,111, 8, 97, - 11, 68,248, 73, 70, 19,229,152,157, 27,215,121,245,224,136,113, 57,100,255, 96,159, 65, 62, 32, 24, 67,174, 20,235, 76,209,206, -215,176, 63,132, 75, 87, 57, 26, 12,120,181, 26, 51,214, 26, 45, 96,224, 59,180,111, 57, 61, 94, 69,156,195,100, 24,223,203, 28, -166,179, 79, 81,165,167, 57,106, 33, 35, 29, 32,139, 84,198,223, 48, 86,252,192,164,228,249, 82,241,193, 89, 27, 91,242,193, 63, -106, 17,220,175,125,147,230,147,109, 19,255,109,218,184,233,175, 18, 24, 15,207, 92,121, 90,169,120,123, 54,165, 53,130,251, 77, - 77,133,226,118, 16,212,171,154,214, 88,198,121,198,241,186, 99,100, 28,141,214, 28, 8, 48,171, 37,199,197,128, 87,114,201,219, -243, 37,235,122, 14,198, 16,112, 23,114,253, 97,246, 16,175, 6,120,229,241,109,139, 55,150,102,177,224,195,179,134,219,243,154, - 15, 79,167,220,111, 26,110,227, 35,157, 81, 15, 98, 48, 27, 31, 16,218, 8, 42, 29, 20, 21, 69,210,188, 23,163,138,243,117, 67, - 59, 24,144,103,154, 51, 47, 17, 82,115, 39, 8,110, 89,139,202, 43,150,121, 69,208, 89,244,186,207, 39,144,143, 40, 6,251, 92, - 43, 6, 92,157,236,130,200, 57,154, 20, 52, 89, 73,190,154,113, 76, 69, 22,106,138, 98,196,161, 52,220, 94,214,236, 23, 37,141, -177, 49, 87,178,129,219, 2,154,166,166, 40, 42, 14, 4, 12,149,230,185, 42, 67, 90,203, 43,227, 10, 37, 20,218,117, 28,170,140, - 61,149,145, 37, 48,104,147,196,151,156, 16,204, 3,124,109,185,140,207,129,173, 83,146,109,191,197,102,214,143,174,186, 39,235, -132,132,100,137,108, 82,146, 95,102,136,139,194, 34,126,143, 72,227, 29,129, 71,212, 77,164,204, 39,243,149,163, 74,114, 83, 72, -118,165, 38,151,130,137, 86,236,229,154, 12, 77,174, 36,135, 74,177, 11,204,188,167,113,118, 51,102, 18,177, 3, 23,178, 52, 66, -107, 91, 86, 31,222,137, 20, 50,239,163,104,205,167,217,127,251,209,147, 76, 64, 25, 45,226,154,101,171,144, 20, 73,116, 75,176, -225,253,135,237,107,145,246,191, 97, 21,181, 91,122,205,120, 69,220,255, 62,117,165,190, 45,253, 41, 60,228, 37,171, 44, 32, 86, - 29,211,181,229,222,210, 83, 35,184,170, 29,153,148,156, 47,151,188,124,117,159,162, 26,225,140,225,104,191,228,104,183, 96, 82, -169,200,231, 86, 34,250,119, 8,129,214,240,211, 95, 91,113,176, 3,171,218,208,218, 14,151,102,122,214, 88, 92, 16, 12,134, 5, -206, 5, 70,163,156,229,162, 35,207, 21, 77,211,114,182, 88,241,238, 91,239,197, 86, 96,109, 55, 96,178, 94,151,248,211, 4, 76, -191, 37,198,242, 29, 7,195,199, 80,119,223,205,224,254,204, 85,208,119,161, 59,208, 7,112,185,141,109,145, 27,113,159,222,246, -243, 66, 19, 89, 71,208, 86,166,226, 70,237,237, 6, 5,223,219, 25,170, 34, 1, 67, 68,156, 83, 74,145,130,119, 6,126, 29, 3, - 91, 89,110, 2,217,186,217, 82,164,235, 85,212,194,163,129,110, 59,160,235,100,222,162,229,198, 1,174,175,142,123, 81, 27,177, -229, 97, 78,226,150,247,246,165,200,152,249, 42, 69,161, 36, 51, 20,153, 16,248, 16,144, 42, 32,180,224,172,182,228, 90,209,110, - 75, 70, 26,255, 40,194,191,139,173, 59,218,232,149, 64,161, 31,173, 80,251, 4,167, 15,242,253,231,100, 15,186,179,155, 7,251, -113,166, 99, 95,173, 15,163,146, 87,228,245,187, 77,119,234,147, 42,245, 27, 55,248,226,205, 27,148, 89,201,225,222, 37,138, 60, -199,217, 14,107, 28,185,202,104,108,195,204,117,176,179,195,247, 29, 94,225,181,209, 37, 14,170, 1,141,181, 81,205,178,105,104, -187, 21, 15, 86,117,172,146,178, 4, 20,156, 47,227,115,248,105,170,244, 11,202,161,134, 50,231,218,176,224, 55,142, 11, 38, 42, -162,209, 39,165,228,195,217, 42,169, 42,202, 71, 85, 4,165,140,201, 88,153,197,107,161,100,220, 52,219, 52,207,151, 1, 86, 13, - 93,211,209,154,154,208,213, 44,156,195,205,143, 57,246,154,145, 51,236, 6,207, 73,219,113,108, 58, 20,130,155,227,156,176, 94, -131,214, 40,169,216,239, 26,238,173,107, 30,212, 43,172,169, 35,192,207,180,209,202,181,235, 8, 34, 39,172, 87,132,122, 77, 24, -148,120, 99, 99,176,119, 93,252,220, 98, 78,168, 87,132,233, 50,186,194,217, 6,116, 65,176, 22,198,187, 72,161,121,101, 52, 32, - 32, 56, 21,160,180,226, 65,158,211, 8,201, 87,140,163,203, 52,175, 11,141, 13,176, 76, 28,106,164,138,207, 80, 62,140,231,156, - 15,184,190,187,199, 36,203, 24,142, 70, 20, 8,206,157,102,156, 11,140, 46, 56,104,150,172,130, 66,248,154,115,163,121,126,167, -228,108, 89, 51, 25, 42, 22,235,192, 45, 33,120, 94, 40, 12,240,188, 18,236,141, 10,156, 23,220, 24,148, 28, 85, 21,227,108,192, -218, 59,174,102, 5,210,116,236,231, 57, 57, 2, 57, 40,169, 9,120,173, 88, 35,185,237, 29,111,218, 4,152, 60, 91,125, 50,150, -227,153, 71,190, 62,142, 52, 73,160, 48, 25, 69,150, 68,191, 71,167, 61, 78,116, 14, 97, 58,132, 18, 8,239,144, 62, 32, 21,100, - 82,112,128,228,178, 20,236,228, 25,149,148,220,172, 74,174, 22, 21, 87,138,156,163, 34,231,234,160, 98, 87, 75, 62, 92,119,180, - 18,130,210,132,196, 42, 10, 33, 2,154,195,178,133,179,179, 24,204, 71,195,232, 80, 39, 36,194,218, 79,103, 60,230,183,112, 39, -125,210,211,155, 48,245,202,155,193, 63, 74,195,237, 5,208,122,204, 82, 94,114, 97, 92,214, 39, 67, 91, 73,252,179, 7,245,158, - 58,165, 36,232, 97,148, 7, 60,158,163,158,159, 16,206,107,174, 95,175, 40, 50,203,135,115,195, 81, 41,184, 58,201, 9,162, 4, -111, 57,220, 31, 34, 69, 96,119, 32,216, 25, 22, 56,231,104,141, 67, 11, 88,119, 6,239, 4, 95,255,224,140,247, 63,186,195, 32, -207, 88, 45,150,204, 23, 75,214,171,154, 60,151, 12, 70, 21,121,158, 1, 10,103, 28, 69, 1, 77,227,112,193,241,254,253,251,204, -117,160,187,117,188,213,170,120,140, 42,246,105, 91,220,223,141,224,123, 1,172,243,159,152,160,254,170, 6,116,245, 93, 41,213, - 19,200, 73,110,141, 41,236,163, 25,202,246, 38,155,171,216, 38, 29, 12,145, 95,252, 44, 97,182,136,237, 81,231,160, 24,197,170, - 44, 36,250, 91, 16, 81,205, 43,171, 54,116, 47, 37, 55, 52,144,117,162,147, 92, 56, 36, 37,224,160, 44, 54,237,233, 46, 5,204, -109,103, 62,149,199, 68, 66,170, 13, 69, 48, 16, 91,181,170,167, 8,166, 81,128, 78,130, 57,201,122,148, 66,167,141, 34, 38,135, - 6,193,160,204, 88, 27,143,150, 34, 62,143, 38,144, 73,201,188, 55,108,184,248,251,126, 19,204, 93,136,215, 34,108, 81,250,182, - 91,240, 61,184,204,111, 85,250, 33, 41,205,117,110, 3,154,235, 85, 4,251,148,189, 99, 83,193,103,105, 3,232, 91,123,186,183, -139, 20,159, 72,115, 44, 94,122,137, 16, 44,215, 15, 14,201,243,156,206,116, 40,145,108, 72, 9,180,193,113,188,106,248,210,213, - 67,138,106, 55,122, 60,228,138, 65, 86, 96, 58,131, 20,142,135,179, 19,206, 62,190, 19,219,200, 75,147, 16,241,221,166,253,222, -107,100, 63,237, 25,236,191,222, 3, 63,117,129, 28, 14,248,157,151, 42,118,178, 28, 47, 4, 74, 64,215, 26,222, 57,111,146, 35, -152,217,172,181,190, 75,148,231,112,120, 53,174,177,174,222,140,204, 50,157, 68, 59,146,141,240,116, 30,175,213,131,187,169,117, -187,100,161, 52, 67, 60,210,117, 72, 2,133, 3,107, 45,227,193,144,206,116,248,229,154,157, 66,243,229,243, 57,206,180, 9, 39, - 99, 8,166,139,125,107, 27, 8, 82, 16,218,134, 32, 3,161,105,183, 93,182, 47,138,172, 96, 34, 88, 49,220,187, 15,195, 49,140, - 71,113, 45,234,104, 39,122,170, 51,188, 16, 92, 30,230,220, 91,117, 92,175, 50, 62,108, 45,151,180,230,190,243, 88, 36, 43,169, - 8, 34,128, 46, 19, 56, 42,138,232, 48, 28,115,105, 48,228,102, 38,121,241,112,135,182,181,168, 73,197,209, 32,231, 97, 23, 56, - 20,158, 85,174,105,219, 21,222, 73, 14, 10, 56,158,173,216, 27, 23,172, 59,207,185, 23,236, 2, 75, 33,201, 93,199,225,184, 96, - 71, 74,198, 74, 48,148, 25, 58,203,217,205,115, 14, 7, 35,240, 2,169,115, 86, 93, 67,200,114,234, 32, 88, 40, 65,155,101,220, -117,158,247,140,224,142,243,177, 91,178, 92,197, 81,152,247,143,219,108,125, 27,237,201,222,157, 49,205,155,125, 44,222,132,220, -224,124, 68,138,129,194,216,244,110,144, 34, 35, 35,160, 51,201,101, 45,217,209,138, 35,157, 49,210,154,129, 46,169,116, 70,153, -229,236,102, 5,198, 91,172, 53, 76, 21,212, 4,100, 94,224, 93,228,185,203,174, 35,172, 26,112, 9, 1, 63, 44, 35, 45, 78,134, -139,142,238,183,101, 27,254, 73, 64,233,139,175,251,205, 62, 96,211,124, 93, 37, 61, 13,107,226,216, 55,124, 26,244,251, 19,129, - 90, 9, 1,110, 36,131,207, 95,197,124, 56, 67, 93, 31, 96,131,103,250,238, 12,177,110,185,127,122,202, 7,203, 53, 59,250,156, -157,170, 64,229, 35,118, 70,146,163, 73, 69,221, 52,148,133,138, 0,145,206,197,153,185, 14,236, 13, 5, 85,149,209,186,142,233, -188,229,193,241, 3,140,119,104, 41,145, 89,198,100, 84,224,141, 97,185, 92, 81, 86, 37,211,243, 25, 93,211, 81,105,197, 27,247, - 31, 16, 86, 6,154,121, 82,183,106,191, 51, 77,244, 79,251,163, 23, 93,140,132,180,238,179,172, 39,217,168,249,111, 29, 67,191, -227,164,194,109,241,161,229,227,227, 19,249,232,199,183,188, 78, 9, 76,160, 83, 48,247,114,155,103,245,205,235,195,165, 69,169, - 50,194,206, 78, 68, 48,135,164, 38,167, 66,156,193, 22, 18, 66, 30,249,154,189, 87,124, 81, 36, 10, 88,153, 90, 81,126,179,128, -123,164,123, 79,147, 99,139,214,214,250, 71,145,213, 69, 30,129, 39,190, 23,131, 73, 21,253,182,211,153, 21,155, 74,223,187,168, -242, 36,185, 48,141,136,179, 52, 46,208,243,198, 57, 42, 41, 89,121, 8, 33, 32, 2, 44, 43, 25,171,101,221, 11,238,216, 77, 64, -207,213,134,146,231, 82, 50,164,244,133,132,236,197,245, 19,233, 30, 52, 41, 49,201, 68, 60, 72,151, 42,110,145,142,143, 45,111, -117,181, 21,220,243, 30,116, 19,175,247, 69,182,255, 45,198, 51,238,124, 73,117,245,136,138,232,243,160, 16, 12,134, 21,109,189, -198,250,142,186, 93, 50,204, 4,223,115,253, 38, 85, 85,177,146,138,194, 11, 36, 6, 92,199,241,114,198,215, 78, 78,225,193, 52, - 57,229,249,216, 6,116, 38,137, 3,145,186, 50,219,224,202,199,147,222,173, 17,138,146, 32,115,190,120, 56, 96, 47, 47, 24,107, - 69, 16, 18,227, 29,223, 88,183, 28, 79,163, 90,221,133,176, 80,191,110,123,187,231,213, 44, 2, 40,133,219,162, 7,110, 9,232, -180,233,231,219, 85, 52,179, 89, 45, 99,208, 41, 37,179,102,206,209,112,151, 83,211, 82, 8,193,165, 76,179,182, 29,187,206, 49, - 42, 43,254,254,195,227,152,168,180,179,200,181,183,109, 4,188, 42, 69,176, 38, 6,242,229,121,108,215, 58,247,104, 48,127,236, - 61, 38,170,115,194,217, 12,142, 14,211, 26, 43,200,117, 84,161, 84, 68, 13,251,179,214,114,181,140,250,235, 45, 30,107,124, 20, - 43,234,129, 83,147, 73, 92,115,121, 9, 50,227,112, 92,112,115, 50, 64,103,146, 44,203,233,148,164, 13, 48,145,138,187, 86, 48, - 86,154,219, 54,160,156, 99,218,121,148,119, 44,189,164,105, 45,149, 16,220,115,134,207,142, 52, 7,131, 10,225, 61, 59, 66,112, -165, 28,178, 18,130,177, 86,200, 16, 24, 13, 7,212, 1,186,214, 50, 42, 43,150, 72,214, 69,206, 84, 42,102,206,242,160, 17,204, -165,230,212,182, 56,103, 8,138,136,185,248,118,192,147, 79,220,134,108,194,219,116,143, 24,170,136,190, 5,191, 61, 81,115, 46, - 78,161, 36,232, 92, 49,146,138, 29, 41,184,146,107, 46,149, 5, 35, 85,196,173, 42,120,164,208,180,222,160,180,102, 41, 3,211, -186,102,156,101,212,214, 99,157, 97,164, 4,245, 98, 25, 19,186,243,121,212,134,207, 51,132, 22, 9,101,111, 35,229,237, 49,136, -206,167,126,189,112,141,253, 47,124,134,250,214,189,111,102, 65, 61, 30,232,219, 46, 57,133,118, 79, 28, 19, 63,209,222,236,171, -127,239,167,248,143,127,226,127,224,111,254,221,159,123,242, 1,172, 27, 24,148,172,223, 58, 69, 20, 26,119,107,193,186,245,136, - 28,126,240,251, 95,228,203,255,240, 1,208, 32, 41,185,123,118,159, 32, 53,207, 95,126,137,119,238,157,241,202,149, 9, 47,222, - 60, 98,181,106,121,231,131, 7, 96, 61,247,167, 45,139,117,205,221,143, 79,152, 45,215,156,181, 75,150,214,208,153, 64, 86, 72, -118,179, 33,167,199, 51,254,212,191,242,187,248, 63,127,238, 77,190,113,235,132,182,107, 57, 95,213,252,181,159,248,215, 81, 74, -226,211,188, 85, 74,137,148,130,201, 43, 63, 66,103,126,149,145,225,189,184,137,216, 70,193,109,251,180,127, 27,137, 65,127,131, -244,119,128,108, 87,143,189,111, 31,235,183,215, 3, 75, 7,148,192, 45, 79, 82, 84, 26,148, 23,235, 34, 2,158, 44,188,243, 97, -100, 74,168, 50,118, 79,124, 52,202,192, 38,138, 90,158,116,225,109, 66,138, 23,163,200, 36, 80,101,178, 7, 77,188,105,183, 69, -235,235,131,123,191, 14,117, 58, 46,107, 31, 61,199,124, 11, 64, 38,100,148, 28,246, 34,126,190, 87,108,235, 91,216, 89,186, 88, -193, 61,202,149,135, 11,117,184,117,202,152, 59, 31,232,130, 68,182, 2,143, 75, 35,137,116, 45,122,197,184,158,146, 7,177, 29, -220,177, 53,219, 79, 92,244, 32, 54, 93,132,254,107, 62, 89,173,246, 84, 55,107, 55,179,247,167,101,155,222,166,132,193,166,243, -121,134,219,217, 44,120,240,230, 71,148,159,147,156, 46, 87,188,114,245, 26,166, 61,163, 44, 52,160, 56, 24, 76,248,204,209,101, -202, 65, 9, 34,227,250, 96, 72,107, 28, 31, 62, 92,240,229,213, 20,191, 92,110,116, 7,214, 22, 6, 26,202,113, 60,134,198,197, - 64,223,175, 7,251,148,181,158, 0, 73,180, 29, 20, 57,215,247, 53,151,133, 96,234, 28,131,144,225, 68,224,107,181,225, 27,203, - 84,169, 60,105,253,150, 99, 56,184, 4, 15,239,108,198, 47,253,247, 93,172,207,173,117,177,110,128, 38,206,123,231,199,241,103, -190,248,121,102,139,251, 92, 26,236,178,240, 29,111,156, 47,249,222,157, 67, 36,134,166,171,185,150, 73,110, 55, 45,194, 68,117, -177, 48,157, 69,251,214,135,167,241, 25, 95,156,130,148,113, 62,254,216, 43, 60,233,255,235, 6,116, 3, 31,188, 9, 87,159, 3, -165,105,149, 38, 8,133, 73,157, 37, 45, 5,239,173, 26,148,132,171,121,193,109,209,224,154, 36,113, 76, 25, 25, 0, 89,122,206, -148,230,210,176, 36,228,177,187, 81,228,160, 76, 60,111,155, 43, 70,165,226, 23, 30, 46,216, 45,134,252,109, 19,216,149,150, 42, - 40,174, 54, 11,116, 57,166, 2,174, 41,141,195,177, 19, 60, 50,175,200,117,198,217,106,193,181,225,152, 78, 75,206, 91, 75,179, - 92, 51,153, 76, 88, 10,135,145,209,193,236,220, 90, 76,145,115,214,105, 78,164, 99,109, 58,118,243, 1, 39,229, 16,155,207, 96, -188, 15,237,253, 95,213, 45, 56, 96, 17, 90, 19, 82, 27,252, 98, 82,101, 45,172,107,234, 14,186,231, 52,107,167,152,183,134, 98, - 0, 54,116,104, 10,144, 26,227, 13,185,210,236,120, 79, 48,150,215, 6, 3,222,237, 26, 62,151, 59,222, 93, 59, 86,222,115, 77, -192,157,135, 39, 81,119,190, 53,132,176, 6, 27, 16,198,198, 46,204, 19,238,185,120,202, 26,120,234,235,195, 59,156, 73,241,244, -174, 86,175, 32,217,175,235, 79,240,187,248,166, 39,101, 56, 40,249,252,103, 95,224,231,127,241,141, 39,236,237, 54,129,228,146, -174,119,183, 2, 87,161, 94,221,199,191,125, 15,117,243, 26,191,240,143,238, 80,221, 40,169,178,146,159,125,231,152,207,220,104, -216, 47, 75,222,124, 39,231,232, 96,135,197,110,193,206,100,192,235,111,223, 98,186,152,177,110, 29,153,232,248,250,155,247,248, - 59,111,125,200,165, 74,178,183, 51, 68,134,152,253,223, 59, 55,120,235,216, 29, 15,120,238,112,135, 95,121,231, 22,239,221,123, - 72,161,115, 38, 85,201,143,254, 59, 63,201,255,243,238,251,240,254, 3,104, 22,252,249, 63,253, 39,121,238,232,210,175, 65, 64, -231, 9, 1,253,113,148,123, 31,108,248,100,239,243,222, 82,115,187, 10, 17,252,218,188,190,213,177,109,223,251, 39,253,187,216, - 50, 84, 41,199,169, 61, 38,162, 9, 75,207,197, 44,114,232, 68, 4,119,244,232,253, 97, 9, 77, 74, 60,180,220, 80, 51, 42, 29, -177, 17,217, 78,172, 96,237, 34,122,176,171, 60, 86, 76, 93,189,209,124,239,215,225,246, 2, 87, 9,132,114,145, 54,247, 85, 93, - 10,232, 93,242, 83,238, 82,224,191, 64,143,203, 77, 64, 52, 61, 42,117, 43, 65, 11, 36,212,105,128,208,225,253, 86, 85, 45,182, - 42,116,111, 55, 26, 6,164,249,111,149, 71,160, 79,112,143,242,216,189,221,252, 91,132, 77, 66, 80,234,216,222,253,164,246, 78, - 78,236, 72,101, 41, 49,184,118, 8, 31,222,223,200,222, 58,255,201,247,182,105,248,232,131, 59,140, 46,239,177, 51,205, 24, 23, - 37,171, 58,218,196, 30,237,236,177,119, 52,161,110,162,216,206,170,109, 88,180, 13, 46, 3,191,154, 65,151,180,167,243,173,107, - 4,113,148, 33,154,248,247,215,137, 13,225,158,226,121,111,211,215, 83,192, 13, 66,208, 4,143,246,129,247,186,142,179, 14,222, -169,211,207, 21, 2,230, 91, 26, 4, 33,174,181,252, 11,175,208,221, 59,251, 22,137,235, 99, 9, 95,159,144,246,246,150,239,188, -133,253,220,107,156,213, 53,132, 21, 72,197, 47,222,125,143,188, 28, 83, 9,193,108,126, 6,210, 19,154, 8,146, 19, 85, 9,171, -134, 32, 53, 60,124,152,152, 48,221,183, 8, 60,143,189,230,167, 96, 87,145, 45, 96, 1,149,211, 1,183,229,152, 35,215,226,170, -138,214,121, 94,173, 74,238,117, 29,206, 38,136,186, 77,244,217,178,188,120,142, 46,233,200,216,176, 66, 48, 46, 53,214, 5,116, -225, 81,121, 78,221, 90, 78,219, 64, 53, 44,121,195, 74, 14,133,160,238, 26, 68,107,120, 32, 38,236,153,134, 74, 72,174,236, 14, - 41, 77,141,148, 26,135,164,234, 90,118,118,119,185, 91, 55,228, 78,113, 56, 40, 24, 82,242,208, 7, 70,187,151, 56, 63, 62, 6, - 37, 88,171,156, 46,192, 10,144, 33,176, 18, 18,135, 36,232, 44,170, 16,142,151,176, 78,201,221,175,202,203, 62, 26,194,116, 79, - 51,142,235, 63, 8, 64, 26,110,157, 46, 81,151,225,197, 82, 51,109, 59,142, 84, 73,235, 28,173,179, 84, 42,231,196,116,212,193, -178,159,231,204,172,225, 32,215,172,154,142,151, 67,203, 7,179,154,251,103, 11,164,179, 4, 27, 63,132,141,231, 19,236,163, 88, -182, 79,188,231,207,242,122,255,246, 19, 18,215, 18, 6,195, 4, 16, 77,186, 14,166,123,166,208,148,246, 67,201,199,191,244,215, -144, 82,242,225,151,255, 42, 0, 95,250, 29,127,152, 15,110,221,229, 63,248, 19, 63,198,191,249, 47,255, 94, 14, 15,118,249,153, - 95,248, 26,255,210,191,255,103, 57, 62,155,241,195, 63,244, 61,252,143, 63,241,239,242,215,127,254, 23,249, 23,126,219, 15, 34, -149,226, 79,254,248, 95,224,123,127,224, 53,254,192, 63,241,155,185,124,184,207,159,251,171,127,139, 63,247,151,255, 47,254,232, - 15,125, 63, 82, 88,180,254, 62, 94,127,243, 35, 86, 77,199, 15,126,254, 5,190,231,139, 47,243,119,190,252,151,120,248,250, 91, -252,200,191,248,187,249,183,254,232,239,225,198,229,125,190,254,241, 61,126,236, 39,127,138, 95,126,255,109,238,254,165, 63,141, - 64,240,147,255,246,239, 3,224,143,253,217,191,204,207,190,253,141,216,253,156, 25,176, 53,255,252,239,254,173,252,190,223,243, - 67,124,207, 15,255, 17,126, 93, 95, 61,184, 65, 60,107,208,220,162,242, 92,180,152,121,118,141,225,103,237, 40, 60,237,111,107, -251,108,129,253,105,199, 93,150,177, 10,239,221,212, 84, 1, 86,199,207, 55,117,148,142, 29,148,155,227,200, 52,180, 73, 26,182, -136,150,138,145,247,223,198, 25, 41,117,148, 24, 85, 62,182,233,251, 42,221,177,161, 61,125, 19, 56,110, 11, 33,239,205,166, 53, - 29, 82,171, 90,166, 28,190, 15,232, 50,196, 68, 99,144,127,115, 75, 56, 35, 30,135, 77, 32, 65,147,170, 97,209, 87,228, 91,237, -124,177,245,248, 54, 9, 73,232, 83, 96,237,103,245,117,226,223, 23,217,214, 24, 32, 5,116,231, 82,162,144,254,118,174,210,239, -217, 10,148,166,217, 32,226,183,129,114, 90,196,121,113, 86,114,233,242, 1, 39, 15,103, 48,235,210, 40, 65, 38,239,132,173, 29, -102,123, 45,133, 21,100, 7,188,118,245, 38, 90, 58, 6,163, 17,174,169, 81, 74,179,127,120,137,178,204, 81, 69, 96, 58,111,168, - 93, 71,231, 44,199,245, 60,110, 44,139,117,252,176,102,179, 86,157,221,128,254,164,127, 74, 15,240,177, 53,185,181,214,239, 28, -175,120,126, 60,228, 78,211,128, 47,121,167,115,155,243, 21,114,147, 32, 92, 36,235, 53,221,219,239, 70,250,104,219, 61,161, 66, -127,108,221, 63,254,249,190,149,219, 76,152, 31, 31,195,184,141, 5, 75,178, 36,237,128,206,172,226, 8,193, 68, 14, 52, 64, 56, -153, 70,175,245,166,217, 84,255,197,147,157, 2, 63,113, 99, 95, 55,177, 61, 61,174,226,249,237, 94, 6,123,200,131,241, 78,212, -214,215, 37,239, 44,234, 77, 23,168,255,123, 66, 70, 4,246,112, 0,157, 71,101,158,202,121,156, 18,204, 93, 96, 80,102,152,198, - 96, 8,136, 66,179,178,158,147, 96, 41,131, 98,145,105, 6,114, 68,147, 91,196,116,206,160, 24,162,186,134, 82,192,104,178,203, - 14,130,105,211,161, 6, 21, 31,206,230,188,178,183, 71, 99, 13,171,214,113,234, 12,207, 15, 7,156, 19, 56,216,223,231,214,236, -156, 66,230,156,174,187,200, 0, 17, 48, 8,158, 70,107,180,206,112, 34,131,225,128, 32, 10,112,205,147,241, 61,219,157,206, 79, - 83,132, 93, 36,105,143,221,243, 94,175,201,123, 66, 90, 87,161,179, 4, 3, 31,157,231,252, 3, 47, 40,145,236, 23,138, 12, 80, - 50,103,233, 13, 74,106,238,172,107, 78, 9,104,165,144,206,162, 75, 77,214,193,229, 61,193,195, 85,234, 2, 52,117,106,121, 63, - 58, 90,249, 38, 12, 5,143,226, 91,191,109, 76, 65,145, 67, 89,196, 2, 72, 8,112, 42,225,109,252, 39,198,133, 71,102,234, 33, - 4,156,115,156,156,205,248,254, 31,249,215,248, 47,254,235,255,153,243,217,130,159,248,143,254, 13,126,251,111,254, 18, 63,250, -135,254, 61,254,204,127,245, 63,241, 99,191,255,119,241,165, 87,159,231,111,253,253,175,242,135,254,185,223,206, 23, 94,123,137, -255,242,191,249, 43,252,137,159,250, 43, 92,175,198,252,135,127,252, 15,242,191,252,181,159,230,143,255,103,127,145,143,166,199, -252, 39,127,228, 15,240,231,254,187,255,149, 92,214,124,254,133, 27, 76, 70, 67,254,238, 79,255, 60,191,243,183,124,145,151, 95, -184,202, 31,249, 79,255, 91,254,239,127,248, 14,127,242, 15,255,179,252,254, 31,249, 65,126,255,159,248,179,252,169,159,252,139, -252,150, 47,124,134,223,254,242, 77,254,234, 95,250,223,113,251, 59,116,173,225, 95,253,207,255,123,254,194,255,241, 15, 88,173, - 86, 88,103,120,227, 87,238,192,116,202,205, 23,174,242, 55,127,234,207,240, 7,255,216,159,230,205,119, 62,250,181,169,210,241, - 27,177,148, 39, 61,210,129,103,243, 40,239,129, 61,126,203,145, 43,244,173,216,239, 70,146,225, 63,217,114,246,153,125,212, 31, - 27,248, 95, 24, 28, 84,233,148, 85, 2,193,117,144, 87, 96,151, 49,130, 21,101,188, 22, 85, 1, 85,149,134, 93, 58,130,210,134, -131, 24, 64, 93, 74, 14,156,219,200, 32,154, 5,200, 50,166,196,222,196,160,218, 3,227,202,252,209,141, 64,234, 77,128,233, 9, -180,206, 37, 48,158,216,204,209,173,216,180,188,123,106,140,220, 66,196, 43, 25, 55,218,114, 16, 31,168, 94,198,214,218, 56, 79, -105, 76, 12,166,150, 77, 80,251,255,186, 59,243,216,202,174,251,190,127,206,114,151,119,223,198,101, 54,105,180,203,178, 36,203, - 82,237,120, 81,188, 1,110,155,218, 13,218, 24,112, 19,184,168,255,180, 83, 32, 64,209, 38, 5,130, 2, 6,138,180, 64,227, 46, -105,141, 26, 40,138,182,169,155,182, 6,154,216,109,224,164,177, 93, 27, 65,108, 3, 74, 17, 91,134, 20, 69,171,173, 37,150, 53, -210,140,102,134, 67,114, 72,190,229, 46,103,233, 31,231, 92,222, 75,206,140,228, 25, 73,142,209, 7, 16, 36, 31,249,222,187,203, - 57,191,245,251,251,126,235,232,169, 91, 36, 61,190, 35,175,176,190,119,189, 84, 36,138,112,157,156,234,129,102, 96,191, 34, 70, - 4,195,212, 33,232, 57, 76,118,209,239, 73, 87, 53,139,237, 69, 16, 52,106,103,228,137, 61,121,209,151,233,117,221,122, 74, 52, -119,223,247,118, 38,195,130, 99,227,117, 82,165, 25, 20, 5,227, 65, 65, 83, 55, 12, 70, 5, 94,104, 68,170,105, 28, 56, 28, 79, -109,109,211, 8, 9, 23, 46, 4, 10, 88,211,116,199,236,162,212,166,142,228, 49, 45, 81,149, 10,162, 76, 7,122,171,253, 62,161, - 86,113, 84, 17, 94,108, 96,203, 43,182,132, 15,193,138,139, 85, 20,235,130,194, 85, 95,200, 40,209,176, 88,118,204,145,237, 61, -234,143, 26,181,243,238,142,131, 65,114, 31, 75, 82, 45,195, 49, 14,179, 72,128, 20,143,115,123, 35, 16,222, 72, 21,232,105,181, -134,205,109,152, 14,195, 26,216, 62, 23,208,221, 89,250,170,153,250,149,177, 47, 13,204,150, 97, 31, 12, 70, 1, 27, 32,117, 28, - 9,171,194, 57,167, 49,168,107,215,133, 82,221,244,135,169,104,140, 99,109, 92,176,174, 36, 74, 73,246,106,143,148,130,165, 23, -156, 89,212, 44,113,204,107,139, 84, 10, 82, 77,227, 61, 78, 73,142,166, 41,141,148,220, 49,144,140, 17, 88, 47, 25, 74, 65,145, -103, 44,107,195, 90, 81,176,181, 44,241, 90,147, 41,201, 40,205,184, 96, 26,214,117,194, 5,107,184,101, 52,225, 84, 89, 50, 72, -161,170, 45, 53,130,165,173,216, 50, 13, 66,106,106, 83,117, 99,169, 91,219, 29, 51, 98,223, 97, 37,170,107,169, 93, 45,121, 81, -111, 13,137,120,111, 69,143, 30, 66,120, 31,116,212, 33,140,186, 57, 88, 36,138,163, 90,145,105, 73, 74,104,159,205,156,101,219, - 90, 46, 56,203, 2,129, 21, 30, 33, 4,210,251, 64, 75, 46, 37, 39,134, 41, 34, 81, 44,147, 1,216, 6,233, 65, 28, 2,199, 93, - 65,134,235,218,123,236,237,254, 77,211, 14, 84, 42, 68,216, 99,175, 2, 2,191, 36,158,126,239,187,238,229, 27,127,252,208,254, -239, 55, 92,119,148,191,247,137,143,114,251,253,127,155,243, 23, 46, 2,240,187, 95,125,128,143,253,205, 15, 66,185,199, 79,255, -165,183,240,111, 63,247,191,248,230,255,125, 2,117,251, 58, 27, 91, 23,249,250,131,143,240,123,143, 61, 70,189,156,115,246,249, - 77,118,102, 11,236,162,228,219, 79,158,231, 19, 31, 91,225,143,254,236, 73, 62,242,115,239, 71,107,205,135,126,229, 55,216,220, -216,227,216,218,136, 79,253,210,223,226,190,159,251,135,188,180,189,139, 51,154,175,125,235, 65, 62,249,177,159,133, 69,201,253, - 55, 93,207,215,190,243, 8, 79,109,158, 39,145,146,199, 47,206,200,178, 32, 50,161, 71, 5,191,243,217, 79,241,239,127,251,171, - 60,240,208, 19, 63,222,186,181,239, 1,176,250,229,119,119,149, 61,113,219,150,220,123,128,179,215,181,131, 96,174, 0,161, 48, - 63,106, 4,115,233,115,222,193,112, 26, 70, 7,163,100, 41,178, 9,229,114, 83,129, 30, 71,173,110, 7, 43, 3,152, 22,161,228, - 40, 36,140,178, 64, 6,147, 8,210, 36,167,102,121, 41, 97, 79, 50, 14,239,237, 0,105,186,158,125,109,186,126,122,107,200,197, -229, 90, 32,186, 3,149, 65,112,198,109,217,221, 68,133,188, 36,143,206,216,133, 13,212,146,187, 12, 90,227,145,192,162,233, 0, -136,137, 14,165,116, 45, 2,130,185,142,199,236,234, 46, 92, 23,135, 67,244, 24,168, 45,234,174, 50, 80,153,144, 69,215,241,127, -147, 94, 9, 63,139,206,223,134, 44, 60, 4, 30, 61, 71,116,224, 28,218,177,191,121, 55, 54,217,196,118,134,237,129,104,132, 12, -148,178,237,253, 94,191,137,227,171,235,104,169,217, 89,236,145,231, 57,171,249,144, 36, 79, 73,101, 26, 49, 89,134,201,116, 0, - 18,230,203, 5,183,140, 87,241,102,198,247,198, 67,216,220,233,174,107, 59,158,211,158, 99,139,177,168, 77, 36,102, 50, 87,118, -126,109,150,221,148, 48,111,129,156, 45, 72, 49,146, 7, 73, 21,112, 22,182, 60,152,229,183,159,173, 47,131,169,208,241, 92,205, -161, 62,187,190, 76,214,119,113, 22,152,245,210, 54, 88,216, 11, 96,186,202,192,169, 51,193,145, 22,121,144, 0,157, 47, 3, 59, -228, 43,100,232, 87,149,113,170, 37,252,249, 11,225, 60, 7, 41, 52, 11,152, 28, 15,253,104,107,160,148, 93,123, 72,200,174,244, - 26,191,167, 89, 78,125,238, 34,230,196, 26,110, 94, 51, 28,166,224,100,160, 76, 80,158,166,129, 97,150,176, 83, 53, 88, 37,112, -105,152,114, 88,120,207,170, 75, 56,147,228,164,110,193,221, 89,202, 66,192,145, 68, 65, 82,224,234,134, 65,154, 4, 21,100,161, -152, 11,199, 48,205,152,153,154, 19,163, 1,103, 22, 75,142, 15, 6,108,151, 75, 26, 26,156,183, 88,149,131,153,225, 26,131,202, - 71,152, 34,202,151, 14,199, 65,147,163,127,111,156, 60,152,189, 43,249,163, 87, 38, 15, 93,247, 3, 25,113, 79,176,208, 43,185, - 63, 94,232,154,146,229, 30,124, 77, 8,172,132, 66, 44, 56,150, 5,194, 35, 43, 5,115,165, 3, 75,164,245,104, 37, 24,106,205, - 0,197, 12, 65,158, 75,134, 72,142,100, 21, 79,178, 2,179, 57,126,209,224,125, 40,199,247,209, 46,254,208,207,175,205,100,155, - 32,109,188,175,191, 30,136,122, 94,237, 26, 93, 98,177,223,243,206,123,248,244,103, 63,191,255,251,135, 62,248, 46, 30,126,244, -233,125,135, 14, 48, 29, 21,156,223, 14, 36, 19,247,191,253, 78,254,201,103,254, 43,140,114,236,243, 23,120,251, 93,111,226,155, -223,126,146,157, 23,246,152,222,182,194,123,223,255, 86,190,253,240,247,112, 82, 51,190,110,192, 93,183,223,198,251, 86, 71, 76, - 71, 5,119,254,141,127,192,238,172, 98,116, 52,227,175,254,244,125,100,169,230,161,223,251,215,241,106,120,164,144,124,241, 15, -190,137, 7,222,115,223, 29,124,250, 55,126,139,157,231,126,176, 15,184,170,226, 92,241,175,255,242,199, 49,214,241,235,255,249, -127, 7,135, 66,253,198,250,115, 67, 40, 89,183,151,207,186,131, 78,197, 93,195, 29,237, 27,165,170,254, 49, 5, 38,230,218, 3, -135, 68,134, 50,187,237, 59,116, 31,174,191,175,162, 99, 95, 66, 54, 8,255,187, 50, 10, 32,170,149, 33, 89,150, 81,237, 85, 76, - 38, 3,202,210, 99, 91, 62, 99,116,200,202,171,101, 64,176,103, 61, 16, 90,157, 4,144, 83,109, 46,189,102,109, 73,190,229, 79, - 86,189,123,144,137,110, 57, 24, 31,126,247,209,193,139, 24,152, 16,203,244,101,236,135, 15,243, 78,188,196,187, 96, 92,117, 68, - 62,150, 38,150,200,155,208,251, 78, 85, 96, 95, 59,236,204,219,223,219,185, 83, 31,157, 85,105,194,235,124,204,238,211,126,159, -188,103,229, 92,203,104,101,186, 74,132,171, 35,213,109, 47, 72, 49,254,224,186,107,151, 97,227,122,216,205, 62,136, 51, 84, 52, -110,184,237, 36,179,106, 73,158,104, 50,149,178, 87,206,209, 8, 50,173, 81, 67,168, 23, 53,211, 35, 19,118,247, 26, 22, 85,195, -238,178, 66, 99, 40, 27, 56,178, 58,229, 66,185,132,151,202,144,173,239, 7,161, 38, 4, 33,210,117,125, 84,173,187,210,249,171, -225, 53,148,233,136, 56,218,160, 49, 21, 65, 4, 3, 96,135, 80,173,241,166,123, 77,223,192,239,115,255,167, 7,251,142, 2, 72, -167,112,235, 42, 60,251,220,101, 2,217, 58,242, 18,196,160, 46,199, 28,146,165, 0, 0, 19,212, 73, 68, 65, 84, 25,132, 15,187, -176, 13,213, 94,168, 68, 93,220,137,228, 74, 85, 88,131,197,235,212, 43,174,234,240,249,207,191, 0,199,214,122, 99,195, 50,220, -243, 74,198,209, 69,194, 40,103,108, 73,164, 66, 83, 11,184,213,212, 84, 58,225,135,103, 54,184,101, 60,100,161, 37, 59,101, 67, -170, 85,192,163,106, 25,240,186, 89,144,153, 93, 36,158,129,147,148, 90,145, 13, 28, 55,214, 21,168, 49, 27,222,146,121,199,197, -218,144, 36,154, 36,207,216,174, 42,174, 19,154,185, 55,228, 42, 65,226, 16, 73,138,179,150, 53,157,176,225, 26,106,149, 48, 73, - 60,167,155, 26,105, 75, 18,157,144,160, 40, 75, 19,156, 81,158,195,145,181, 96, 11, 90,109,132,182,197,213,199,175, 92, 77, 73, -122, 52, 13,247,231, 74,118,210,183, 83, 94,174,151,183, 24,240, 37, 75,169,248,242,210,114,231,177, 33, 43,118,193,170, 77, 25, - 39,193,103, 36,105, 18,114, 52, 33,240,113,124,104,168, 37, 30, 69, 35, 5, 43, 90,177,146, 40, 30, 17,138, 74,215,120, 83,226, -154, 6, 81,155,253,185,121,119,153,204,252, 53,149,225,189,129,157,157,176,119,165,123,213,126,250, 37, 78,253,150, 27, 79,176, - 58, 29,243,232,147,207,237, 63,119,116,125,149,189,217, 65, 18,129,143,252,245, 15,240,155,191,243, 85,110,187,253, 22, 70,195, - 1,143,253,240,165, 8,204, 17,124,224,254,123,248,231,159,251, 18,222, 59, 70,197,152,123,174, 63,201, 3,143,125,159,119,188, -253, 24,223,127,161,230, 45,183,223,192,167,255,251, 55,120,247,155,143,242,233, 95,254, 56,255,225,139, 95,226,241,103,182, 89, - 95, 25,243,149, 7,254,148, 95,248,213,207,226,189,197, 55, 30, 63, 47,241,245,156,155,111, 60,206,234,116, 20,142,203,214, 80, - 0,197, 4,134, 67, 62,124,255, 61,124,242,231,127,134,183,253,194,175, 6,231, 80,164,193,184,191,209, 64,185,125,159, 30,127, -232,247, 59,175,213, 89,190,161, 60,238,209,249,213,230, 42, 62, 71, 95, 33,203,223, 79, 9, 15,238, 72,161, 58,112,156, 34,128, -211,178, 20,142,142,195,232,206, 56, 35,215, 9,206,195,112,117, 66,109, 13,121,150, 34,164, 97,111,105, 72,144, 84,152, 72, 27, - 90,195,142,233,156, 49, 38, 34,172, 27,240,101,119,124, 66,135, 32,175, 53,222,135, 37, 75,219,254,185,142, 30,119, 63,203,238, -101, 64,237,107,219,146,246,230, 44, 56,146, 36,102,132,146,192,106,166,162,227,109,226,255,238,163,220,101,216,124,109,112, 32, - 35, 65, 19, 61,208, 99, 75,132,211,127, 93,155,229,183,239,153, 69,105, 88,161,218, 3, 63, 4,170, 59, 52, 30, 86, 19,156,222, - 62,102, 32,222,146, 54,232, 58,188, 7, 90,199,171, 82, 94, 58,117,154, 27,238, 89, 3, 96, 94, 46,209,137,192, 52, 13,206, 86, - 84, 75, 79,154,231,212,141,165, 24,103,156,218,188, 72,109, 26,110,212, 57, 85,230,185,119,120,130,167,202, 37,223, 91, 84,112, -118, 43,192,173, 91, 71, 87,155, 88,133,208, 93,133,162,117,232, 87, 2,206,181,207,215, 6,146, 26, 92, 26,239,109,188, 55, 69, -168,200,169,241,144, 19,169,227,244,198, 2, 22, 59,151,178, 8,238,247,221, 15, 33,225,189,129,249, 38, 60,187,121,249,236,218, - 52,112,113, 47, 8,215,136, 36,148,194,215,215,195,243,167,231, 1, 16,220, 24, 96,212,177,128,165,250,245,221,158,229, 30, 92, -104, 34, 67, 96, 92,135,131,149, 48,151, 94,214, 17,160,172, 88,115,142,147,131,156,117, 9, 79,204,151, 28, 79, 37,190, 42, 57, - 85,150,108,160,208,123,115, 40, 6,108,249, 0,144,195, 6, 37,192, 34, 81,108, 11,139, 51,176,240,150,155, 11,205, 81, 33,168, - 42,201,186, 20, 44,154,146,163,105,202,249,237, 25,183, 14, 37,167,231, 53,215, 37, 41,187,182, 97, 37, 73,217, 49,134, 66,105, -230,166, 97,168, 18, 54, 49, 52, 22,150, 77,195, 89, 39,176, 74, 50,119, 26,101, 5,165,143,129,126, 86,192,176, 6,113, 49, 34, -245,229,190, 62,249,126,217, 61,185, 74,251,103,221,193, 53,117, 57, 28, 67, 59, 69, 36,101, 32, 1,138, 69, 54,111, 12,126, 62, -199,169,138,167,206,195,201,105, 74,230, 3, 46,101,152, 15, 40,109,131, 80, 9,185, 86, 56,227, 81, 42, 16,242, 52,214, 82,232, -140, 92, 25, 6,192,155,110,204, 57, 83, 86,252,176, 44,249,225,102,133, 45,231,216,101,117,192,225, 58, 94,135, 76,125, 63,129, -138, 36, 94, 50,237,104,101, 95,225, 90, 29,168, 89,158, 56,186,134,181,142,209,112,192,120, 24,234,143, 79, 61,243, 60,239,123, -247,125,220,113,235, 13,164,137,230,159,254,163, 79,146,101, 41,191,253,251, 15,112,255,253,111,229,225,199,159,197, 8,141, 7, -110, 58,121,140,225, 96,192,159, 61,242,125,214,223,188,202, 75,223,123,153,119,191,237,205, 60,121,246, 69, 30,124, 98,131,119, -221,121, 19,207,189,180,193,191,251,221, 47,242, 75,255,236, 63,241,145, 15,190,147, 27,142,223,130, 83,154,199,158,125,145, 15, -252,212,221,252,212, 91,110,195, 27,207,234,116,192, 39,255,206, 95,161,152, 12,123,199,149,134,227,178, 26,180,230,186,181, 41, -159,255,212, 47,242,137,127,241, 95, 56,189,177,211, 33, 4, 61, 63,158,135,137,206,219,180,142,210,116,207,253,164, 61,132,142, - 97,164,190,182,128,160,159,161, 39,192, 32, 50,192,165, 61,135,162, 34,241, 75, 22,103,179,143, 29,131,233, 24,146,132,233,120, -200,209,188, 64,139,148,161,200, 72, 68,194, 80,101,140, 83, 77, 83, 65, 46,117,104,119, 15, 90, 93,239, 72, 20, 99,108,236,217, - 39, 81, 33,172, 12,159, 1,145, 94,244,240,174,214,221,119,213,203,104,247,143, 63, 58,116, 14, 85, 87,164,234, 50,228,246,222, - 46, 99, 38,218, 82, 56,150,189,209, 53,231,187,237,235, 76,231,192,196,161,173, 37,101, 71,108, 35, 99, 12,100,122,115,246,109, -118,158, 0,149,143, 1, 67,116,136,253, 17, 23,157,244,144,242,109,102, 31, 3,158,180,181, 90, 61,194,163,198,245,130,175, 67, -173, 22, 7,236,108,243,252,246, 89,150,139, 93,140,169, 88,238,237,210,152, 57,179,217,140,186, 90, 50, 95,204, 40, 23, 37,243, -221,146, 81, 42, 56,174, 83,164, 80,172,143, 39,156,222,221,101,146, 36,220,125,114, 21,142, 76, 46, 13, 26,138, 60,156,119,107, -228,132,238,233,174,155,203,103,171,125, 30,123,111,187,118,148,136, 68, 27,171, 99,110, 91, 41, 40, 6, 67,222,113,211, 42, 12, -198,161, 36,175,117, 87, 13, 56, 76, 19,140, 57, 24,144,182, 78,191,125, 77,235,244,219, 86, 71, 99,120,203,104,141,159, 95, 63, -198,199,111,189,149,147,199,215, 33, 31,118,193, 81, 53, 59, 8,116,187, 22,144,234, 37,191,247, 3, 80, 3,231, 78,195, 75,231, - 2,136,206,212, 48,219,220,151,220,188,217,214,220, 87, 20, 76,235,154,220, 58,222, 63,200, 25, 84, 13,105, 83,114, 82, 39,236, -108,189,204,185,237,243, 44, 94, 58, 69, 1,236,149, 21, 94,123, 84,166,216, 43,155,120, 45, 5,140, 50, 22, 66, 83,100, 9,201, -164, 96, 51, 79, 25,175, 76,216,170, 12, 71,167, 35,158, 63,191,195,177,201,144,202, 25,142,142,134, 24, 9,147, 65,202, 22,142, -245, 81,206,217,170,230,136, 82,172, 13, 52,153,214, 92,172, 23,204,141,161,196,211, 72,193, 18, 80, 58, 58,117, 37,225,232, 10, - 20, 43,113,223,246,170,155,182, 93,167, 28,172,192,189,154,205,221,221,185,100, 29,249,150,152, 37, 50, 42,134,178,187, 11,112, - 28,186, 47,219, 24,172, 41,177,187,123,156,186,176,203,119,247, 22,236, 85,134,178, 92, 98,170,134,198, 89, 26, 99,241, 17,232, -156, 41, 69,161, 21,215,105,120,239,100,157, 15, 29,191,142,247,173, 30,229,195,199,142,240,209,147, 39,248,240, 13, 43,232,181, - 53,244,100,138, 42, 70, 40,173,145,135,122,237,175,169,183,174,117,176, 95, 89, 18,190, 15,178, 75, 91,141,175,228,212, 31,125, -234, 57, 30,122,244,251,188,252,216,239,243,245, 47,124, 6,128,175,252,225,159,240,223,190,248,127,120,232, 15, 63,199,217, 39, -254,128, 55,221,118, 35, 31,254,228, 63,166,177,142,251,223,122, 39,223,121,244,233,125,117,173,247,188,237,173, 60,252,248, 51, -216, 44,101,227,145,151,185,254,196, 81,214,166, 35, 30,248,214,211,184,101,197,123,223,121, 23, 15, 60,248, 24,187,231, 23,188, -124,238, 34,127,255, 95,254, 22,255,241,215,126,145,181,233,144,175,255,201, 35,252,155,207,127,153, 47,125,230, 87,152,125,247, -243, 60,244,133,127,197,219,238,186,157,197,238,156, 71,159,122,250,224,113,217, 18,105,106,254,199,175,253, 93,190,240,173,239, -242,229, 63,254,211,168,102,227,130, 97,252,139,210, 23,255, 73,116,230,253, 50,142,141,223, 95,203,163,221,132,182,165,142,245, -193,233,166,209, 0,107, 19,144,239,217, 40, 32,134,135, 9,147,241,132,198, 57,102,198,179,158,165,228, 90,146,107, 73,162, 37, -198,193,106,158, 35, 83,201, 48, 77, 81,168,224,244,234, 72,176,160,211,142,243,189,237,187,245,209,206,251, 13,180, 86,214,245, - 10,216,129,182, 39,217, 58,116,149, 6,128,148,137, 14,101, 95,153, 73,116,217, 67,155, 81,247, 65,106,139,186,235,253,183, 36, - 49,109, 79,189,253,156,195, 34, 1,206, 35,147, 32, 59,140, 80, 93, 95,221, 69, 39,238,251, 65, 71,204,202,219,210,254,254,123, -244,116,231,171, 67, 56,129,125,189, 3,115,153,221,237, 66,255,210,201, 46, 24,242,161, 60,126,238,197,179,188,176,117,129,167, -206,158,226,236,222, 22,167,182,206,227,104,176,214, 35,156, 99,107,107,155,249,206, 54,236,205, 89, 25,229,172,166,176,187, 88, -210,120,137,200, 51,134, 73, 6,131, 60,176, 2,182, 89,152,141, 6,218,197,190,186, 49, 33, 16, 75,210,142, 25,240,138,176, 93, - 25, 89,178,124, 55,151,155, 8,210,241,128,119,140, 10,142,175,142,153, 20, 3,182,208, 28,185,110, 21,198,195,200,129, 32, 59, -103, 77,175,207,223, 86,114,250,173, 45,113, 25,163, 41, 91,125,130,140,159, 57,186,202, 61,199,215,184,107,186,198, 95, 59,121, - 3,156, 88,239, 70, 39,175, 53,240,191,210,244, 73, 31,193, 77, 47, 57,152,109,194,198, 38,108,157, 9,138,143,205,146,251,176, -164,206,163,235,146,235,181,162, 4, 42, 60,198, 4, 85,202,235,211,154,147, 74,162,235,146,205,122,143,239,124,234, 55,209, 79, - 63,204,169, 63,250, 10, 27,139,154, 18,137, 17, 33,192, 44,180,226, 45, 67,197,233, 65, 70, 54,202,208, 90,147,104,205,182, 46, -176,169,102, 52,157,176,181, 51, 35,205,242, 48, 48,130, 96,230, 61,185,144, 44,170,134,235,166, 35,150,120, 42, 15,203,218, 51, - 41, 70, 32, 36, 42, 25, 96, 61,228,105, 78,237, 91,106,228, 81,152,235, 31, 12,186,164,160, 61,215, 42, 78, 32, 44,202,171,179, -217, 87,250,223,120,253,124, 19,197,182,122,253,238, 86, 38,193, 18, 92,133,109, 74,236, 98,201,197,141, 57, 15,238, 46,104,172, -195, 53, 65,246,121,183,174,169,188,223,167, 96, 31,169,132, 99,233, 8,137, 96,162, 83,214,148,226,230,116,200,219, 7, 83,238, -152, 76, 57,186, 58, 64,173, 77, 80, 71, 86,144,147, 41, 34,201,175,158, 93,238, 74, 25,122,154,244, 52, 42,232,212, 18, 95, 97, -162, 73,112,252,253, 63,122, 94,155, 69, 22,176, 22,168,211,159,245,109,203,153,105,129,152, 45, 98, 22,209, 64, 62, 70,148,123, -161,167, 37, 29, 66,167, 97,211,103,145, 48, 35, 11,125,140,208,239, 12,136, 96, 95, 19, 70, 56,204, 28,127,165,136,184,136,139, -165,165, 47,173, 77, 48,106,243,249, 95,156, 83,255,113, 62,218,153,204, 55, 92,126,245,208,226, 41,162, 33, 74, 84, 96,115,107, - 29,133,146, 7, 23,163, 34, 24,221,149, 17,211, 65,129, 18, 9,133,150, 36, 90,177, 57,171, 89,207, 83,246, 26, 67,174, 37, 3, -173, 56, 63, 47, 81, 2,182,182,247,162,179, 43, 3,181,167, 51, 97,196,199, 87, 7,241, 6, 90, 31, 98,155,139,253,244,182,183, - 14, 29,171, 94,214,203,206,145, 29,240,196,212,145,171,254,112, 70, 27,203,228,253, 30,119,159, 80,198, 31, 42,253,249, 30,218, -122,159,253,226, 50,239,215,102,230, 94,116,217, 95,170, 34,133,172,138,200,108,209, 5, 23,165, 9, 1, 78,145,198,207,183, 29, - 18,218,247,112, 2, 45,136, 79,181,206,204,117,199,148,230,112,100, 5,214, 87, 96, 99, 27,206,109,134,247,200,199, 33,203, 30, - 14,201, 82,201, 48, 73,153, 14,114,110, 63,178,206,116, 56, 70,167,197,126,188,180, 53,219,101,148,101, 8, 47,169,109,195,139, -139, 25,152,138,189,114,198,243,155,115,120,121, 35,204,174,215,132,106, 74,191,223,221, 22, 12, 90, 37,189, 43,181,127,218, 94, -188,136, 45,135,181,105, 8, 24, 86, 71,188, 99, 50,230,104,154,146, 8,193,182, 41, 57, 63,175,121,102, 54,131,139,139, 64, 73, -186,108, 66,176, 37,155, 16,116,182,220,217,253,224,175, 45,201,246,217, 65,100,143,200,232,248, 9,238,189,247, 30, 62,122,231, -189, 12, 7, 25,137,183,252,249,185,115,124,229,217, 39,120,225,225,199,187,145,178,107,217,167, 87,218,159,175,244,183,201, 58, -156,188, 14,142, 28,131, 60,225, 29,235, 55,114, 75, 62, 98, 94, 47, 17,163, 9,121,211,176,215, 52, 36, 58, 97, 77, 55,108,205, -106,188,148,252,160,170,168,140,225,133,217, 38, 63,123,253,173,212,214,240,141,147,183,195,168,128, 92,161,156,228, 47, 31,201, - 72,128, 41,138, 29,231,185, 69, 67,179, 91,113,163,114,204,247,150,176, 40, 57, 41, 60,197, 64,161,117,202,233,178, 98, 85,107, -246,202,138,139, 42, 97,108, 13, 47,214,150,220, 90,158,156, 25, 54,202, 57,155,198,162,112,108,224,104,170, 10, 43,193,150,243, -208,174,152,111, 5, 5,205,141,141,208, 54,121,195,230,214, 15, 58,210,195,131, 37,226, 10,207,147,228, 76, 39, 25,239, 93, 25, - 33,178,140,193,104, 72,146, 38, 20, 89,130, 18,112, 68,103,220, 58,200, 89, 69,145, 72, 77,226, 45,206, 90,140,243,156,181,150, -199, 23, 59,252,207,153,161, 90,150, 52,101,131,169, 74,236,238, 46,118,177,196,197,192,194, 95, 11,120, 78,235, 32,222,114,248, -177,104, 58, 59,112,185,216,248,234, 84,218, 6,161, 79, 90,164, 1,244,212, 15, 96,133,128,201, 56, 8, 30,100, 41,194,217, 32, - 56, 80,238, 5, 3,178, 92, 34, 6, 69, 48,164,105,212,252, 43,210, 0,209, 79, 21,190,137, 36,247, 90,194,124, 23,106,139,119, -230,202, 99, 14, 77, 29, 12,126, 93,131,171, 66, 86, 88,215, 63,217, 14,189,149,115,237,143, 22, 93,235,251,136,168,106,181, 63, -198,245, 70,145,202,203,203,252,110, 66,175, 46,139,136,100,221, 91, 8, 58,170,157,173, 79, 32, 77,152,140,135,236, 46,107, 78, -140,135, 56, 43,177,222,113,253,100,202,172,170,152,102, 25, 90,194, 11, 23,247, 56, 62, 44,216, 92,204, 81,105,138, 45,203, 32, -163,153,233, 96, 20,204,188, 19,132,217,111, 90,197,113,168,125, 73, 86,215,161, 84, 90, 66,148,118, 7,181, 4, 45, 42,233, 52, -233, 91,174,116,223,206,136,251,206,240, 15,146,224, 28, 90, 69, 53,111,131,243,108,199,167, 90,128,157,107, 98,134, 44, 59, 56, - 76,235,208,247, 57,217,187,221,156,102,122, 31,196, 19, 2,145, 40,247,218,248,152,193,196, 81, 10, 33,163,206,178,140,215, 32, - 10, 21, 57, 31, 71,158,204, 65,112, 92,219, 94,112,102, 31,100,138,138, 74,109,211, 41,220,124, 34, 74,125,102, 65,128,197,197, -192,107, 92,128, 20,100,121,130, 22,146, 60,209,204,234,134, 92,165,108, 47,150,248,114,201,238,114,155,221,186, 97,103,185,192, - 59, 27,166, 16,133,194, 56,199, 51,198, 96,235,184,239,170,168,142, 6,161, 84,216,202,245, 38,145,219,189,137,162,207, 74,116, - 2, 64,253,241,179, 60,138,240,248,152, 30,217, 48,141,112,239,202,144, 60, 73, 24, 36, 9,169, 20, 88,103,121,100, 89,135,114, -107,227,187, 25,118, 41, 67,139,162, 24,114,252,216,152,108,144, 49, 25, 23,204,151,117,143, 67, 63, 94,119, 41, 46,229,165, 87, -138,217,250, 17,238, 88, 91,195, 57,203,204,122,126,120,113,151, 7,119,183, 97,119,113,237,226, 36,251, 12,145,241, 92, 91,170, -102,231, 94,121,207, 86,203, 48, 29, 50,208,188,115,178, 66,102, 27,134, 69, 74,166, 11,154,122,137,118,142, 65,146,161, 88,128, - 84,228,137, 96, 36,124,160,148, 21,150,243,203, 57,207, 93,120,145,231,245, 48,236, 73, 21,136,126,238, 58, 50,224, 54, 45,169, -149, 66, 11, 72,180, 70, 90,207, 88,193,174,245, 12, 16,172, 38,138,243,165, 33,215,138,212,212,172, 14,114,158,221, 43, 17, 8, - 10, 44,231, 44,220, 48, 74, 57, 83, 89, 18, 91,115,209,131,171, 75,172,144, 84,206, 81, 74, 25, 64,106,182,129,122, 47,234, 31, -208, 85,224, 84, 47,168,205,115, 24, 14, 99,165,204,189, 97,142, 29, 94,129,190,215, 25, 42,231,249,193,174,225,246, 97, 0, 32, -214, 73,144, 85, 94,211, 25, 55, 36, 25, 39,117,193, 68, 41, 20, 30, 37, 53, 74, 40,172, 51, 20, 58,225, 34,142,133,105,216,240, -224,132,199, 91,143, 55, 65,177,212,251,215, 96,155,219, 36,161, 21,154, 82,105,184, 78,166,126,197,247,252,209,157,122,145,199, -186,126,143, 25,171, 53,226,165, 13,243,198, 85, 13, 43,211,160,212, 36, 4, 44,107,196,104, 28,102, 90,179, 12,204, 2,210, 34, - 48, 57, 13,179, 48, 34,162, 85, 88,192, 38,150, 53,119,151, 1, 24, 44,204, 62,225,195,149, 65, 19, 54,114, 2,155,215,117, 81, -188,113, 9,111, 79,145, 75, 69,141,112,119, 13,220,200, 73,218, 25,192,246, 75,218, 55, 72, 44,198, 29,252,106, 3,173, 84,134, -146,115, 58,238,148,197,124,172,182,140,134, 32, 4,147,245, 21,118,231,115,110, 94, 95,197,227, 25,232,148, 65,146,114,113, 49, -103,109, 56,194,216,154,221,202,114,124,148,179, 93, 86, 12,179, 1,187, 59,123,241, 60,124,152,187, 54, 54,124,206,229,164, 68, -219,185,242,253, 67,213, 93, 54, 46, 98,159, 91,197, 56,164,157,245,222, 47,195,139,176,230, 90, 39, 47, 85,199,183,110, 76, 48, - 7,125,153, 84,227, 58, 96,157,111,117,225,117,156,213,238,197,254, 42, 58,226, 86,113, 45,254, 45,149, 2, 97, 5, 77,210,211, - 65, 87, 50, 42,210,133, 49,164, 64, 48, 97,195, 57,232, 52,140,243,101, 42,102,159,177,175,223,148,221,235, 91,250,217, 42,114, - 34,168,168, 18,167, 68, 24, 41,116, 4,228,113,166,194,154,217,153,195,133,205,240,247,100, 16,240, 11, 66, 34,149,100,154,165, - 8, 41, 81, 30,230,165,101,105, 44,139,170, 34,145,150,185,245,140,210,130,109,107, 80, 94,112,186,169, 56,101, 12,179,114, 25, - 69, 86, 8, 76,125,109,121,164,142,247,107,237, 72,192, 84, 20, 69,200,166,155, 42, 56, 42, 23,181, 0,250,247,180,229,249,111, -133,125,108, 0, 89,222,180, 58,224,142,213, 53,206, 47, 43,156, 16,236, 52,134,211,243, 24, 72, 72,122,220,247, 81, 63, 32,211, - 92,159,107,132,240,140,132, 98, 92,164,236,236, 45,123,169, 89,116,230,206,119, 14,190,105,192, 89,154, 44,229,251, 77, 77,229, - 36,207,205, 22,124,115,111, 23,202, 89, 0,209,205,103,215,150,165,247, 57,187, 47, 55, 39,191,223, 2,184, 12, 71,254,124, 15, -138, 49,119,175,228,220, 62, 24,240,131, 89,197,117,131,132,188,200,152, 59, 24,102,161, 68, 60,175, 96, 42, 44,210,129,161,100, -111, 89,114,174,169,195, 53, 58,127, 38, 36, 86,107, 55, 66,174,201,135, 25,133,150, 20, 94,160, 19,205,208, 5, 85,205, 60,211, - 12,133, 96, 69,194,142,177,172, 42,193, 29, 69,202, 98,144,243,204,214,140, 34, 21,204,235,134,179,198,225,157,227,133,237, 6, -211, 24, 54, 81, 24,215,176, 52, 22, 47,192, 72, 69,105,130,176, 77, 24, 71,109, 66, 16,218, 52,145,175,192, 68,129, 39, 17,240, - 10, 39,142,194,209,181, 80,117,157,207,223, 16,199,206, 43, 56,246,253,255,183, 22, 33, 28,167,140, 99, 61,209, 24, 37,113, 89, -202, 20,152, 74,184,115, 56, 33,149,138, 84,166,193,138, 75, 17,228,152,113, 92,108,106, 94, 50, 53,231,230, 53, 30, 17, 50,115, -169,194,169, 84, 21,190,119, 78, 87, 45,248, 34,130, 28,113,128,135, 68,190,247, 87,146, 85,190, 42,167,222, 26,149,150,168, 67, - 39,225,103,103, 2, 73,135,245, 1,165, 58, 43, 59, 69,170, 52, 82, 58,166, 42, 46,218,144,229,137, 36,137,253,207,208, 51,244, -139, 38,100,127,101, 21,141,150, 11, 11,242,255,167,135,212,189,122,143,132,213, 81, 88,228,230, 26,130,145, 86,116,164, 37, 65, -241,213,143,183,159,223,206, 9,103, 89,212, 59,142, 37,229, 36, 13, 64, 14, 31,130,189, 10,207,104, 52, 36, 85, 10, 45, 53, 74, - 72, 36,154,181, 98, 72,109, 29,169, 76,200, 82, 21,199, 72, 36,103,103,243,208, 15,171,203, 64,202,177,220, 5, 83, 94, 89, 66, -183, 37, 29,145, 34,244,166,181, 11,142, 93, 69,176, 98, 75, 12,228,125, 68,163,139,224,136,219, 44,218, 69,118,166,118,228, 75, -244,230,210,114, 29,202,223,202,119, 78,189,149,106,109,203,246,222, 29,252,210, 73, 20, 51,105,131,135, 46,234,178, 94, 96,165, - 36,181, 2,219,174,131, 50,182,161, 92, 79, 70, 54,213,225, 90,250, 38,204,205,187, 56, 14,103, 77,112,238,194, 7, 39,174,162, -243,107,127,110, 57, 19, 68,196, 61,180,206,171,137,125,238, 11, 51,216,190, 16,202,212, 74, 69,117, 60, 9, 69,130, 18, 18,131, - 64, 10,129,147,138,185,109,216, 90,214,156,218,217,226,166, 66, 49, 78, 20,149,113,148, 30,206, 88,195, 15, 76,197,178,149, 88, -141, 28,219, 44,102, 33, 16, 49,182,203,208,215, 87,187,192,102,217,132, 64,208,154, 46, 16,235,103,203,237,189,212,145,134,209, - 25,152, 55,156,105, 28,199, 82,203, 36,149, 92, 40,151, 60, 52, 43,195, 76, 62,190,107, 61,168, 46, 80,155, 38,146, 81, 34, 24, - 9, 65,130,160,178,134,157, 89,117,176, 18, 35,123, 32,196,182,157, 99, 45, 88, 65,157, 8, 94,172,150,156, 41,103,161,159,189, -172, 96,119, 30,214,228,213,238,211,214,145,183,194, 54,237,115,135, 51,246,125,114, 35, 46, 11,252,212, 3, 69,170, 37,119, 23, - 3,102,214,145,227,200,165, 68, 9,129,104, 12,235,153, 10, 36,135, 77,195,102, 99,120,112,231, 34, 44,103,241, 61, 93, 8, 60, -117,134,212, 5,199,134, 33, 33,184,113,152,147,106,129,208,146, 65, 34, 25, 72,193, 64, 8,106,235,185,176,177,160,180, 13,207, - 45, 97,167, 41,169, 61,236, 44, 13, 59,149,167, 49,112,174, 10,231,176,144, 32,241, 36, 54,136, 62, 13,156,197,154,134, 25, 1, - 48,233, 77, 29, 70, 94,157, 13,142,168,172, 67,229,109,177, 8,235,120, 50,134, 19,235,100,227, 34, 76, 46, 45,203,215,117,156, - 87, 92,133,179, 23,128,116, 14, 89,213,108,204, 74, 46, 84,158, 90, 8, 94,150,154, 60,151,172, 24,199,245,197,132, 34, 73, 16, -206, 82,232, 20, 39, 37,167,151,115, 78,217,154,239,206, 27, 42, 37,176,198,225,165,192,213, 53,190,113,120,107,240,175,133, 68, -204, 69,208,168, 45, 59, 33,151, 87,121,252, 63,200,142,135, 98, 79, 39, 83, 45, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, + 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116, +111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, + 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, + 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163, +107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224, +131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, + 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, + 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230, +211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, + 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81, +136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, + 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, + 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6, +255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4, +104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228, +216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, + 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, + 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176, +106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131, +225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160, +129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28, +114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, + 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, + 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186, +145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49, +154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, + 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, + 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, + 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, + 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100, +107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, + 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82, +175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, + 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, + 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, + 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, + 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76, +195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124, +118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, + 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81, +171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, + 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111, +167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113, +111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105, +198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199, +205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73, +178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, + 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183, +197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154, +206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103, +185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155, +179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, + 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, + 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35, +255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178, +217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, + 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, + 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46, +102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, + 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37, +242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, + 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131, +146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107, +179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205, +237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60, +113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, + 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, + 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210, +102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40, +219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215, +248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179, +247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, + 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9, +223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91, +186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207, +140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59, +188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187, +154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189, +243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67, +221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143, +153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, + 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190, +201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167, +251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 6, 98, 75, 71, 68, 0,255, 0,255, 0,255,160,189,167, +147, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, 0, 0, 7,116, 73, 77, 69, 7,219, + 10, 22, 15, 51, 58,178,212,173, 17, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,121,156, 37, 87,113,231,251,141,147,121,239, +173,170,222,212,173,181, 27,180, 34, 9,196, 14, 18,200, 24, 44,132, 45,192, 24, 12,198, 70,178,135,231,225,217,248, 33, 25,175, +216,243,108,225,231,121,243,120,111, 60, 6,236, 97,140,205, 48, 6,153,241, 54, 99,123, 64, 48,131, 23, 48, 12, 98,192,128,109, +176,145, 49,139, 88,165, 86, 75,141,164,222,171,107,187, 91,230, 57,241,254,200,147,153, 39,243,230,189, 85,213,221,146,104,145, +241,249, 84,247,173, 91,185,231, 57, 39, 34,126,241,139, 8,104,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165, +149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, + 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149,141,139, 60, + 28, 39,213,247,191,250,229, 36,250,115, 24,186, 24,125, 7, 63,240,135,255, 85, 4,109, 95, 71, 43,173,180,210, 74, 43,173,156, + 70, 74, 93,255,252, 85,207, 99,121,237,127,113,124, 77,217,182, 3,206,218, 37,164,227, 63,101,188,124,147,220,112,235,106,251, + 74, 90,105,165,149, 86, 90,105,229,196,196, 60,228,103,188,127,239, 22, 30,216, 7,135,239, 27,112,207,215,250,236,219,219, 71, +163, 87, 50,183,243, 11,250,129,215, 92,222,190,146, 86, 90,105,165,149, 86, 90, 57, 93,148,250, 79,126,234, 3,204,155, 95, 97, +107,119, 1, 33,230,240,253,142,189, 95,233, 51, 76, 46,194,117,190,162, 31,120,205, 15,181,175,165,149, 86, 90,105,165,149, 86, + 54, 47,242,112,157, 88,223,246, 29, 47, 98,152,190,151,145,246,176,233,128,238,156,225,130, 75, 99,118,157,217,197,142,222,138, +233,190, 94,190,239,109,163,246, 21,181,210, 74, 43,173,180,210,202,183,184, 82, 7,208,119, 94,249, 24,214,162, 15, 50,180,151, +147,216, 62, 81, 4,123, 46, 54,156,183,103, 14,151,124,158, 72,127, 64, 94,244,142,125,167,203,195, 84,213, 43,129,157,254,215, +189, 34,178,247,145, 60,120,190,221,238,183,149, 86, 90,105,165, 85,234,235, 41,134,223,124,242, 22, 58,157,255, 74, 95, 95, 74, +162, 67,112,112,238,249,194,238, 11,230,137,100, 76, 39,125,137,188,240,157, 31, 57,197,202,232, 18,224,146, 13,110,190, 40, 34, +183,111,240,184, 31, 1,174,243,191,190, 94, 68,222,252, 8, 87,234,223, 86,247,123,138,158,153,136, 72,155,233,209, 74, 43,173, + 60, 40, 18,159,244, 34,245,177,107, 99,246,119,123,141,127, 92, 25, 11,219,186, 10,231,194,185,192,210,176, 52, 34,122,219,132, +206, 72, 96, 23,232,209,215,113,239,189, 61, 86,221, 11,112,140, 89, 60, 2, 11, 91,135,156,113,118, 7,219,253,159,250,161,159, +249, 55,244,190,244, 70,121,222,199,211, 83,116,223,215, 3,111,218,196, 66, 12,112, 43,112,155,136,220,210, 14,155, 71,132,114, + 53, 34,226,106,223, 69,192,213,192,119, 3,207, 0,158, 64, 54,114,123,192,113,224, 30,224,211,192,159,138,200,223,159,144, 21, +189, 1,133,174,170,207, 4,110, 0,158, 7, 60, 10, 56, 19,232,251,243,127, 1,248, 36,240, 65, 17,217,191,206,113,186,192, 43, +128, 87,250,123,217,237,239, 99, 31,240,126,224, 15, 69,228, 64, 59, 26, 90,105,165,245,212,209, 55,188,193,176,253,163, 55, 98, +229, 87, 17, 57,139, 40,114,136,128, 49,217,143, 8, 68,145, 96, 12, 68,254,119, 99,192,248,239, 68, 64,242,109,141, 37,138, 70, +168,108, 65,130,109,163, 8, 28,134,185,110, 7,177,127,195, 60,215,203, 53,111, 59,124, 10, 22,244,155, 55,163,212,107,114, 27, +112,131,136, 44,182,158,250, 35,231,126, 85,245,119,129, 31, 4,206,217,224, 46, 31, 7, 94, 45, 34,119,159,194,107,120, 20,240, +118,224,101, 27,216,252,163, 34,114,221,140, 99, 61, 22,248, 51,224,105, 51,142,113, 28,184, 73, 68,222,211, 46,133,173,180,242, +237,238,169,159,241,209,159,199,153,255, 64,170, 99, 34, 81, 32, 66, 4,148,236, 39,251, 44, 24, 5,167, 96, 36,251,131,113, 16, + 73,182,129, 81, 48, 10,162, 17,206,118,136, 34,245,238,140, 63,142,130, 49,142,196,142,136,204,115,233,235, 87,245,163, 63,253, +124,249,158,183,255,211, 41,126, 14,183,205,248,219,117, 13,191,127, 68, 85,159,223,164,216, 91, 57,109,229, 39, 27,190, 59,234, +189,227,227,222, 91,126, 34, 16,249,191, 93, 11,124, 86, 85,159, 43, 34, 95, 58, 5, 10,253, 9,222, 80, 56, 43,248,122, 9,216, + 11, 44, 2,219,128,203,129, 29, 27, 56,214, 5,192,223,120,148, 33,151,251,128,187,252,125, 60,222, 27,244,103, 0,239,246, 33, +129,119,183, 67,160,149, 86,190, 77,149,186,190, 1,131,211,215,210, 79, 20,155, 36, 88, 7, 34,146,249,253,146, 45, 23, 94,111, +131,208, 79,236, 2,145,193,156,121, 14,196, 49, 88, 69, 50, 15, 61, 83,242, 98,192,154, 76,193, 27, 87,122,234,226,189,124, 99, +144,212,208,137,162, 93, 66,231,118,253,232,207,189,150,239,254,237,119,158,170,216,164,136, 60,127,157, 69, 50,135,235,243, 56, +252,149,192,141, 64, 27, 67,126,228,201, 87,129, 63, 0,254, 74, 68,190, 92, 27, 7,187,128,127, 5,220,236,149,251, 46,224, 47, + 85,245, 10, 17, 25,158,132, 66,191, 24,248,104,160,208, 63, 7,252,138,247,198,211,218,182, 79, 4, 94, 14, 92, 60,229, 88, 2, +188, 47, 80,232,139,192,171,129, 63,207,231,139,170, 62, 14,248, 35,224,153,126,155, 63, 80,213,207,137,200,215,219,215,223, 74, + 43,167,183,156, 80,158,186,188, 1, 71,172,111, 65, 70, 2,201, 22, 98,183,133,200, 46,100, 63,233, 66,241,217,164, 11,184,225, + 28, 54, 65,122, 11,153,178,118, 14,156,203,227,212, 94,198,224,134,224, 6,160, 67, 96,148,253,174, 99,191,189,162,234, 72,172, +131, 84, 83,180,243,187,124,244, 23,223,163,127,241,134,133,135,226, 33,137,200,173,192,243,253, 2,153,203,245,237,240, 57,125, +197,199,155, 67,249, 12,240,125, 34,114,133,136,252, 70, 93,161,251,113,112, 76, 68,126, 21,120, 85,240,245, 69, 83,188,252,205, +200,239, 5, 74,248,221,192, 51, 68,228,195,117,133,238,175,225, 75, 34,242,111, 69,228,213, 83,142,245,195,192, 85,254,179, 5, + 94, 36, 34,239, 15, 13, 96, 17,249, 42, 25,111,224, 78,255,213, 60,240,255,182,163,162,149, 86, 78,127, 57, 41,246,187,254,135, +167, 95, 74,196,165, 56, 35,136, 11, 72, 71,198,127,182, 35,186,243,207, 90, 28,206,189,105,161, 51,143,131, 44, 78,110, 76,118, +234,180,143, 68,130, 57,255, 41,152,179, 47, 69,182,159,135,204,109,135,116,132, 91, 59,140,174, 60,128, 59,252,117, 72,135, 16, +205,131, 8,189, 94,119,132, 26,161, 23,119,137,220,237, 36,230,185,242,194,127,191,182,201, 5,189, 18, 83, 23, 17,217,224,126, +239,244, 30,122,227,126, 39, 18, 99, 86,213,157,222,243,207,229,246, 83, 1,235,215, 24,254, 39,148,110,182,222, 49,190, 85,238, +183,118,157,183, 63, 20, 97, 17, 85,253, 16,240, 66,255,235, 39, 69,228,154, 19, 60,206,191, 0,254,212,255,122, 7,240, 52, 17, + 73, 78,226,186,254,137, 50,142,254, 14, 17,121,237,140,109, 95, 2,252,165,255,213, 1,151,136,200, 61,237,178,216, 74, 43,167, +175,156, 20,251, 93,126,241,159,238, 12,172,253,201, 69,227,143, 94,250,100,134,233,143,110,141,148, 52,143,171, 15,135,232,104, + 13,236, 26,209,229,223, 69,124,213, 43,137, 46,254,142,169, 16,130, 30,219, 71,122,215, 71,177,247,252, 45, 18,117, 25,141,211, + 30, 18, 33,214,209, 93,232, 94,249,137, 59,246,175,234,103,111,236,202, 85,183, 36, 15,193,243, 58, 37,121,216, 94,177,221,232, +189,253, 43, 27,254,190, 23,184, 5,184,101,154,130, 82,213, 55, 5,251,222, 42, 34,183, 4,199,189,145, 90,202,158, 63,230,155, + 55,194,222, 87,213, 27,201, 32,230, 75, 54,123, 93, 15,198,253,206,184,215,155,253,113,119, 6,155,223,230, 81,149, 7, 91,254, + 34, 80,234, 87,156,196,113,126, 46,248,124,243, 73, 42,244, 11,169, 18,227,222,177,206, 46, 31, 4,238, 5, 46,240, 83,238,101, +192,239,180,203, 98, 43,173,156,190,242,160,149,137,213,223,127,254, 77,172, 14, 63,207,208, 94,145, 90,139, 14,215,112,199, 14, +225, 22, 15,160,227,101,186, 47,252,101,122,215,255, 78,163, 66,175, 24, 14,187, 46,162,243,140,159,160,115,245,107, 51,226,156, + 88, 64, 65, 96,220, 79,184,230,105, 23,193,226,194,255,243, 16, 61,175, 80,121,156,144, 55,168,170,215,145, 17,150,222,212,164, +224,188, 92,226,255,254, 89, 95,224,165, 73,174,244, 94,242,117,192, 78,191,221, 71,168,198,254,235,199,124,167, 71, 27,166, 42, + 95, 85,125, 15,240,206, 25,199,120, 19, 25, 81,112,231, 67,120,191, 77,247,122,151, 87,234, 59, 31,166,185,115, 52,248,188,253, + 4,199,194,227,129,124, 2, 28, 2, 62,116,146,215,244,125,193,231, 7, 68,228,243, 51,231, 86,150,210,247,225, 41,251,183,210, + 74, 43,223,110,158,122,227, 66,245,206,151, 44,224, 6,111, 99, 77, 95,141,149, 17,154, 88, 93, 93, 93, 32, 77, 64, 20,233, 64, +239,229,111, 36,122,226,139,139,125,150, 7, 35, 62,252,207,251,248,240,231,247,113,108,117, 64, 39, 18,174,216,179,139,151, 94, +117, 41, 79,127,204,110, 0,162,243,159,129,116,183,145,124,234, 45,208,141, 51,197,110,132,116,117, 68, 60, 23,255,170,126,236, + 23,254, 80,158,247, 91,119, 62,104, 70, 74,166,196,174,175,121,132,155, 61,198,245, 64, 61,125,232,118,127,172,220, 72, 8,189, +217, 75, 40,153,246,183,175, 99,108,188, 39, 80,196,183,250,227,230, 10, 49,188,238, 27, 85,117,239, 20,168,252, 77, 76,114, 5, +194, 99,229,215,118,101,195,125, 60, 84,247,187,211, 27, 47, 59, 3,227,234,246, 96,255,135, 74, 46, 10, 62,159,104,154,101,136, + 40,124, 66, 68,236, 73, 94,211, 83,130,207,159,222,224, 62,127, 7,188,166, 97,255, 86, 90,105,229,219, 93,169,235, 59,174,185, +140,209,234, 7, 73,205,165, 40, 3,108, 95, 73, 70, 25,217, 45,142,144,116,141,206,179,255,143,138, 66,255,244, 55, 30,224,151, +254,228,147,236, 61,178,194, 92,175, 67, 39, 54, 24,133,207,239, 63,198,123,255,254,171,124,255, 85,143,225,255,190,254,187, 88, +232,117, 48,231, 62,142,248,137, 55,144,126,238, 15, 96,219,185,128,102,113,122, 21, 72,163,223, 6, 94,252, 32, 42,244,186,247, +122,203, 38,143,113,137, 63, 70, 46,123,201,114,132,235,198,193,155,189,119,251, 30,175,184,242,115, 95, 53,227,240, 55, 7, 10, +248,166, 58,132,237,207,253,158, 64,121,222,172,170, 21,168,219, 67,238, 55,214,148,239, 13,181, 56,122,120,109,215, 61, 76,247, +123,115,112,188,215,123, 18, 99,253, 93, 61, 20,242,138,224,243,103, 78,240, 24,207, 8, 62,127,193, 95,255,153,192, 79,248,227, + 63, 6, 88,240, 70,195, 63,145, 65,254,255,101, 6, 68,255,184,224,243, 93, 27,188,134,112,187,243, 84,117,187,136, 44,183, 75, + 99, 43,173,124,155, 43,117,125,251,115,190,151,129,190,159,148, 24, 99,251,164, 99,176,105, 22, 71,143, 4,212, 34,103,157, 79, +252,204,146, 56,252,141, 3,139,188,234,237, 31,230,208, 32,101, 97,203, 60, 73, 20,209,233, 68,116, 35, 33,210, 46, 98, 83,222, +247,153, 59,137,140,225,215, 94,121,109,230,177, 95,250, 60,236,215, 62, 4,118, 21,226,249,140,234,103,109, 74, 36,215,233, 39, + 94,183, 91,174,121,235, 3, 39,160,180,111,158,241,231,235, 26, 20, 88,147,114, 90, 79,222, 89,243, 46,175,154, 22,151, 22,145, +219, 84,245,249,129, 71,122,165,170,222,184, 78, 60,252, 54, 17,185, 97,202,241,246,170,234,235,253,241,114,111,247, 58,111, 4, +212,149,101,174, 48, 27,243,240,131,107,251,236,195,120,191,123,167, 29,239, 33, 34,201, 61,191,102,116,252,217, 9, 30,234,201, +193,231, 7, 84,245, 5,100,169,102,231,213,182, 59,223,255,188, 12,248, 85, 85,253, 97, 17,105,122,254, 23, 6,159,239,221,224, + 53,220,219,128, 64,124,161, 93, 26, 91,105,229,244,148,147,142,169,235, 59,175,236,232,111, 63,231,205,140,244,175, 73, 0,147, +142,176,195, 44,246,221, 49, 16, 11,196,130, 50, 38,186,252, 26,100,107, 89, 91,227,245,127,242,183,124,227,155, 75, 44,165,194, + 3,171, 41,251,151,198,220,121,100,192,222, 35, 3, 22,135, 22,141, 99,118,236,216,202,251,255,225, 27,220,246,121, 95,184, 43, +138,137, 46,185, 6, 93, 62,236, 43,213, 41, 24,113,116,162, 46,137,188,236, 4,111,227, 77, 51,126,174,171,121,231,207,223,108, +169, 88, 31, 3, 14,143,243,250,245,148,143,135,159,111,169, 25, 23,179,228,166,117,142,119, 27, 37, 76, 77,136, 58,120,152, 60, + 68, 33,222, 60,235,250, 26,174,237,161,190,223, 55, 63, 92,133,127, 84,117, 71, 13,129,248, 28, 89, 94,248,137,200,153,193,231, +167,120, 79, 60, 87,232,135,200,202,193,254, 61,176, 92,123,111,127,163,170,223,217,112,188,109,193,231,165, 13, 94,195,210,140, + 99,180,210, 74, 43,223, 78, 74, 93,127,231,234, 71,179,210,249, 91,134,246,151, 73,180,143, 88,139, 77,178,178, 28,177, 64, 36, + 66, 44, 34,145, 65, 98,193,236,121, 98,177,239,221, 7,143,243,215,255,124, 47, 44,204,151,105,110, 81,132,197,176, 50,178,220, +125,184,207,222, 67,125, 18, 21, 92, 20,241,209, 47,150,153, 54,114,214,165,232, 96, 25, 72,125,145, 27,133,212,129, 43,138,105, + 60, 88,114,189,247, 34, 55, 11,241,134, 10,106,113, 19, 70,193,109,181,115, 79,147,219, 55,152,178,118,251,148,107,186,174,166, + 96, 55,114,125,183, 62, 76,247,187,247,225,170,191,175,170,198,123,210,121,225,151, 49,240, 19, 39, 81, 4, 41,172, 14,247, 51, +100, 53,230, 15,146, 21,151, 57, 79, 68,174, 17,145,239, 4,206, 6,126, 26,200, 11,220, 44, 0,255, 77, 85,235, 4,189, 45,193, +231,141, 22,195, 25,204, 56, 70, 43,173,180,114,154,201, 9,195,239,250,182,239,120, 54,125,251, 81, 18,211, 33,150, 62,145, 3, +117, 89,105,216, 84,132, 88,148, 72,124,117, 56,139,196, 93,204,206, 11,138,253,247, 29, 94,102,208, 79, 96,123,143,162, 4, 93, +190, 52, 26, 3,170, 28, 95, 77, 72,198, 41,143,222, 17,179, 50, 44,195,136,178,237, 92, 32,130, 81, 31,153,223,150,153, 38, 73, + 10, 49, 79, 81,125,131, 17,121,131,219,228,237,188,126,198,223, 46,241, 74,234, 18, 50,104,248, 77,192,245,155, 44, 19,123,221, + 20,197,202,122,222,117, 88,164, 71, 85,175,156, 66, 32,219,104, 40, 96,239,140,123,220,212,177,234,215,246, 16,222,239,237, 15, +227,124,121, 11,213,186,236,191, 36, 34,159, 59,137,227,205,213,126, 95, 3,158, 39, 34, 95,169, 61,151, 49,240,159, 84,245, 30, +224,175,252,215,231, 3,175,165, 90,213,176, 19,124,222,104,243,163,250,118,221,118, 89,108,165,149,111, 35,165,174,239,185, 62, +226,158,187,127,145,149,244, 55,176, 50,166,199, 16,227, 4,171, 74,226,132, 72,186,116, 88,196,234, 22,226, 40,243,218,157,175, +114,163,229,250,113,206,142, 5,162,110, 7,235,200,136,110,170, 94,169,251,255, 85, 32, 50,172,245, 19,238, 25, 14,233, 61, 37, +184, 84,181,160, 73, 86,148,198,108, 7,113, 2, 86,177,186,135,191, 62,218, 1, 70,155,185,167, 13, 22, 77,185,153, 50,133, 42, + 79, 31,187,106,131,167, 8,211,180, 46,241, 69, 91, 78, 68,166, 33, 4, 39, 11, 69,159,144, 18,246,219, 94,249, 16,223,239,195, +162,212, 85,245,223, 0,175, 11,190,122,187,136,156,108, 78,119,159, 42,220,253,230,186, 66,175,141,211, 15,168,234,173, 1,138, +241,227, 53,165, 30, 30,111,238, 36, 12,139, 86, 90,105,229,219, 65,169,235, 59,175,220,193,190,187,222,203, 88,174, 67,100,192, +124, 4, 6, 33,113,202,200,198,116, 77,151,158,188, 6,244, 18, 44,175, 71, 25, 98, 50,248,157, 36,193, 29,185, 19,115,126, 70, +248,189,226, 81,103,114,245,101,231,240,119, 95, 57,156,213,131, 87,201,106,191,107,102, 4, 0,224, 50, 79,127,120,108,141,203, +206, 43,215,119, 93,190, 31, 70,203,232,232, 12, 36,239, 32,227, 80, 12, 48,191,242,160,244,136, 23,145, 55,123, 47, 50,175, 68, +183, 17,242, 90,147,114,218, 76, 47,247,135, 67, 22, 79,193,182,167,211,253,110, 68,161,255,159, 84,203,168,254, 9,240,179,167, +224,208,171, 53,165,254,199, 27,216,231,143, 2,165,254, 88, 85, 61, 71, 68, 14, 53, 28,111,126,131,215,176,208,112, 77,173,180, +210,202, 35, 93,169,235, 91,158,249, 20,142,218,191, 36,149,243,233, 68,125,230, 76,166, 60,199, 78, 25,219, 57,230,100,200,188, +188, 84,126,246, 31, 62,172,111,185,234,215,112, 34, 8,146, 49,223, 5, 98,131, 30, 44,155, 89, 25, 35,252,235,151, 95,197,247, +125,249,175, 96,152, 64,175,155,109,135, 87,234,142, 12,206, 95,237,243,180,199, 63,138,127,249,220, 39, 20,251,186, 67, 95, 65, + 53, 65,236, 56,219, 80, 1,156, 1,121,128,107, 47, 26, 63, 88, 15,203, 43,246,176,101,235,245,108, 50,181,141, 12, 2, 63,209, +202,116,167, 99, 87,184,211,250,126, 85,245,103,128,223, 12,190,250, 31,192,143,157,162,102, 66, 71,200,122,156, 3, 28,221, 96, +137,214, 58, 82,113, 9, 25,169, 14,178,130, 56,249,241,118,111,240, 26,234,219, 29,109,151,197, 86, 90,121, 4, 43,117, 5,225, + 55,159,246,106,134,246,247,112,146, 50, 31,245,233, 25, 65, 85, 25, 88,197,233, 22,182, 70, 95, 99, 94,190, 95,126,242, 51,223, +240,234,239, 78, 68, 65, 81,140, 8, 70, 96,110, 1,187,239, 83,196,139,251,144,157, 23, 1,240,162,167, 93,196, 45,175,125, 30, +175,251,207,159,164,127,124, 4,115,189,140,209,174, 10,227, 4,250, 3,158,254,184,115,121,239, 47,189,152, 45,115, 62, 92,152, + 12,176, 95,126, 31,210,237,101, 12,251, 44,142,159,121,233,177,126,238, 4,226,233,155,149,219, 40,225,234,235, 78, 96,255, 91, + 30,233,125,214, 31, 41,247,235,115,247, 67,136,253,127, 2, 63,210,212,104,229, 4,229,171,192,147, 54,169, 76,143,206, 64, 69, +190, 78,214, 30, 22,178,210,175, 27,145,243,131,207, 35, 96, 95,187, 44,182,210,202,233, 43,235,179,223,223,114,213,141, 36,230, + 93, 96,134,108,235, 36,204, 71,130,162,172, 89, 48,178,133,133,232,191,115,182, 60,179, 84,232,192, 28,119, 96,178, 48, 55,144, + 41,234, 56,134,116,149,228, 83,191, 85, 57,252,107,190,231, 9,252,253, 27, 95,193,235, 94,242, 36, 46,222,213, 99, 78, 19,182, + 26,203,119, 94,118, 22,255,241,167,190,155, 79,252,187,235,185,248,220,146, 36,156,254,227,187,208,227,251,160,211, 67,197,247, +104, 79,125, 62,188,232,237,223,162,207,121, 26,235,252,116,191,190,235, 78,211,251,221,136, 66,255,113,178,218,233,121, 56,231, + 19,192, 15,120,210,218,169,146, 59,130,207,189, 13,238, 83,143,129,135, 44,247, 48, 30,255,212, 13, 30, 47,172, 21,255, 13, 95, + 58,182,149, 86, 90,121, 36,122,234,250,206, 43, 23, 56,100,127, 29, 39, 99,182, 71,208, 17, 33, 81,165,159, 68,116, 77,143,142, +249, 13,230,146,127, 45, 63,122,123,181,194, 85,236,238, 64,204,126,172, 59, 15, 85,139,248, 30,235,243, 11,184,123, 63, 65,250, +183,111, 37,126,118,201, 57,122,242,133,103,241, 91,175,190,134, 55,254,203,148, 3,199,214,232,118, 98,246,236,154,204,172,177, + 95,254,115,210, 47,252, 23,152,203,194,128, 98, 34,212, 58,176, 78,208, 36,193,232, 95, 61, 4,207,236, 68,226,195, 33,161,236, + 58, 85,221,249,112,229, 89, 79,145,189,193,245, 93,185, 65,165,119,229,105,124,191,235,221,219, 43,129,119, 5, 10,253, 51,192, + 75, 68,100,112,138, 79,245,137,224,243, 30, 85,157,219, 64, 95,246,122, 31,245,131,193,231, 79,134, 74, 93, 85,183,138,200,122, + 49,242,107,166,236,223, 74, 43,173, 60,226, 60,245, 1,103,161,236, 4, 73,113,170,244,173,210, 79,187,116, 69,216,198, 13,242, +243,159,190, 89,110,186,125,162,100,165,220,116,123,159,158,188, 13,209, 14, 67,171,160,136, 1,137, 12,178,176, 13,251,133, 63, + 38,185,237, 95,163,253, 35, 85, 23,164, 19,115,209,185, 59, 38, 21,122, 50,192,126,230, 63,145,126,242,223, 33,189, 46, 18, 69, +136, 0,157, 94,150,202,230, 92, 7,236, 7,229,249,183,220,251, 96, 62,172, 90,139,207,186, 71, 58, 75,234,105, 98, 55,126,139, +141,131,240,250,118,250,178,173, 39,234,165,159, 14,247, 59,235, 29,255, 16, 25, 97, 45,159, 27,159, 3,190, 87, 68, 86, 30,132, +211,125,130, 18, 78,239, 0,215,110, 96,159, 23, 6,159,143,147, 65,248,185,124, 12, 88, 9,142,119,253, 58,247,186,135,172,175, +122, 46,127,209, 46,137,173,180,242, 72, 86,234,123, 6, 7,152,143,246,209,145, 5,214,146, 5,156, 91, 96, 65, 86,216, 22, 93, + 35, 55,253,195,173,179, 49,128,238,187,136, 88, 98,148,198, 36,206,231,171,147,149,140,221,178, 13,119,215, 95, 51,126,223,171, +176,119,188, 15, 93,190,175,121,209, 89, 59,140,187,235, 54,198,255,227,213,164,159,251, 61,152,155,131, 40,206,138,205,136, 32, +166,131, 12, 19,136, 20,148, 95,121,144, 23,251,188,105, 74, 40,183,110,100, 95, 95,159, 60, 36,139,221,188,142,167,251, 80,203, +173, 84, 73,105, 55,111,224, 89,220,124, 26,223,239,180,251,250,126,178,146,175,145,255,234, 14,224, 5, 34,114,252,193, 56,159, +111,224, 18, 50,222,127, 69, 85,101,198,245,109,163,202,186,255, 96, 8,151,251,208,192,187,131,191,255,178,170,206,130,245, 95, + 31,220,235, 55,129,255,213, 46,137,173,180,242, 8, 86,234,114,195,151,199,108,159,187,150, 45,209,111,179, 45,126, 47, 91,163, +155,217,222,123,172,220,244,233,117, 27, 88,200, 79,125,106,145,185,248, 53,196,166,163,171, 41,154, 56,192, 23,163, 17,129,133, +237,144, 46,145,124,234,215, 25,191,239,149,140,255,226, 38,210, 79,253, 6,233,167,127,135,244,239,222,194,248,131, 63,207,248, +189,255,130,228,182,215,163,171,251, 96,203,142,172, 40, 77,190,228, 57,131,142,132,206,156, 1, 77,223, 40, 47,121,215, 87, 30, + 44,239,220, 19,166, 62, 75, 21,154, 94,100,115,204,247,176,140,235, 78,178,110,100,215,109,240,252, 55,175, 83,159,254,100,149, +203, 34,213,124,231,235,166,181,104,245, 10, 61,236,146,118,218,221,239,148,243,190,192, 27, 55,121, 1,151,175, 3,215,137,200, +145,147, 60,110, 40, 63,208,176,201, 27, 3,239,250, 26,224,183,124,229,186,250,113, 22,128,255, 70, 73,108,115,181,119,150,203, +175,145, 85,186,131,172,193,203, 59, 84, 53,106, 56,222, 15,147, 85,169, 43,246, 59,197,124,129, 86, 90,105,229, 97,144,117,217, +239,114,211,167,238,165, 90,116, 99,227,242, 83,127,255, 94,254,227,213,111,157, 23,121, 29,131,116, 64,108, 12,115, 38, 35,181, + 1,116,123,176,208,203, 24,236, 75, 95,132,197,207,105, 81, 86, 78, 98,161,219,133,185, 90, 37, 76, 5,134, 41,200,156,210,235, +206, 65,250, 49, 6,131, 55,156,236,194,123, 2,187,221,180,153, 56,177,175,150,118, 19,101,221,240, 92,209,221, 70, 6, 87,215, +235,178,231,149,236,174, 12,188,170, 7, 83,110,161,218, 6,245, 70,175,132,111, 9,174,237, 58, 50, 40,125,167,247,196, 23,153, + 18,131, 63, 13,238,183, 46,239,167, 74, 86,235, 3,127,184,209,161, 33, 34,223,123,130, 6,213, 97,159, 54,247, 71,254,171,159, + 7,174, 81,213,119,145, 17,223, 98,224,233,100,213,227,194,134, 45,255,159,136,124,161,225,120,247,168,234,175, 82,166,225,253, + 24,240, 36, 85,125, 7,112, 39,112, 22,240,131,192,143, 80,154,200, 31, 7,254,115,187, 28,182,210,202,183,129, 82, 63, 41, 15, + 16, 84, 59,233, 47, 99, 58,231, 48,214, 87,178, 60, 30,162, 29,152,139,178,252,245,124, 73, 17, 3,189, 57,130, 69,166, 65,243, + 2, 78, 97,104, 97,101,236, 56,235,236,121, 34,123, 59,105,252,131,114,195,173, 15,165,135,113,187, 87,232,155,102,218,139,200, + 45, 65, 1,155,157,129,162,124,216, 25,226, 34,178,168,170, 55,120, 47,252,146, 64,217,190,169, 97,243, 69,224,134, 41,127, 59, + 45,238,183, 65,234,197, 90,158,250, 16, 62,251, 63, 86,213,221,192,175,123,244,236,105,192,219,103,236,242, 86,224,223,206, 56, +222,191, 87,213, 11,201,234,201,227, 13,165,223,155,178,249,231,129, 87,156,194, 52,189, 86, 90,105,229, 97, 20,243, 96,159, 64, +110,186, 61,225,208,220,255, 78, 71,126, 3, 97,142,197,113,135,165,196, 49,112, 89,213,233,172, 36,108,128,203, 7, 63,234,127, + 44, 48,114,176,156, 42,199,134,194,214,237,243, 44,204,253,119, 88,126,158,188,252, 15,143, 63, 4,207,233, 54,239,177,222, 32, + 34, 87,157,136, 66, 15, 21, 29, 89,121,217, 91,216, 88,113,149, 91,201,160,236, 7,189,137,137,111, 10,115,213, 58,231,186,141, +172,237,233,237,167,251,253,126, 43,137,207,229,191, 22,248,135, 25,155,125, 1,120,169,136,252,194,122,169,103, 34,242,179,222, +240,186,115,202, 38, 75,222,155,191, 90, 68,218,130, 51,173,180,242, 72, 89, 75, 30,202,147,233,239,126,231,119,147,218,223, 71, +185,144,132,148,158, 73,153,139, 32, 50,153,231, 30, 5,151,227, 20, 44, 96,157, 50,180, 48,178, 17,134, 14,157,104,153,115,207, +249, 73,190,244,212,119,203, 27,222,112,218,231,212,122,136,187, 14, 97,239, 37,235,110,118,219,195,120, 93, 57, 28, 30,246, 68, +191,109,131,221,224, 78,187,251,253, 22, 27, 19,151, 1,207, 0,246,248, 57,122, 0,248,180,136,124,227, 4,143,247, 76,224, 9, +192,185, 94,153,239, 3, 62,182,129,244,185, 86, 90,105,165, 85,234,235, 44, 48,191,115,245,118,230,228,135, 25,232,255,133,211, +139,178,210,176,170, 24,227, 48,148, 74,218, 97,112,206, 0,130, 0,145, 57, 76,204, 91,153,159,251,125,249,241,143, 31,104, 95, + 93, 43,173,180,210, 74, 43,173, 60,204, 74,189, 80,238, 31,124, 81,143,253,199, 47, 39,113,175, 0,121, 54, 86,119,227,220, 25, + 40, 93,144,132, 88,150,136,228, 32, 78,255,153,174,252, 25,233,220, 29,242,211, 31,111,155, 77,180,210, 74, 43,173,180,210,202, +183,154, 82,159, 80,242, 31,187, 54,102, 31, 49,209,177,136,185, 45,142,197,113,218, 84,216,166,149, 86, 90,105,165,149, 86, 90, +105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165, +149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, + 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165,149, 86, 90,105,165, 21, 47,242,218, 23,191, 84, 59, 81, +140, 83, 3,168, 47,180,238,155,167,161,136,128, 65,125, 89,118,135,250, 62, 43,217,111, 14, 69,137,128, 8, 72, 85, 25,185,108, + 95,131, 67, 85,177,217,105,252, 17, 93,246, 89,179, 79,121,175,199,172, 61,167,128, 40,162,217,121, 67,201,142, 99,252,247, 22, + 95, 45, 62,107,228,230,143,237,200,142, 33, 40,170, 82,222,129,102,119,165,254,174,212,239, 81, 92,147,130, 72, 7,157,139,232, + 68,150, 56, 77, 73, 19,197, 58,176,121,107,247, 98,111,223,237, 93, 4,241,125,182,133,252,248,254, 30, 8,246, 17,201,111, 32, +251,168, 90, 92,101,113,111,254,170, 28, 96, 68,136, 81,156, 19, 18,212,183,208,203,158, 11, 24,196,108,135,238, 28, 38, 86, 34, +237, 99,135, 43,216,164, 60, 79,254,212, 76,113, 37,130, 74,249,189, 0,146,191, 19, 17,140, 40,234, 52,216, 79,242,215, 83, 60, + 87, 65, 17, 21, 28,138,243,239, 45, 27, 19,153, 56,255,126, 36, 60,135,127, 98,170,249,243,207,126,242,199, 97, 80, 34,255,110, + 82, 63,158,152,232, 91, 46,254,121,133,223,215,126,155, 50, 86, 36,120,182,193, 63,197,243,167,254,119,209,252,197,162,106, 33, +154, 35,234,117,208,193, 10,214, 6,175,177,248,199, 21, 95,184,240, 98,154,206, 57,249,107, 57,110,130,235,111,220, 47,191,172, +224,217,136,248,239,253,223,194,177,217,244,111,243,177,181,248,111,242, 25, 52, 60, 32, 13,198,152, 6,239, 65,169, 30,175,246, +110,168,204,239,233, 18, 30, 70,167, 28,111, 61,153,124,198, 58,125, 35,153,117, 10, 13,174, 95,214,189, 22,245,219,202,140,123, +173,223,159, 84,111,182,216, 89, 39,127,169,140,221,236,114,154,175, 73, 39,190,205,159,164,108,224,121,234,204,103,167,141, 55, + 36,144,244, 33, 29,130,233,250,198,154,154, 45, 12,166, 3,210, 65,195,130,165, 58,253,189,134, 43,167, 82,206,197,202,246, 58, +243,205,110,108,220,108,112,188, 54, 15,155,141,142,225,234,221, 76, 31,163, 58,243,126, 54, 62,232,153, 88, 19,227,109, 11, 11, + 56,171, 89,255, 20,175,212, 35, 63, 24, 28, 10, 98, 17,213,108,193, 87,131,120, 5,100,139,133,219,161, 56, 68,133,142,128, 81, +176,234,188,170, 87, 98, 85,172, 42, 42,177, 63,105, 2,154, 41,176, 92, 77,135, 55, 43,193, 50, 29,170, 96, 83, 44,114, 17,198, +239,229, 2, 51, 68,252,245, 43, 90,172, 79, 90, 95,188,106,170, 87,131,137,232,210, 20, 35,176, 16, 69, 36, 10, 35, 91, 94,131, + 76,236, 35,136, 63,137,171, 13, 63,241,191,105,160, 88, 17,136,130, 69, 63,127,239, 38,123,114, 53,133,156, 77,140, 14,165, 22, +204,143, 40,198, 18,117, 35,186, 93, 37,114,130, 18, 51, 36, 83,140, 34,245,247, 45,217, 60, 11, 38,124,185,152,100,215, 23,137, +160,166,124,222,185, 97, 97, 10, 85, 1,162,153, 33,151, 27, 10, 38, 88, 42, 32,107,172,151, 43,239,252, 90,157,127, 14,134, 82, +169,231,183, 35, 56,156,250,119,149,175, 1,249,126,154, 25, 47,136,241,239,209,102,215,170,211,151, 41, 13, 22, 82,153,152, 92, +249, 19,117,197, 67,119,225,228,148, 96, 33,214,252,184, 6,196,178, 45,178,140, 59, 49, 3,223, 8,184, 58, 35,163,226, 56,198, + 15,174,217,202, 92, 27, 39,181,214, 54,212,218, 10,173, 53, 5, 95,153,190, 34, 96, 12,106,109,101,193,209,202,194, 56,253,220, +225,129,117,198,194, 91,156, 87, 75, 75, 68, 69,202,175, 26, 12,171, 70, 69,173,179,151, 47, 13,198, 14, 21,221,123,178, 10, 94, +107, 55, 35,211,214,220,138,233, 40,200,250, 70, 66,205, 30, 42,230,152,234,116,197, 88, 92,156,169,140,219, 73,123, 86,154,181, +158, 1,188, 3,214,244,252, 52,152,255, 4,235,231,186,143,177, 50,198,101,234,251, 20, 17,156, 83, 70, 75, 71,177,243,231, 98, +246,188, 0,209, 14, 38, 29, 17,167, 35,204,232, 40,216,251, 64,151, 81, 19,129,116,139, 67,230,227,166,126, 49,149,179,105,254, +126,154,175,163,190,125,117, 77, 56,137,170,231, 83,109, 31,173,122, 36,179,140,146,117,182,171,158, 66, 78, 70,157, 87, 14, 81, +209, 63, 2,113,111,110,142, 97,127, 80,120,158, 42, 89,215, 83, 17, 45,189, 46,201,188, 52, 10, 37,172,184,220,235, 20, 65,144, +204,139, 83, 45, 60,185,220, 35, 84,175,188,173, 42,214,116, 16, 3,170, 41,106,189,209,233,189, 71, 42, 8, 1,133,210, 14, 61, +111, 83, 76, 55, 9,124,127,175,160,112, 68,193,126,149,161,227,175,199,251,187,197, 57, 10, 63,208,123,222,201, 24, 86, 4,127, +156,170, 37,158, 43,242, 2,201,168, 40,177,220, 55,149,137,161,152, 45,176,210,232, 4, 57, 4,156, 67,197, 32,146, 45,104, 73, + 48, 41,141,134,222, 45, 96,135, 48,182, 56, 17, 68, 19,212, 86,231, 65,184, 40,102,243, 71,203,225, 94, 32, 27, 90,120,137, 54, +112, 49,242,235,179,128,241,223,139,191, 65,167,117, 31, 79,138,145, 96, 84, 42,223,187, 10,218,227,183,203, 65, 17,213, 0, 53, +153,156,182, 6,147,141, 23, 3, 98, 12,206, 42,214,166,197, 66,156, 79, 92, 23, 44,134, 18,186,175, 53,227, 75, 1, 35,185,231, +149,161, 22, 34, 82, 83,144,254,122,139, 9,146,221,236,160,159, 25, 92,249,254,245,165,168, 88, 68, 66,131,162,230, 73,213,191, +147, 18,128,168, 46, 78,226,175, 34,244, 36, 67,243, 69,193,248,109, 52,240,158, 35,181,217, 28,171,153,194,213,243, 72,128, 28, + 53,120, 37,126,236, 79,115, 76, 69,252,252, 51,222,248,145,218,242, 89,220,223,228, 83,202,255,100, 8,208,159, 13,122,108,229, +166,178,105,127, 38, 71,201, 38,189,109,153,226,153,214,247,151,242, 25,205, 90,236,243,145, 46, 90, 26,244,154, 95,114,245, 94, + 37, 88,243,115,133,157,235,184, 9, 59, 83,107, 8,140, 72,128, 44, 78,191,176,198,241,153,255, 43, 51, 92, 92,169,155,254,205, + 15,199,136, 48, 76, 28,107,139, 71,216,253,148, 39,179,235,218, 31, 35,141,118,144, 44, 31, 96,109,109,141,254, 50,164, 7,135, +196,139, 7, 49, 43,119, 35,201, 94,144, 85,212,116, 81,141,217,192, 67,173, 14, 39,157,173, 68, 55,173, 32,103,108, 38, 51, 17, +128,233,232,200,102,174, 96,114,142,201,134,177,148,141,202,182,109,219,136, 5, 7,234, 10,248, 85,138, 5, 84,252, 0,204, 87, + 32,131, 10, 88,181, 37, 84,137,226,242,125,141, 18,249, 17,154,250, 99,229,222,181,195, 32, 98, 49,206,226,140, 65, 76,166,132, + 93, 0,113, 43,206, 43,164, 82, 97,215,173, 47,205,225,245,224,187, 92, 73,187,194,163, 86, 76,176,159, 6, 6, 96,221,209, 41, +124, 1,143, 28,168, 87,106,105,128, 26,148,131,204, 67,228, 76, 90,215,217,231, 24,193, 21, 11, 74,238,121, 74,197, 64, 41,220, +223,236, 62,204,153, 72,199, 97,147, 69, 68,165,152,228, 34,153, 66,159,244,188, 21,155, 12, 81, 11, 78, 4,231,164, 12, 97,212, + 6,151,170, 86, 86,146,252,254, 11, 99, 57,192,148,195, 53, 89, 84, 60,242, 82,134, 45,154, 6, 92,190, 14,184, 9,251,184,106, +216, 20,250, 54,208, 52, 82,131, 44, 67, 35, 61,215,175,162,142, 72, 74, 4,105, 82,137, 79, 0,150,213,235,204,149, 85,126, 62, + 41,183,146,202,162,155,135, 55,202,177, 0, 66,154,135,139, 50, 43,180,152, 19,133, 65,145,223,152, 72,213,227, 42, 22,237, 25, +223, 73, 14,245, 51,185, 93,174,141,165,162,142,203,115, 4,251, 90, 87,251,174,242, 50, 53,140,254, 76,190, 59, 66,111, 48, 8, + 89, 4,207, 54, 87, 91, 18,104, 90,149, 66,135, 85,238, 71,105,152,104,165, 13, 48, 97,192, 76,131, 66, 39, 84,240, 9, 41,119, + 41, 12,146,250,125,110,120, 5, 21,173, 28, 71,181, 65,157,135,115,172,182, 90,105, 62,174, 26,158,113,240,176,203,115,105,179, +162,144, 58,170, 51,195,219,173, 7, 95,234,107,224,132,138,113, 22, 36, 10,103,235, 84, 21, 21, 9,172,140,148,225,210, 17, 94, +250,226,103,242,157,215,255, 43,250,171, 75,172,126,243, 14,198, 91,215, 56,182,144,112,247,246,152,253, 59, 34,150,142,238,196, + 30, 62,131,248,232, 30,100,229, 43,144,238, 71, 76, 10,210, 91, 95, 17, 11,205,240,187,132,104,238,244,241,178, 49,229,216,188, +101,224, 27,204, 80,223,147, 71,217,180,111,126, 42, 21,123,131,183, 30, 23,202, 75, 75,143,211, 4, 3, 77, 36, 83,183,234, 87, + 92, 35,129,135, 27, 92,142,245,144,147,136, 16,171,224,252,254, 42,234, 61,180,220,219,180, 56, 7, 78,148,142, 87, 94,227, 26, +196, 93, 25,247, 90,198,202, 93,160,216,109, 48,212,197,171,218,220,171,215,138, 55,172, 65,140,185, 14,155,121, 8,181,116,136, +178,109,133, 0, 30,150, 34,230, 45,141, 47, 51, 51,133,212, 8, 78, 98, 34, 44, 56,139,211,236, 89,137,127,139,174,178, 48,248, +120,177,142,145, 45, 93,182,170, 33, 89,114,140, 3,175, 87,164, 58,153, 67, 56, 63,181,153, 50, 87, 9, 96,238,138,173,237, 67, + 39, 90, 26, 33,185,242,202,227,177,153,210,208,226, 24,197,255,185, 33, 18,196,207,155,161,175, 64, 9,138, 76, 93, 96, 68, 38, + 39,167,168,135,241, 38, 96,243,130,201,129,186, 18, 93,200,102,155,171, 94,131, 84, 61,229,198, 25, 41, 50,213,187,150, 10,252, + 30,238,146,155,141,145, 31, 57,105,205, 91,241, 94,191,191, 55, 45, 70,100, 9, 95,138, 76,122,165,141,138,188,126, 15,193, 59, +206, 81,170, 16, 87, 11, 99,123,197,190, 57,103, 35,120, 46,174,166, 92,203,115,107,205, 31,173, 43,242,208,163,175, 41, 15, 13, +149, 76,134,222,133,219, 84,244, 84, 77, 1,107,147,202,149,192,156,209, 16,251,153,162,162, 55,169,220, 3,223,217,135,202,178, + 57, 58, 43,230,217,184, 90,106,243,146,171,129,103, 94,197, 23,155, 80, 24, 38,148,123,197,158, 68,130,215, 53,137, 12, 77,132, +255,154,222, 79,101, 30, 9, 82, 83, 23,197,126, 34,104,154,160,131, 62,166, 51, 15, 29,155,169,129, 25,143,194, 8,172,166, 6, + 93, 58,196, 79,255,208,229, 60,251, 85,191,192,189,123,251, 44,221,245, 85, 70,131, 85,226,116,204,217, 29,216, 33, 41,231,111, + 25,115, 87, 55,230,222,173, 17,253,173,103, 17, 29,122, 38,241,226,217,232,232,203, 96, 6, 32,189,169,240,190, 84,230,162, 78, +199,221, 39,148,187, 78,219,100,243,138,189,110, 88,233,236,227,213,182,136,107, 84, 0, 0, 32, 0, 73, 68, 65, 84,223,139, 4, + 58,107,147, 96,193, 41, 11, 29,196,153, 23, 39, 62,246,233,176,222,184, 20,205, 38,174,104, 73,229, 42,227,201, 20,196,175,208, +226, 80, 13,151,229, 18,172, 55,193,183, 70,178,223,156, 10,163, 96,161,118, 19,175, 41,183,146, 51,194,157, 43, 60,231, 18, 94, +175, 83,216,124,164,170, 32,242, 85,195, 88, 53,136, 48,195, 98, 17,205, 66, 11,129, 58, 45,148,187, 74,174,228,164, 22,219, 11, + 17, 3, 69,196,100,158,190,201,226,212, 70,132,113,170,222,145, 11,148, 72, 8, 13,139, 65,221, 50,233,138, 48, 55,103, 88,136, + 13,135,146,236,126, 11, 72, 62,192, 11, 50,238, 66, 16,103, 20, 41,144,132, 92,177,219,156, 24,167,213, 88, 58, 26,198,180, 75, +114, 91,197,157, 14,148, 90, 25,207,173,123, 16, 90,134, 33, 84, 74,156, 68,171,207,165,234, 37,105,105,146,169, 20,225, 28,241, +232,136,171,199,100, 93,105, 50, 90, 41,162,220, 5,156, 26,226, 52,133, 7, 30,120,207,197, 54, 1,100,169, 65,156,211, 16,161, +145, 1,155,150,254,140, 63,134,134, 44,180,168, 67,103,174,139, 14, 86, 73,109, 77, 17, 20,247,207, 36,228, 29, 40, 41,102, 42, +242,112,191,170, 81, 80, 89,236,235, 20,170, 32,124, 32,129,241,226, 66,163, 98,194, 35, 14,208, 5,170,168, 65,179,210,172, 94, +171,134, 6, 70, 61, 14,220,116, 63,117,163, 74,154, 33,239,124, 91,151, 35,131, 26,174, 29,211,149, 59, 27,128,242,165, 54,247, +115,199,165, 92, 10,102,239, 95,133,165,167, 28, 59,208,206, 50, 73,217,156,250,124,117,166, 50,146,102, 34,149,150, 97, 77, 2, +180, 77,107, 70, 81, 51,110,151,131,173,194,112, 48,102, 52, 94, 99,254,177,215, 33,122, 9,230,190, 15,161,238, 16,200, 92,227, +190, 2,140,156, 48, 90, 92,225, 39,159,183,157,239,253,223,126,138,207,222,109,121,224,238, 59, 24, 14, 71,184, 84,137, 36,130, +196,209,193,114, 86, 39, 98,123, 87, 56,251, 12,229,206,158,229,208,150, 14,201,194, 99,137, 15,111,131,213, 47, 32, 28, 67, 11, +197, 94, 51,116,188, 19,169,204,138, 23, 84,236,173, 19, 34,150,109, 74,197, 78,132,235,102,235,213,210,112,214, 77, 40,226, 83, +163,234,165, 12,147,104,182, 0,155,146,114,224, 20, 44,185,135,173, 56,175,197,165, 32,161,101, 64,115, 9,177,151,241,117,227, + 23, 14,171,138, 13,233,105, 90,242,223, 43,166,150,132,118,101,121,236, 18,126, 52,133, 79,225, 2, 69,229, 42,170, 70, 11, 11, + 73,107, 30,181,241, 42, 47,159, 8,110,194,203,172, 18,114,114,210, 87, 65, 96,243,208,181, 9, 24,223,185,122,144, 98,177,178, + 25, 92,140,203,136,101, 64, 44,133,142,170,188,179,138,245, 45, 17,154, 10,199, 86, 96, 41,133, 72, 28, 98,118, 32,157, 51, 80, +231, 13, 44, 12, 42, 17, 18, 69, 85, 24, 48, 88,244, 93, 77,209,229,191, 72,115,180,177, 10,193,122, 15,206,212,166, 89,211,242, +224,113,241,224, 6, 38,169, 41, 98, 12,152,168,224,238,103,207,212,213, 25, 96, 19, 80,112, 93, 65,185,194,120, 41,125, 74,145, +201,235,147,250,157,250,177,170,193, 24,146, 66,161,101, 75, 95, 39,130, 56,154, 78,104, 21, 12,104,194,156,235, 19,139, 22,164, +195,236, 52,166,132,164,115,222,137, 72,229, 74,196, 24, 68,162,234, 61,214,183,105,248, 46,124,121, 82,185, 29,153,132,207,165, +106, 84,152,202,117, 76, 63, 79, 37, 68, 27,190,207,134,107, 40,231, 80, 78,116,242,243,161, 48, 39,167,236, 39, 77, 31,101,170, +247, 98,130,221, 69,100, 67,132, 39,169,132,208,100,157,237,170, 40,128,212, 17,137, 6,234, 85, 62,183,101, 29,248,181, 48, 94, +105,226, 21,204, 32,132, 53,125, 35, 84, 66, 29,245,195,105, 96, 87,137,102, 10, 94, 10, 70,133, 84,130, 81, 74,149,174, 27, 9, +172, 14, 44, 81,178,196,247,254,208,247,243,132,235,127, 20,123,217,101,216,133, 39, 64,234,106,110, 80,121, 13, 78,132, 99,203, +150, 23, 95,210,231,123, 94,121, 3,255,124,244, 98,142,222,251, 85,210,113,130,224,136, 34,111,152,171, 67, 35, 97, 36, 6, 81, +229,162,200,112,213,150,152,199,156,171,116, 47, 16,146, 61,123, 96,235,211,128, 93,136, 38, 83,194, 37,235, 67,222,205,184, 8, +235,143, 24,221,164,102, 12,119,148,205, 24, 13,178,238,213,200,244,215,127,226, 84,191, 96,190,153,212,179,211,157, 58, 15,250, +105,113,120,159,196, 6,154,169,184, 72, 12,198,100,158,140, 83, 37,197,101,236,120, 41,227,217,234, 9, 21,198, 16, 40, 90,131, + 11, 56,235,154,211,196,188, 45,145,165,196, 73,113, 12, 41, 60,194,124,226, 24,162,156,144,231, 19,236, 64,124,114, 91,104,161, + 24,194,187,112,148, 10, 2, 4, 99, 66,226,147, 79,133,211, 80,249, 75, 17,127,206,177,137, 60, 28, 97, 66,184, 50, 24, 86,153, +103, 14, 78, 45,206, 90,156, 83,156, 11,225,205, 28, 6, 39, 80, 86,229, 21, 68, 2,206,192,168,240,106, 13,230,140, 5,230,207, +136,136,115, 50,157,100,207, 62, 54, 18, 36,154, 85,199, 69, 90,129,223,181, 50, 65,234, 48,149, 86,124, 63, 41,188,243,240,154, +164, 97,196, 21,207, 64,165, 72, 21,108,162,238,154, 72,136, 99,227, 73,148, 65,124, 79,202,108,133,144,150, 83, 85, 90,130,136, +241, 40, 74,128,105, 21, 80,234,180,213,181, 84, 88,166,160,253, 87, 99,241, 57,115, 95,211,196,123, 62, 82, 49, 1, 37, 48, 10, + 68,149,254,192, 50,118,217,184, 9, 21, 73,227,194, 27, 40, 95, 65,179,121, 50, 85,145, 23,230,148, 87, 10, 82,187, 63,169,159, + 40, 59,246,132, 17, 32, 53, 37,156,161, 14,210,160,152,165,234,230, 22, 28,142,252, 89, 79, 92,231, 4, 83, 66,138,247, 41,210, +172,252, 67, 37, 89,127, 87,211, 12,140, 70,210,145,108,156,199, 92,181, 99,100, 38,249, 77,234,198, 77,195,189,212, 61,229, 13, +169, 13,169,190,219,208,160,173,171, 32,169, 57, 8,212,222,235,228,234, 94,159, 99, 97,218,105,104, 99,151,103, 45,169,196,229, + 29,173,165, 66,188,182,200,171,127,232, 74, 94,241,242, 87,113,165, 30,100,199,182, 3, 36, 11, 91, 64, 59,158, 77,164, 19,207, +246,248, 72,120,108,116,156, 31,252,193,167,115,223,142, 23,113,120,223, 61, 36,227, 21,140,142,137, 80,156, 38,136, 81, 58,113, + 23,136, 49,206,162,198, 50, 54,194,174, 72,120,202,124,196,101,103, 66,111,143, 33,221,189, 7, 22, 30, 15,218, 5, 77,167, 42, +198, 42, 10,182,158, 65,199,212, 16,143, 76, 83,214, 50,219,212,170,255, 93, 54, 96, 54, 76,215,231,114,162,214,196, 9,139, 17, +201,178,205,179, 52, 53,197,145, 98, 53,205,148, 84,238, 15, 43,153,178,210, 12,118, 52,162, 68,100, 9,233,206, 43,102,209, 50, +214,232, 60,188, 45,146, 43, 8, 45,198,173,122, 4, 32,124, 92, 21,175,204,239, 19, 21,228, 48, 41,246,143, 69,136,243, 73, 33, + 97,122, 85, 45, 78, 37, 84, 60,207, 48, 6, 30,139, 16, 73,233,121,132,192,135,171, 83,211, 60, 20, 91,164,108,229,139, 90,192, +128,215, 90,198, 76, 70,254, 83, 18, 40, 22, 65,231,167, 76, 8,180,184, 64,177, 22,102,138, 68,104,186,136, 93, 57,196,118, 17, +118,198,153, 17,100, 36, 55,177, 50,133,149, 47, 12, 82, 49, 68, 60,162,144, 31, 75, 39, 67, 20,121,188,188, 36, 86,149,100,192, +156, 67,145, 67,213, 21, 15,177,158, 71, 43,161,231, 91, 37,185, 97,202,119, 99,252,201,196, 43,104,241,208,125,227, 4,148,146, +164,137,104,246, 44,136,203,124,108,153,140, 5, 79,122,235, 82, 67, 66,106, 11,185, 63, 71,234,164, 72, 3, 20,164,178,112, 74, +176, 64, 59,145,202,177,138,115,228,134, 96,254, 28,188,193, 83, 9, 95, 56,109, 80,228, 33,249,205,160,234,205, 69, 35, 19,215, + 82, 26,180, 85, 52, 35, 84,140,197,191, 21, 8, 67,107, 30,190,212, 64, 12,169,226,199, 26,144,225, 68,166,160, 11, 50,225,181, + 20,215,214,168,216,203,176, 81,163, 55, 34,205, 70,138, 76,106,201, 13, 45,118, 66, 72,232,155, 98,245,201,116,231,173,106, 4, +203,166, 92, 61,173, 17,123,171, 80,172,100,161, 14,165,102,138, 83, 69,145, 26, 12,162,153,236, 48,173,122,228,213,171,209,192, +233, 40,157,179,149,165, 33, 47,191,106,129,107,126,248, 85,236, 61,118, 54,115,199,143,176,115, 52,196, 14, 14,128,164, 25, 97, +174,118,235, 99,133,104,117,204,245,207,234,210,123,246,203,185,231,200,153, 36,107,139,144,164, 89, 26,116, 58,166, 35, 74, 20, +119,177, 38,198,210, 37,210,152, 72, 98, 98, 81,172, 17, 22,162,136, 43, 22, 58, 92,114, 78,151,232,156, 8,187,245, 44, 48,103, +101,233,170, 33,162,161, 77,228,201,147, 87,116,178, 97, 24,158, 41,227, 56, 55,150,117,131, 32,128, 86,208,175, 13,193,240,167, + 74,189,251, 29, 99, 35, 16, 73, 78,148,195, 67,237,100, 42, 94, 33, 85,201,188, 81, 20,171, 25, 65, 43, 31,136,145,130,197, 96, +125,188, 93, 17,108,185,100, 85, 99,225,234,138,201,154,199,231,108, 1,183,234,100,190, 93, 30,215,206, 11,224,168,120,246,185, +143,177,139,208,241,208,186, 21,201,152,156, 57,104,238,175,215,105, 22,103, 70, 92,150, 46, 69, 22, 18, 48,158, 6,229, 2,126, +149, 86,108, 50, 13,206,174, 5,129, 80, 85, 10,143,222, 85,152,241,117,242, 92,192, 26, 15, 97,248,154,145, 81, 29, 10, 30,230, + 53, 6,134,142, 99, 35,143, 44,160,168, 75, 43,172,227,202, 50,235, 61, 61, 19, 28, 3,159, 58, 86, 22,243, 41,207,232,234, 11, + 79, 81,128,167, 92,248,172,191, 63, 19, 42,187,138,119,109,202,184,178,152,130,229,160,120,171,198,248,252, 3, 45, 23,241, 60, +157, 13,157, 49,120, 11, 7,219, 65, 52, 71,103,190,131, 14, 87,176,169, 67,101,202, 98, 71,105,108,169,148,228,199,137,120,166, + 82, 33,141,133,139,165,228,113,230,154,119, 95, 33,223,105,144,250,150, 27, 68, 26,166, 53,213, 24, 63,245,116,183,208,115, 50, + 6, 99, 98,207,172,183,160, 14,231, 2, 76, 41, 79,129, 43, 72,121, 13,132,168, 90,170,156, 22, 36, 86,102,198,240, 75, 50, 32, + 19,249,212,101,204, 94, 27,158,157, 4,161,241, 58, 43,185,129,237, 79, 72, 2,211,233, 68,103,201,227,204,155, 97, 35,207,246, +220,167,198,219,117, 50, 94, 28, 42,230, 2,170,215, 10,147,111,230,194, 44,225, 17,180,150, 29, 46,165,114, 47,211,212,180, 74, + 18,156, 17,163,175,103, 77, 76,155, 57,149,154, 24,193,108,207,205,246,227, 35,225, 9, 11,107,252,200,203,174,230,216,217, 79, +228,248,215, 15,211, 79, 97,109,217, 34,253, 99, 96, 44,101,226, 97,121,190,229, 33,124,215, 25,107, 92,251,130,199,243,141, 45, + 79,102,180,244, 0, 73, 58, 68, 85, 73,173, 37, 54, 66,188,237,209,136,217, 70,162, 96,199, 41,184, 21, 48, 35, 76,236,136, 76, + 7,193,177,205, 56, 46, 84,225,208,252,152, 99, 11,138, 70,219, 17,251, 64,131,209, 85, 37,126,234,122, 74,116, 26, 83,254,100, +224,247, 19,136,110, 87,235, 99, 8,179, 82, 54, 31, 10,137,213,199,155,139,201, 27,172,126, 70, 50, 88,222,106, 25,231,110,138, + 19,217,144,166,161, 25,241, 37,103,126,171,175, 66, 7, 16, 5,202,220,248, 5,212,105, 9, 73,229,112,184, 6,185,176,102, 98, +193,247,191,122, 88, 95, 37, 70,140,160,145,128, 75,192,150,198, 68,158,159,238,114,117,166, 50,193, 18,215,134, 74, 91, 38, 32, +240, 24,255,155,243,121,227,249,132, 53, 34,149, 88,150, 41,130, 10,249,189,226, 13, 28,169,248,144, 58, 1, 7,151, 74,194,230, + 87,101, 60,187, 93, 41, 56, 11,214,105, 1,127, 75,101, 33,202, 22,225,140, 88, 39, 21, 67, 66, 2, 72,182, 36, 50,106,101, 17, + 83, 76,185,184,231, 6,142, 8,198,243, 41, 36, 32,165, 84, 88,234, 74, 81,128, 71,131, 92,103,167,138, 77,109,134,180,104,238, +245,103, 47,184,185,178,152,103,229,135,107, 46, 6,213,132, 57, 82,212, 8,171, 98, 42, 17,195,146,169,223, 68,164,146, 96,124, + 84,139, 50,212, 21,187,230,213,225, 42,225,213,140,121, 95, 81,114, 40,248,226, 73, 57,108, 40,245, 1,217, 52,161,131,244,163, +144,195, 96, 76, 68, 28, 65, 20, 25,156, 66,154, 56, 48,146,101, 24, 21,138, 52, 72,203, 82, 38,217,239, 30, 93,169,165,182, 55, +146,228,154,178, 5,178,148, 74,169, 13,253, 42,225,176, 26, 95, 14,158,101, 77, 9,139,212,210,198,234,222,142, 54,179,187,235, +176,189, 78, 16,190,170,168, 18,186,177,165,177, 86, 41,160,170,249, 26, 22,221, 74, 22, 64, 33, 46, 48,126,214, 81, 26, 13,117, + 40,154, 72,114,197, 51,170,145,169,180,198,171, 8,207, 89, 49, 82, 38,140, 35,169, 20,213,106, 14,184, 41,201,208,241,156, 39, + 25,206,189,252,153,236, 59, 24, 97,214,238, 99, 57, 29,179, 52, 74,136, 37,134,137,114, 78,217,218, 21,143, 29,223,245, 68,232, + 93,252, 52,150, 30, 48,184,254,253, 24,181,140,198, 99,182,119,198,156,117,222, 46,164,115,152, 84,247,178, 98,182,145,232, 5, + 72,114, 49,157,113, 31, 39,199, 50, 39, 44, 53,140, 93,159,158, 77, 57, 83, 70, 28,239,165,104, 20,251,117, 81,131,160,109, 83, +162,218,122,228, 52,173,189,154,117, 24,237, 51,169,241,181,241,171,212,158,172, 76,164, 54,110, 86,107,203,172, 83,215, 46,240, +100,168,115,177, 83, 87, 16,129, 34, 63,128,172,230, 16,185, 41, 96,223,156, 45,158,191,114, 13, 86,121,241, 30,190, 20,123, 40, +182, 96,126,103,199,118,190,212,104, 62, 8,173, 95,168,162,250,163, 43,242,159, 3, 67,160, 70, 5,201, 13,130,212, 51,221,141, + 8, 81,100,192,100,249,240, 54,133,196,151, 55,205,185, 64,121, 74,154,147,146, 80,167,249,177,166,240, 33,194, 34, 78, 69,102, +149, 74,165, 60,167, 4,201,223, 81,141,204,103,114, 78, 66, 14, 13,234, 36, 4,111, 42,219, 75,165,212,107,104,123,219,156, 16, + 23, 84, 92,202,179, 22, 10, 56, 86,130,231,229,145,145, 28,213,146,138,107, 84,122, 46, 18,111, 1, 99,209,100,224,105,200, 82, +181,148,155,242,115, 11, 56,191,100,167,107,144,144,174,190, 86,129,132, 94, 97,113,175,213, 34, 67, 97,186, 85, 72,150, 19,181, + 12,251, 89,158,120,100,202, 56,126,184, 4,170,204,152, 73, 19,110,158, 52,198, 12,209,192,147, 84,154,149,154, 10,166,147, 97, + 61,227,113, 45,222, 38,165,103, 44, 51,149,105,110, 12,105,134,140,121, 47,221,248,218, 6, 82, 79,181, 42,210,156,167, 51,229, + 43, 6, 75,165, 60,242,172,156,121, 41,138,200,148, 99, 87, 39, 82,209,164,182,111,197,168, 11, 80,147,234,189, 87,180, 82, 69, +127, 77, 62,139,134,136,117,192,157,208,105,136, 11, 83,146,239,155, 98,237,132, 40,192,100, 78,248,204,181, 85, 3, 69,107,252, +179,213, 89, 30,216,236,194, 45, 82,243,196,203,202,187, 58, 1, 55, 87, 13,157, 32,253, 82,103,251,236,218,160,208, 7, 14,206, + 51, 35,158,250,196, 51,121, 96,251,227, 57,126,192, 96, 83,131, 77,149,184,155, 50,220,182, 7,142,222, 3, 58, 4,153, 47,180, +217, 32,133, 11, 59, 9,143,185,124, 27,247,216, 11, 25, 30, 91,198,165,171,244, 71, 35,182,184, 49,115,157, 57, 14,126,241, 94, +226, 3, 31, 97,207,142, 49,231, 93,208, 99,249, 81,231,177,124,230,119, 99,236,181,208,223, 74, 95, 31, 64,211, 57, 70,171, 74, + 58, 58,202,188,166,152, 24,172, 49,229, 10,167, 65,206, 76,237,221,200,148,154,130, 82,223, 66,116, 93,131,111, 51,168,207,100, +114,132,176, 33,246,123,200,215,218, 52,196,116,138, 92,121,129, 88,243, 50,174, 62,190,151, 33,228,182, 40,157,153, 1,233, 37, +201, 41,175,202, 37,206, 85,194, 7, 18,212, 47, 51, 62, 47,187,188, 86, 45,148,171, 6,185,163, 78, 93,205, 58,150,138,237,234, + 10,147,194,255,235,189,190,236, 90,243,162, 57, 14,235, 1,241,184,136, 59,151,112,189,171, 67,220,149,250,235,101,169,210,240, +161,186,138,253,152, 21, 64,169, 70,108,171, 75, 82,238,209,230,112,179,106,158,166,227, 21,187, 15,194,154, 32,182,110, 2, 3, + 32,143,207,150, 16,125,153,246, 21, 22, 59, 45, 35,102,134, 74,194, 86,238, 53,211,160,148,107, 11,138, 41,210,159,114, 5, 60, +102,174,147, 85,134,235, 39,190, 78, 65, 81, 65,144, 32, 63,191, 92,140,203,144, 67, 45, 55, 87,104, 72,223,211,114,144, 7,206, +173, 72,157, 28, 85,214,211,207,223,143,149,140, 25, 81,169,120, 86, 73, 62, 44,175, 75, 27,106, 63, 77,228,156,214,188,221,210, +128,104,240,117,164,138,214,170, 77,125,169, 94,227, 61,121,109,220,182,217, 43,174,122,163,214,102, 1, 14, 71, 86, 64,198,186, +201, 80, 64,129,178,232,236,227,133,139,153,169, 40,252, 89,240,123,181,218, 92,221,179, 46,114,249,131,162, 54, 50,197,213,145, +122, 26, 95,237, 94,195,106,142, 19,151, 29,188,187, 9,131, 90,154,189,243, 9,175,122, 61,239, 93, 38, 67, 48,235, 42,223,208, + 72, 9, 98,189, 19,227, 71,235, 70,128,110, 76, 89, 84,198,127,137, 44, 77, 84,233, 33, 76, 67,164,154,169,163, 52,122,182,117, + 69, 56, 74,132,167,108,179, 92,116,209,118, 70,115,219,145, 45, 91, 72,227,121,230,172,227,188,173, 41, 95, 63,239, 76, 92,255, +137,152,193, 63, 65,212, 7, 51, 7, 8, 73, 10, 23,109, 75,152, 63,119, 55, 15, 12,206, 98,188,178, 72,178,182, 12,201,144,180, + 11, 31,252,166, 97,239,199,246,210, 27,142, 56,103,126, 27,207,253,170,229,187,174,220,199,206,171,255,130, 35, 59,231,232,240, + 44,204,240, 40,199,117, 76,146, 26,116, 60,194,104,138, 68, 26,120, 82,211,136,101,186, 49, 98,218,116,171,169,113,227,141,234, +205, 18,145,154, 28,153, 27, 50, 14,116, 35, 53,238, 31, 60, 13, 31,103, 85,225, 44,206,229,113, 21, 65,140, 34,146,213,115,207, + 27,126, 56, 95,202, 84,140,167,207, 69, 16,185,108, 1,114,121, 13,115,111, 21,231,196,178, 92, 89, 85,154,131, 4,183, 21,249, + 7,100,189,197,106,252, 36, 42,139,224,232, 4, 24,163, 26, 0, 78, 2, 70, 83,172, 85,172,100, 12,122, 19, 24, 35,121,129, 21, +215, 16, 90,211, 0, 22,200,139,117, 72,165,120,108, 73,128, 49, 65, 5,248, 50,141,173,220, 87, 3,100, 65, 43,206,112,181,174, +118,184,141,171,133, 22, 66, 67, 95,131,120,116,105, 52,228, 46,183,169,170, 52, 41, 27,131,152, 16,150,205, 17, 5,201,239,205, +213, 96, 62,111,160,185, 4, 59,208,236,253,154,144, 48, 40, 69, 94,172, 11,226,198,211,189, 18, 9,140,143,201, 1, 42,193, 56, +160,161,172,181, 76, 12,102, 45,203,166,206,152,204,210, 20, 56,159, 49, 3, 43,144,122,161,155, 13,136,155,178, 63,133,241,151, +230, 6,169, 17, 63,166,252,187, 80, 55,177,224,215,115,202,139, 67,250, 48, 68,146,186,192,124,149, 70, 35, 65,107, 53, 14, 84, + 26, 10,213,212,225,218,137,240, 68, 83,153,208, 42,194, 64,195,113,235,231,154, 96, 12,171,174, 11,119, 79,187,238,122, 28, 89, +106,232,151, 78,225, 14, 76,219,127,102,206,121, 25,175, 43,144, 67,149, 13, 36, 57,123,164, 49,223,182,177,188,146, 80,169,112, +185,225,218, 96,147,211,160, 68,100, 84, 43,165,103, 39,102,134, 76,134, 63,194,113,164, 21, 72, 59,115, 40,118,116, 12, 91,165, + 79,175,187, 74, 87,198,216,225, 49, 34, 99,185,180, 23,179,186,123,192,253, 92, 68,116, 79,135,120,229, 14, 68,142,227, 68,137, + 70,202,163,246,244, 73,207,190,152,227,171, 11,172, 29,255, 6,201, 96,133, 5, 73,184, 79,122,236, 61, 60, 34,150, 69,116,123, +143,187,212,112,239, 17,131,254,227,118,174,235, 29,101,249,105, 31, 96, 28,159, 75,151, 93,140,221, 33,146,212, 32,214,120,114, +181,248, 26, 17,174, 22,128,156, 94,187,125, 50, 56,176, 73,245,183, 9, 29,169, 19,207,116,131,209,112,213,117, 79,180,217,130, +199,155, 47,144,156,195,239, 33,134,175,214, 43,228, 44,158,110,124,115, 23,139,226,156, 45,216,226, 5, 27, 91,179,148,152,176, + 8, 74, 88, 30,209, 41, 88, 21,140,143, 22, 59,241, 94,107, 81, 94,180,106, 85,186,138,159, 92, 54, 71,112, 18,194,162, 90,177, + 84,243,146,162,106,133,212,147,231, 42,101, 82, 3,136,219,213,150,208, 18, 74,212,138,199, 96, 60,236,229,168, 50,116, 43, 41, + 88,249,109,170, 6,199,159,156,252, 97,238,188, 78, 12,154, 90,184, 79, 39,171, 64, 22,199, 14, 60,103,227,159,131, 83, 41, 82, +152,148,178, 90, 92,165,132,143,116,178,164,236,116, 80,196,191, 77, 16, 30, 80,129, 84, 77, 17,138,144, 74,230, 43, 65,106, 89, +149, 82, 84,185,151,226, 25,202, 44,213, 91, 40,181,188, 14,188, 76,113,101,164, 24, 12,149, 32,248,164,130,204, 14,152,153, 86, +110, 74, 44,109, 86, 19, 9,159,119, 45, 30, 98,175,119, 92,107,130, 65, 11,131,203, 24,140, 55,176,156,205,200,125, 18, 42,153, +176,127,223, 68, 61,120,129,122,193,227,226,217, 57,255, 14, 75, 58,190,214, 13,133,224, 26,181,102, 64, 84,223,125, 9,161,203, +196,115, 44, 43,173,229,161,156,137,210,187,121,197,188, 92,233, 6, 77, 86, 38,182, 15, 74,207,230, 80,106, 37, 13,190, 9, 37, +169,123,211, 13,202,106, 90, 33,157,137,145, 53, 13,154,159, 44,237, 86, 45, 27,220,216,189,174,161,176,196,132,183,221,228, 81, + 86,139, 82, 77, 93,172,117, 86,149, 61, 41,185, 40, 53, 55, 51, 44,158, 19, 22, 90,170, 24, 80,181,107,145, 8, 22, 71, 17,195, +227,107, 36,199, 14,178,114,223, 14,162,225, 65, 52,114,204,137,112,101, 71, 89,120,212, 42,251,183, 94,192,240,224,110, 56,114, + 15,131,254, 65,182,196, 35, 46,122,252, 25, 28,237, 62,153, 99,251,239, 97,184,124, 24, 73, 82, 58,177, 99, 49,157, 71, 22, 15, +209,227, 56,152, 46,187,128,229,121,120,247, 81,225,172,207,205,115,209, 89,247,115,244,210, 59,160,247, 66, 36,157,195,197,138, + 72,134,163,170, 85,208,113,165, 12,239,164, 1,198,186, 33,146, 10,209,183,176,146,116,118,233,183,117,170, 4, 87, 93,185, 25, +224,203,196,247,245,220, 7, 78,140, 44,119,138, 10,210,196, 42, 37, 83, 58,143,203,169, 10, 86, 41,226,162, 57, 8,173,170,144, +134,233, 65,121,105,214,114,180,134, 48, 93, 44,121,110,118,182,248, 25,173, 54, 97,113, 69, 49, 18,241,197, 92,202,135,227,180, +100,209, 87,154, 36, 4, 36,180, 60,143,190,100,167,251, 88,174,201, 80, 4,171, 76,132, 0, 74,207,176,196,206,138,238, 97, 53, + 69, 85,152, 24, 30, 5,200,152,203,165,215,161,146,101, 0,184,210,156,169, 64,234,160, 24,161,214,101,172, 26,203,151, 16, 90, +203,243,135, 27, 34,117, 5,116, 47,121,101, 62, 41,140,136,105,121,148,217,162,238,136, 5,226,200, 48,116, 77,195, 69, 2,162, + 98, 96, 40,229,177, 86,149,192,251, 47, 59, 88, 25,255, 62, 92,222,225, 76, 66,207,171,172,118, 47, 53, 3, 64, 43,181,103, 39, +109,225,220,144,203, 82,228, 76,165,139,216,180, 82,171, 70,197,135, 53,116, 34, 25, 70,130,188,222,137, 24,187, 78,201,231,111, +242,176, 9, 75,194,106, 97,220,162,158,216,104,243,237, 76,145,215,174,154,135,140,130, 96,133, 43,211, 59, 43,229,101,243,126, + 0,210,241,144,111, 66,201,145, 11, 70,132, 54, 41,165, 42, 25,111,146,171, 23, 6,100,181,228, 18,132,139,221,148, 74,109,149, + 86, 69,194, 36, 51,158,102,229, 94,182,206,173, 1,170,181, 16, 65,213, 91,109, 34,175,110, 76,185, 79, 64,243,245,142, 99,149, +182,171, 82, 9, 21,104, 65,210,243,229,136,101, 50, 83,163,113,110,133,140,119, 89,191,197,108,197,136,209,245, 74,226,214, 56, + 36, 90,237, 3, 89, 9,115, 52,114, 16,178,223, 59, 6,142, 36, 29,190,121, 95,159,228,254,127,102,105,245,124,116,220, 33, 30, + 15, 89,113, 41,177, 53, 92, 21, 9, 23,237, 94,229,155,103,110, 97,185,255, 88, 18,123, 5, 79,154,143,233, 94,216,227,238,125, +171,172, 45,222,143,179,150, 24, 97, 28,195,225, 99, 99,228,248,126, 48, 41,208, 67, 81,182, 11, 28,238,192,167, 14,199, 92,122, +255,144,249,139,247, 97, 59, 3,122,221, 57,132,101,208, 49,137, 83, 52, 77,125, 58, 27, 13,253,117, 26,200,167,141,230, 74,125, + 29,211,245,189,242, 13,108, 50,113, 78,213,102, 18, 93, 83, 56,199,103, 3,205,138,194,108, 8,126, 63,217,216,186, 66,156,193, +213,174, 88,188, 93,169,106,203, 82,165, 26,244, 72,243,139,187,213, 26,171, 91, 43,115,166, 2,183, 71,133, 50,202,190, 75,115, + 15, 60,168, 76,165, 62,101, 46, 91,164, 51,104, 62, 45, 60, 84,169, 88,163,174, 98, 81, 41, 70,173, 39, 49,151,144,120,158, 74, +229, 92,146, 41, 93,137, 38,122,159,135,245,226,167,121,207, 81,173, 42, 89,169,240, 92,230,201,155,236,122,173, 86,201,109, 69, +137, 26,109, 2,169, 43, 45,170,131, 70, 46, 97,173,251, 42,128,175,149, 42,123,117,240,170,250, 25,202, 84, 55,112,216,177, 45, + 60,122, 87,225,156, 6, 77, 59, 26, 8, 55, 90, 75, 77, 34, 32, 25, 78,212,252, 14,114,113,179,205,187, 89,111,242, 90,158,109, + 54, 78, 92, 86, 32, 70,171,185,194, 4,236,253, 80, 9,212,153,236,149,142,101,206, 85, 22,217,106,124,188,108, 70, 34, 1,156, +173,161,219, 57,101,138, 73,197, 16, 40,145,153, 2,141,113,206,231,224,107, 80,235,185, 44, 59,155, 79,112,173,196,219, 5, 34, + 79, 13,117, 41, 97,135, 56,167,130, 58, 71,167, 23,101, 6,216, 32,161,222,145, 37,132,197,195,204,134, 80, 1,229,132,157, 58, +252, 94,214, 23, 47,210, 92,106,241,233, 26, 58,161, 50,197, 11,108, 74,253, 11,234,225, 55,196,189,155, 17,150,233,176,121, 83, + 77,252, 77, 43,247,130, 4, 89, 83, 18,202,140,237, 33,175, 56,160,193, 51,154,205,108, 15, 88,251,178,126,233,217,106, 67,156, +141,196,223,195,188, 15, 87,225,245, 20,221, 42,165,172,128, 89, 47,235, 60, 31,193,253,137,225,246, 47,119,121,250,163, 63,142, +156,189,133, 97,239,105,164,107, 9,145, 89,100,220,137, 48, 86, 56,123,108, 57,167, 59, 32,218,214,165,211,235, 16, 27, 97,239, +209, 69,134,107, 43,217, 88, 53, 49, 93, 3,135,220, 86,142,220,183, 72,119,237, 94,232,245, 8, 25, 85,243, 49,220,147, 8,135, + 14, 24,206,232, 47,178,122,198, 42,105, 50,143, 14,215,176,118, 76,234,124, 75,110,135,119, 81, 58,205, 15,104, 3, 16,188,204, +210,130,178,121,156,126, 2, 60,223,180, 98,149, 0,133,217, 64,233,226, 7,131, 67,231,111, 34,118,158,233,110,157,207,233,206, +109,115,205,146,172,202,162, 32, 90,120,161, 38,239,155, 94,153,136, 90, 88,140,170, 82,203,131, 41,211, 4, 68,115,239,150, 2, +226, 86, 9, 84,123,208,102, 53, 10,212, 68,222,204,197, 96, 50,159, 58, 44,124,161,121, 33,152, 42, 93, 74, 85,209,232, 44, 84, + 28,105,178,132, 67,232, 24, 42,125,202, 3,245, 91,201, 49, 23,169,251,153,213,251,145,194,103,211, 32,167,126, 50, 15,189,137, +242, 17, 18,141,181,142,250, 81, 77,242,168, 23,171, 49, 4, 49,110,202,120,175, 86, 10,135, 84,139,229, 56, 96,164,165,199, 95, +164,162, 53,176,237, 93, 96,109, 24,255,110, 66,213,111,124, 8,101,226,190,242,142,101,254, 24, 38, 22,186, 8, 73,226,124,171, +216,176,150,127,200,141,160,226, 17, 78, 6,112, 27,188,171,192,104,155,232,130, 37,101,233,219,137,194, 81,174, 6,239,201,250, +149,171, 92,193,217,215,162,141,176, 22, 93,210,210, 66,121,134,138, 40, 43, 60, 83,163,235,169,130, 49,196,113,148, 25,182, 54, +194,165,105, 25, 34, 18,176, 38,130,116, 12,174,234,145,105,144, 87,216,212, 90, 68,106, 61,194,101,138,114,156,100,144, 51, 49, +238,107,214, 65,165,163, 69,165, 27, 92, 93,213, 7,222,127, 97,216,105, 25,226,209,105, 13, 72,234, 33,130, 74,104,104, 58,100, + 95,141,183,135,171, 90,230,164,100, 63,254, 61,168, 43, 58, 67, 96, 34,104,104,241, 84,180,107,173, 2,117,155, 32, 49, 75,153, + 98, 53,205,224,144, 13,194,176, 19,187,228, 79,213, 4,134, 86, 72,172, 43, 27,109,149, 72, 86, 54,122, 99,148,113, 79,120,239, +254, 30,242,161, 53, 30,243,172,247,227,118, 31,101,112,238,149, 68,107, 59, 49, 75,135,177, 28,103, 32,150,142, 42, 50, 84,146, +100,204,162, 75, 88,235, 39,152,113, 74,212,241,245, 57,230, 59,220,189,216,101,176,255,171,108,141, 6,168,108,173,204,224,174, + 40, 75, 10,135, 87,132,115,198, 41, 67, 77, 25, 15, 45,118, 60, 0,117, 68,113,148, 57,143,182,223,200,171,153, 68,159,166,171, +182,147, 34,138, 55, 32, 37, 19,222,255, 6,120, 23,211, 27,178,110, 44, 87,125, 99, 41,110,186, 57,238, 0, 16, 39, 98, 72,139, + 69,195, 21,222,115, 94, 21,204,169, 6,177, 11,157,168,171,238, 38,188,211,178, 14,123, 65, 9,215,210,227, 22,202,114,169,228, + 29,220, 84, 42,209,218,106,173, 33,157,136,161, 20,208,182,223,200, 18,249, 56,119, 90,182, 28, 14, 61,180, 45,115,108,233,244, +137, 87, 18,214,198,226,243,207, 39, 31,115,198, 90,247, 10, 76,243, 94,220, 66,248, 4, 34,127, 5, 69,234, 90, 80,206,188, 82, + 16,114,162, 16, 84,181,154,154,214, 96,221, 18,242,245, 36,194,210,239,171,118, 0, 10,122, 54, 75,224, 57,133,144,191, 6,233, +135, 57,218, 80, 69, 12,202,116, 48, 83, 49,108,124, 5,170,137,116,155,170,145, 33,141, 29,209,168, 54, 86, 73,199, 89, 30,180, +148, 35, 35,239,112, 38,235,180, 50, 44, 85,140, 9,218,137,234,244, 73, 52,225,245, 51, 73,175,215,218, 74, 45,211,114,127, 67, +146, 99, 68,220,155, 7, 59, 36, 77,198, 80, 96, 79, 57, 20,109, 2, 6, 72,121, 94,167, 90,201,186,200, 73,116, 70,202,109, 35, + 1, 53,166, 2,155, 70, 2,169, 19, 18, 87,133,210, 37, 88,137,138, 38, 65,100, 25, 43, 90, 15, 17,212,114, 17,115, 70,188,170, + 82,237, 1,222, 28,202,168,164,228,133,175,185,168, 51,160,133,162,158,128,235,131, 70, 52, 21,156, 41,232,110,219,168,220, 3, + 69,168,141,100,185,102, 13,155,237,230,192,165,184,116,140, 29, 39, 88,171,164,218,193, 73, 23, 53, 49, 72,140,154,204, 35, 52, + 46,161,163, 67, 58,178,134,137, 4,226, 14,152, 14,149,106,132, 65, 1, 35, 37, 44, 57,169,141,220,168, 34,148,162,132,253,250, +102, 42,119, 61, 17, 45, 84,235,132,167, 72,101, 1, 42, 12, 46, 9,194, 43,126, 93, 93, 48,202, 82,172,252,233, 55, 23,184,246, + 35, 67,158,254,132,143, 16, 61,110, 47, 7,182, 62,149,149,238,163, 97,180, 7, 77, 20, 59,234, 51,116,107, 72,154, 48, 74,134, +184,100, 68, 44, 22,193,176, 99, 46,226, 1,118,112,247,151,190, 68,111,237,110,116,126,126,226, 78, 12,194, 88,149,126,170,224, + 98, 70,137, 97, 60,232, 99,236,128, 78,164,140,173, 33,237, 15,232,166,203, 25,207,167, 18, 38, 12, 35,218,155, 37,156,109, 18, +179,214,117,188,255,141,198,181,155, 90,186, 53,212, 90,152, 8, 47,110,138,220,183,121, 60, 62,238, 68,144, 70,222, 27,116,100, +113, 15, 74, 22,183,201, 33,203, 0, 78, 22,170,208,100,198,144,246,189,167, 3,200,205,230, 74,197, 47, 88, 46, 87,126,226, 48, +222, 91,207,191,119,185,186,150,188,149,107,211,205,151,208,122,228,149,100,102,116, 88, 84,133,200, 8, 61, 15,239,143, 52,139, + 59,139, 46,194, 42,152,249,136, 61,177,225, 72, 10,135, 11,168, 60, 55, 50,116,130, 36,149, 45,206, 82,148, 57,205, 83,252,108, + 37,214,157, 77, 99, 87,196,155,115,104,188,170,184,114,245, 36, 53,184, 60,247,247,141, 9,210,224, 36, 6,227,178, 20, 42,109, +110,105, 26, 26,180, 97, 33, 27, 45,122,126,123, 2, 95, 94, 59, 64, 75, 67, 74,138, 20, 56,106, 0,191, 39,222, 4, 4,192, 66, +173,135,208,234,180,252,239,186,209, 0,140,109, 78, 42,212,194,216,170,134, 80,166,160, 24, 65, 23,250,176,255,213,196, 68,209, +178,146, 87,227,132, 9,242, 87,195, 22,177, 69, 30,186, 84,147,189,195,252,104, 85,144, 40, 98, 97, 46,194, 14, 32,205, 27,248, +132, 6, 35, 33,201,114, 82,137,135, 69, 70, 10,146,167,203,208, 47, 87,132, 13,130,184,186,122,195,167,184,150, 6,219, 62,172, +119, 80,233, 3,223,220,175, 93, 67, 67,139, 58,193, 67, 27,171,223, 85,148,111,157,225, 45, 52,247,129,175, 35, 41, 18, 34, 65, +235, 85,195,155,192,229, 27,218,209,134,241,120, 7,118, 76, 58,236, 51, 26,195, 56,222,142,110,185,128,185,179,207, 99,126,215, +185,156,181, 99, 7, 11, 91,183,210,153,155, 35,142, 12,221, 78, 68,234,160,223, 31,114,236,200, 49,142,223,191,159,228,200, 55, +233,244, 15,210,209,101,226, 24,232,244, 16,137,203,180,221, 10,193,176,201, 24,209, 74,207, 2,157,200,177,174, 17,248,180, 94, +106,102, 3,205, 99,235,149,164,116,242,216,142,144,120,170,149,150,205, 33, 79, 98,123, 44,244,141,227, 3,199,231,249,250,103, + 58, 60,249,238,189,156,119,225,126, 30,117,238,217,112,198,121,244,183, 62,138,193,182,221, 12,146,115, 24, 44,143, 72, 70,199, + 81, 19,227,196,177, 99,107,204,176, 59,199,237,255,248, 53,236,125,159,163, 55,223, 13,220,142,154,221,172, 96, 58, 74,210, 57, +131,254,168, 71, 58, 60,140,216, 49, 86, 19,150,135, 93, 88, 57,142, 48,240,125,220,235,145,106, 45,179,146,214,239,188, 58, 91, +221,109, 18,235,110, 86,232,155, 69, 11,166,123,214, 77, 12,254, 7,171,194, 92,172,214, 34, 46, 83,178, 8,196,134, 34,111,214, +105, 30,187,205, 75, 68,186, 32, 78,108,112, 18,103,150,174, 8,208,199,165, 41,234, 11,152,196, 1,124, 88,196, 33,235, 21,176, + 52,168,251, 30,228,195, 26, 41, 23, 59, 27,198, 40,130, 58,224, 22, 45,200, 45,198, 43, 91,235, 12,105,193,192,207,123, 94, 71, + 68,192,104, 85,217,235,109,134,184,226, 33,103, 6, 66, 89,133,174,156,128, 26, 20,221,238,228, 5,116,124, 51, 27,168,246,128, +150,192, 91, 53, 53,208,190,132, 32,171, 96, 93,225,161,249,255, 19,178, 12,132,216,123, 88,137, 78, 66,250, 83, 43, 83, 7,107, +161,241,222, 98,174,184,210, 6, 31,180,228,128, 68,133,130, 44,153, 89, 65,120, 43, 39,215,153,142,103,120,219,106,121, 77,153, +236, 71,158,253,111,178,206, 77, 74, 73, 32, 9, 16, 28,209,233, 69, 99, 66, 18,227, 76,252,115, 70,210,104, 37,148, 42,145,223, +214, 78,120,135,245, 24,154, 20,233,110,130,104,130, 27, 90,146,212, 21,245,202, 53,128,150, 9, 42,234, 77, 77,157,115,249,123, +112,136, 24,156,207,113,119,141,165, 85,203, 57, 80, 32, 49, 82,173,196, 23,246, 76, 47, 73,149, 82, 33,107,104, 16,158,168,247, + 92, 47,171,230, 49, 25, 87,175, 40,235, 28,205, 40,247, 55,249,245, 77,205,125, 15,224,177,106,164,113, 99, 36,187,218,187,157, + 48,106,236, 8, 59, 88, 99, 48, 86, 70,221,179, 88,216,243, 36,206,187,240, 50, 30,117,254,163,217,179,231, 28,118,159,189,141, + 93, 91,187, 44, 68,142,142, 36,136,179,184, 52, 1, 59,194, 89,203,208,157,193,225,181,179,185,255,248,197,124,243, 72,159,251, + 31, 56,198,225,123,239, 97,112,112, 31,241,234, 1,122,172, 98, 58,160,190, 57,201,100, 30,191,214,114,221,167,117,140,159, 30, +179, 87, 26,226,252, 83, 49,226,166, 73, 95, 85, 23, 38, 64, 5, 84,181,172,229, 31, 24,235,249, 30, 11,198, 96,231,148, 59,109, +196,190,251,183,178,235, 1,203,121,189, 3, 60,250,140,251,120,244,238,207,179,107,207,153, 12,182, 63,154,165,206,217, 44,156, +177, 21,149, 30,157, 36, 97,176,114,148,191,251,199,123, 57,122,247, 93,108,153,143, 80,211,109,188,126, 11,204,169,178, 99, 59, + 12, 22, 30,205, 96,185, 67,210, 95,132,100,192, 90,100, 89, 25, 24,204, 96, 57, 67, 84,125, 60,125,178,170,242, 44,232, 90,102, +116,205,219,120, 42,225,204,175, 54, 17, 88,159,204,182,212, 13, 49,247, 79, 40, 94,176,137, 4,187, 88,157,248,206,123,234, 21, +104,192,170,246, 44,100, 23, 86,179,210,188,134,184, 67, 53,205,218,142, 70,208,137,132,110, 39, 34, 26,103,213,136,134, 66,208, +225, 44,128,228,131,212,172, 10,140, 29, 92,176,211,210, 43, 52,129,231,167,149, 46, 99, 33, 62,105, 10,246,251, 72, 34,178,198, +159, 6, 34,161, 67, 2, 22,108, 36,158,140, 23,164,109, 73,206,174,151, 74, 79,114,241,125,228, 85, 50,111, 55, 14, 98,230, 97, +107,217,176,149, 76,213,136,175,193,175,148,125,204,165,242,157, 20,217, 3, 57,162,145,226,208, 84, 3,213, 73,193,118,151,160, +207,185,194, 84,114, 91,198, 71,112, 88,162, 70,171,178,140,209, 26,156,233,100, 29,213, 92,130, 77,210,198, 12, 31, 84,209, 40, +166, 23, 43,118,152,102,113,102, 79, 22,156, 24,199, 94, 33,197,254,122, 18,143, 30,228, 75,164, 13,226,253,170, 13,141, 27, 10, + 76, 83,203,102, 37, 65, 47,249, 9, 38,169,132,233,102,181, 75, 23, 65,137,136,226,204,203,118,169,102,133, 95, 2,151, 91, 38, + 42,170,121,252,196,100,227,117,109,100, 61, 90, 83, 53,198,234,105,149,141, 74, 72, 21,137,123, 68,113, 15,151,142,209,116, 88, +242, 38,100, 74, 95,243, 58,242, 33,101, 41,224,122, 4, 55,183, 92, 66, 38,137,136, 41, 80, 1,167,174,214, 87,188, 90, 16,142, + 93, 0, 0, 32, 0, 73, 68, 65, 84,134, 86,212,227,234, 33, 47,160, 94,146, 88,170, 76, 47,209, 6,155, 43, 8, 17,105, 83,122, +210,148, 60,251,176,132, 49, 76, 26,136,110,184,194,218,202, 42,131,238,217, 44, 60,250,106, 46,188,252,241, 92,126,249,165, 92, +113,201,110,118,159,209,101, 27,125,186,118,128,142,143, 51, 30, 38,140,173, 35,113,144,106, 68,146,164,140,211,172, 1, 73, 36, +176,211,166,236,236, 37, 60,241, 66, 88, 60,255,108,246, 95,182,139,123, 15, 95,206,125,247, 29, 97,241,224, 65,198,135,246, 19, + 13, 14,210,113,171, 68,198,143, 21, 49, 30,101,241, 46,136,203,178, 96, 76, 20, 33,241, 28, 42,241,134,150,235,137,188,244,141, + 4,237,165,238,181,207,128,242,139,186, 27,226, 13, 62, 87, 25, 27,144,245,241,216, 30, 65, 26, 41,139, 54,226,224,120,158, 47, + 62, 0,103, 30,112,236,254,234, 81,206,222,126,144,237, 59,186,116,183, 46,176,234,230, 56,116, 60,229,174, 3, 43, 44,175, 38, +108, 89,152,203, 56, 9,218,172,188,198, 14,246, 68, 41,103, 61,106, 27,199,185,128,149,163, 71, 24,245, 23,217,226, 18,250,157, + 14,131, 85,135, 25, 47, 85, 82,109, 36,156, 43, 50,101,220,212,145, 74,216, 64, 0,111,243, 50, 57, 76,101, 51,145,240, 83, 47, + 39,120,170,184,104,198, 33,165, 23,234,194, 52,167, 32, 70,160,154,117, 3,147,162, 1,140, 5,155,177,118, 45, 2,166,131, 49, +194, 92,199, 50,114, 89,209, 23, 67,233,245, 19,116,101,115, 65, 21,242,240,186,195,222,224,166,136,179,120, 79, 94,194, 34, 54, +148,101, 82, 3, 82, 23,234,112, 2,145, 88,140,102,139,243, 66,164, 12,173, 48,172,240, 0,108,165, 69, 97,234, 99,190, 18, 64, + 87,234, 20,103,240,117,217,243,133,188,217,171, 8, 39,104, 93,121,171,204, 78, 61,203, 39, 98,238,181,215,105, 86,121,219,200, +142, 41, 23,120,155,183,204,165,108,210, 85,178,143, 13, 78, 58, 56, 77,138,214,182,117, 35,195,160, 88, 19, 17,197, 66,108, 20, + 99,226,172,174,115, 26,230, 22,104, 17,134,209,100,136,233,108, 33,234,118, 24, 14,211, 34,109,203,214,249, 96,254,255,212, 23, +100, 49, 84,179,218, 77,144, 42, 89, 81, 44, 66, 37,230, 91,100, 80,248,166, 49, 96,139,252,194, 9, 98,107, 16,143,144, 90,193, + 31, 19, 67,236,227, 27, 18,137,183, 67,116,194, 3,106,170, 95, 35,229,131,173,196,210,209,166,212,155,154,247,239, 28, 42, 17, +221,249, 5, 58,157, 46,214,118, 25,173, 58,156, 29, 5,104, 70,179, 82,116, 33,139,127,162,154, 89, 13,176,172,145, 5, 99,129, +174,129,196,101,228,200,106, 72,160, 90, 7, 93,194, 81, 83,203,225,150, 0,141,144, 32, 60, 51,121,205,147, 72,128, 76,241,100, +167, 22,228,169,199,248, 37,171, 61, 97,251,199, 89, 90, 29,146,156,113, 17, 23,124,215,203,184,234,234,171,121,220, 37,123,184, +232,204, 46,219,236, 18,118,237, 56, 75,199, 6, 44,142, 82, 82, 21,146, 36,201,208, 36, 49,196,221, 57, 36, 18,198,158, 32, 18, +117, 99, 82, 7,227,241,152, 81,226,208,161, 67,199,125, 46, 36,225,252,243, 12,107,187,207,226,168,189,128,253,199,158,206,193, +131,199, 88, 60,116,152,254,177,131, 48,238,163, 54,205, 74, 80,199, 61, 76,220, 65,122, 91,112,214,162, 75, 71,232,174,237, 39, + 54,125, 36,238, 53, 66,210, 77, 20,170,112, 21,112,235, 49,230,153,221,241,107,146,135, 82,206,159,201,146,188,165,194,140, 84, +136, 34,152,139,178, 53,119,201, 26,142,142,230,136, 14, 42,243, 7, 29,177,244, 25,217, 85,134,106,232,116, 98, 22,182,116, 74, +164,109,138,164,137,112,201,142, 33,178,231, 18,238, 91, 60,147,193,226,189,136, 38,196,221,136, 21,221, 66,186,124,140, 57,187, + 4,157,120, 50,148, 86, 60, 7, 97, 86, 9, 56,153,169,224,245,132, 20,101,253, 43,221,108,161,154, 41, 88,251, 9,144,240, 79, +137,134,247,189, 45,157,135,227,178,201, 31,161, 65,231,178, 42,211, 85,181,244,228, 77,158,246,164,194, 24, 33,113,214, 39,111, + 67,215, 40, 29, 95,164, 43,205, 27,137,168,155,232, 18, 22, 22,134,149,134, 65,159,195, 58,101, 92,212, 5,134, 98,153,125,110, +138,138,109,153,193, 97,243,255, 93,214,171, 60, 47, 73,155,183,208,139,124, 5, 60,151,223,179,144, 21,216, 9,248,125,121,131, +153,212, 79,215,162, 39,122, 45,109, 68, 53, 63,110,201, 80,174, 15,182,138, 66,151, 32, 39, 54,216,218,229,185,178,126, 33,205, +127, 55, 94, 57, 26,106,157,235,240,105,127, 69, 8,217,215, 19, 32,194,108,217,194,188, 46, 51, 90, 75,177, 98,202,229, 38,108, +141,233, 44, 70,163,204, 19,113,169, 39, 61, 72,197, 8, 41,156, 59,167,140,146, 17, 11,145, 43,140, 61,131,100,213, 0, 85,171, + 60,221, 74,107,215,236,187, 84,167,133, 16,100,162, 85, 97,216,241,168,140,230, 70, 36, 10, 70, 92, 64,238,107,112, 4, 41,181, +179,162, 89, 57, 99,239,113,137, 13, 50,163, 3,165,172,225,108,174, 43,251, 41,137,167, 77, 57,243,212,200, 93,198,136,207, 96, + 83, 34,147,101,179,169,157, 52, 72, 42,202,186, 82, 69,179,169, 74, 93,149, 84, 86,111,119,106, 85, 25, 91, 45,198,117,213, 27, +247,239,200, 80,233, 27, 92,241,210, 67,146, 94,232,185,107,208,100, 52, 48,166,133, 58,169, 76, 39,250, 66,212,189, 82,169,196, +153,171, 10, 95, 68, 73,251, 75, 44, 46, 13,208,179, 47,231, 9,215, 62,151,107,174,121, 22, 87, 94,113, 17,187,220, 49, 6, 71, + 14,176,244,192,128,253,131,132,113,154,146, 36,137,103,126, 27, 6,227, 20, 35, 48,215,237, 17, 69, 17,169,117, 5, 31,192,168, + 5,107,179, 98, 88,198,144, 90,199,208,101, 69, 81,210,145, 37,182,125, 46, 93, 24,243,184, 11,230, 25, 94,186,155, 69,251, 24, +150,135, 17, 73,154,113, 91,122,189, 30,157,110,135, 45,243, 29,226,110,151,197,165,101,238,222,127,144,111,124,241,107,244,247, +126,137,238, 96, 31,166, 27,163,116,169, 55,113,158, 64,102, 43,122, 43,103,221,215,148,187,174, 31, 68,214,153, 88, 0, 51, 58, +197, 81,182, 18,213,108,109,153,243,139,139,195, 35, 28, 26, 97, 58,176, 69,102,168,150,224,250, 82,160, 55,182, 92,252, 40,101, +121,199, 19, 88, 61,144, 18,235, 10,189,110,140,206,199, 28, 59,182, 0,199,191, 6,210, 7, 89, 96, 54,115, 80,214, 49,142, 54, + 92, 21,102,195,186,176,146, 77,180,238, 62, 50,133, 39,242,208,120,235,235,157, 42,182, 94, 49,228,115,206,161, 21,210,144, 78, +228, 69,106,227,104,205,115,137, 99, 85, 36,245,141, 83,130, 99,150, 29, 44,115,195, 64,138,120,122,222,198, 82, 11,248, 56,140, + 88, 7,159,131, 24,161,170, 22,202, 62, 76, 60, 11, 23,232,196,223,126, 66,217,216,197,134,113,254,128,217,106, 4,226, 72, 16, + 7, 35, 87,166,166, 8,121, 88,162,218,124,165,194, 56, 46,140, 32,207,221, 87, 9, 72, 52,154, 53,122,149, 8, 52,201, 42,201, +171, 9,204, 17,143, 87,120,162,145,107,138,127,139, 18,133,173, 71, 37, 67, 71, 92,125, 94,228, 93,229, 52,197,140,151,233, 24, +199,216,165,164, 68,152, 40, 46, 56, 13, 18, 60, 53,151, 38, 56, 21,140,239,198, 39, 70, 43,108,254,226,189, 27,208,100, 76, 63, + 41,112, 17,108,222,129,173, 94,251, 60, 52, 85,148,198,118,214, 90,139, 27, 86,217,167,249,251,246,136,144, 77,136,182,239,102, +231,188,208, 63,124, 63,137,198, 19,157,195,234,101, 98, 74,194,166,146,164,169,111,197, 27,186,199,245,238, 75,130, 68,198, 39, +129,216,134,192,153, 11,102,110, 83,108,120, 18, 58, 86,103,113,163, 62,210,237,225,146, 20,151, 38, 89,237,248, 38, 34, 88,158, +147, 44, 77, 94,108, 3,252, 94, 99, 87,231, 10,215, 73, 94,194,182,169,177, 75, 3,212, 94, 51, 26, 52,200, 86,144,160,192,179, + 84,106, 22, 76,166,124,133,177,249,122, 67,150,166,114,177, 21,239, 60,159,227,227, 85, 22,143, 45,225,206,188,140,167, 94,255, +125,124,207,181,207,225,201,231,111, 99,151, 59,206,202,226, 93,236, 61,178,204, 96, 56, 36, 77, 18,156,181,140, 83,139,115, 74, +228,199, 34, 81,135,238,252, 2,113,183,147, 21,137, 34, 66,109,130, 58,199,192, 42,206, 38,196,198,145, 56,197,250, 49,145,245, +169, 16, 92,220,101, 41,141,232,173, 89,182,164, 3, 46,223,106,232,237,218,142,233,110,161,215, 49,116, 58, 6,151, 14,145,225, + 17, 86,215,250, 28,238, 47,178, 35, 94, 98,231, 99,186,124,109,203,147, 57,112,215, 25,196,199,190, 76, 20,143, 80,233, 54,250, +143, 18,172, 57,218, 20, 47, 13,149,187,232,108,167,125,234,218,223,220, 3,161,222, 41,174, 44,193,236,201,168,146, 59, 71, 89, + 53,209,205, 52,245, 22,129,213,161,112,197,252, 18,187,159,114, 5,251, 71,143, 35, 94,185,143,168,163,108,235,244,120, 32,238, +113,244,216,136,184,127, 32, 99, 70, 79, 28, 64,131,210,183,178, 97, 5,172,211, 85,236,108, 45,184, 94,129, 24,109, 52,211,167, + 27, 25, 77, 86,206, 20,111,253,193, 7,238,149,216, 82,182, 63,205,199,145,211, 42, 80, 84,169, 26, 87,129,142,124, 39,180,160, +198,122,226, 59,133,137, 10,125,173, 46, 12, 33, 16,235,188, 55, 93,118,124,210, 34, 31,189, 98,185, 87,206, 91,246,125, 15, 75, + 75,210,108, 27, 7,222,189, 86,138,189,148, 47,195, 21, 48,163,205,202,181,101,229,113, 37, 36,240,149, 47,198, 50,217,177,184, +152, 33,185, 82, 55, 11, 89,100,220, 38,153,135,157, 19,160,162,152,174,177,144,100,241,190,112, 81,206,123,208, 75,192,232,175, + 68,112,157, 35, 21, 67, 44, 80,169, 22,158,183, 61,173, 25, 54, 8, 36, 73,202,113, 43, 48,183, 27,116,192, 56, 89,161, 19,144, +226,156, 24,239,113, 59,146,164,132,240, 43, 21,202,180,218, 77, 77, 84, 42,213,201, 84,106, 32,152,212,194,128,193,135,106,141, +247, 90,107,206, 74,220, 92, 42,241,193,172,214, 95, 68,148, 46,179,205, 9, 35, 49,140, 92,243,218, 80,152, 42,181,248,172, 83, +124, 38, 67, 83,186,146,247,142, 77,230, 89, 75,222, 17,207,217, 26,242, 96,202, 62,245, 84,155,237, 76,133,149, 69, 72,198, 99, +108, 50,194,185,178,103,123, 83,185,215,106, 70,130, 76,244, 45,151, 38,197, 94, 41, 5,167, 83,195, 8,161, 18, 14, 65,129, 70, +101, 91, 47,171,170,245,228, 75,153,184,199, 10,222,161,101,141,135,137,222,238, 53, 66, 94, 94, 45, 47,210,148,149, 99, 71, 88, +100, 7,143,127,254,143,241, 3, 47,127, 9,207,186,236, 76,122,107, 7,185,255,224, 94,238, 78, 28,163,209,152,213,213, 85, 82, +107, 73,198, 41,206,166, 88, 15,116, 89, 49, 68,113,143,133, 45,115, 44,204,207,101,245, 0,140, 65, 28,216,212,226,220, 8,196, +145, 90,235, 25,243, 89,115, 30,117,138, 26,131,137, 58,196,145, 16,247, 22,128, 8,179,208, 69,182,204,211,233, 26,146,100,133, +213,227, 75,140, 71,125, 22,151,214, 88, 94, 94,101, 56, 28,179,212,183,140,199, 99,186,234,120,250,174,136, 59,183, 94,194,215, +190, 24,193,161,207, 19,117,211, 44,157, 78,107, 97, 18,154,139,165,149, 94,180,247,160, 69,106,101,104,117,122,252,119, 67, 32, +125, 64,156, 12,202, 38,132,129,146, 2,127,157,209, 73,175, 25,242,135,177, 10,113,191,207,115,158, 61, 79,114,241,139, 88,189, + 59,165,103,250, 68,113,151, 56, 86, 14,165, 93, 6,135,239, 99, 75,122, 8,230,186,205,138,184,146, 58, 40, 51,245,169, 82, 39, + 3,158,202, 38,103,210, 96,142,233,212, 45,155, 67,239,235,154, 25, 39,232,173,111,228, 72, 66,108,173, 98,237,228,224, 43, 20, + 98, 94, 77, 43,104,137, 90,242,167,124,124,218,149,172,101,241,169, 89, 17, 90,101, 97,123, 96, 56,140,233,106,193,170,205,154, +186, 72, 17, 83,174, 27,171, 90,243,201,169, 41,233,122,178, 72,233, 93, 24, 95, 35, 61,111, 52,131, 15, 47,132,112,177, 11,202, +215,230,113, 95, 39,213,122,237,213,254,231, 65,126,183, 4,164, 38, 85,196, 68,152,121,101,110, 52,102, 52,206,188,128,140,169, + 55,168, 18,156,130, 21,208,228, 68,173, 58,243, 87,203,181,213,122, 38,121, 36, 66,152,178, 50,217, 80,162,234,221,185,133,237, + 92,112, 78,135,241, 61,139, 28, 24, 26,226,168, 84, 38, 46,128,191,157,214,201,124, 13,217,150, 65,209,134,176, 33,110, 56,120, +164,161,204,227,228,113,170,221,229, 13, 97, 60,181,172, 19, 32,121, 19,161, 56, 38, 29, 12,248,230,154, 66, 20, 99,204,140, 14, +204,170, 52,246, 34, 9,202,216, 22,240, 65, 3,232,164, 34,196,177, 33,181,100,196,168,112, 97, 54,101, 23, 53,157, 86, 9,173, + 1, 74,180,174,102,237,212,141,129,134,242,182,218, 64,144, 43,123, 31,212, 67, 88,147,249,233, 18, 32, 21,141, 43, 68,205,107, +214,105,144, 98,152,218,166, 52,231,183,135,115, 79, 74,226,231,122,189,221,141, 8,118,176,204,129,163, 43,108,127,236,115,120, +205,171,126,140,239,127,246,227,217, 54, 60,192,253,251,191,193,202,208, 50, 26, 15,176,137, 99, 56, 78, 25,141,255,127,222,222, +244,105,146,236, 58,239,251,157,123, 51,179,170,222,165,215,153,158,125,159, 1, 48, 24, 14, 69, 13, 23, 80,160, 22, 80,144, 32, +138,180,228, 77, 97,147, 10,203,146, 76,209, 54,101,109,161,144, 67,161,160,101, 57, 66, 97,253, 39,254,172,144,236,160,195, 14, + 47, 90, 24,150, 3, 48, 1,130, 34, 69, 44,131,217,122,102,186,167,183,119,173,170, 92,238,189,199, 31,110, 46, 55,179,170,222, +238, 1, 64,206,151,137,238,126,151,170,172,204,123,206,121,206,179, 52,120,231,168, 27,223,134,232, 24,108, 49, 99,182,216, 99, + 62, 43,176,214, 68, 87, 62, 99,176,198,162, 56,132,128,171, 43, 52, 56,234,218,113,190, 44, 9,222, 99,133,184, 31, 55, 57, 89, +102,217,223, 91,176,119,120,136, 49, 22,173, 87,172,239,127,196,253,179, 19, 78, 78, 79, 57, 61, 95,227,170, 6,111,114,202,144, + 17,154,138, 78,118, 91,105, 96,182,114,188, 84,220,163,249,220, 83,188,235, 43,228,232,223, 97, 10, 59, 34,243, 78,182, 84,211, + 21,247,168,192,139, 76,172,128,228, 2,119, 61, 54, 81,181, 71,137,149, 73, 87, 51,189,212, 84, 54, 17,155, 93,121, 14,105, 67, +120,116,226,248,211, 79,159,243,218,151,127,145,111,157, 62,203,188,250, 45, 52,207, 17, 23,168,230,129, 91,247, 13,230,206,119, +193,214,192,108,124,143, 41, 91,248, 41, 15,199,155,127,224,148,179,173, 3,189, 14,206,157,170, 59,221,102,183,157, 59,159, 70, + 58,167,252,224, 21,126, 39, 19, 94, 33,211,182,160,166, 77,137, 25, 69, 45, 78,246,235,201,116, 53,138,143,109, 33, 62, 67,103, + 35,155, 88, 39,246,187, 54,237, 19,165, 18,133,109, 11, 63, 15, 15,188, 31,113,222,199,218,230,222, 38, 51, 49, 84,209,196,181, + 75,101, 72, 11,235, 42,159, 73, 93,187, 91,216, 62,253,217, 50,105, 36,250,213,193,228, 67, 12,147,203, 42,169,116,167,131,143, +252, 26,169, 45, 70,242,152, 83,222, 53, 3, 33,178, 67,199, 80,244, 96,244,147,122,198,143,174, 43,131, 37,172,111, 15,105, 43, + 41,114, 32, 27,157,115,111,229, 99, 5, 61,125, 7,175, 22, 99, 14, 17,227,226, 28, 42,227,188, 60, 24,204,106, 76,119, 29, 81, + 76, 98, 56,210,121,158,234,198, 81,197,168, 89,145,222, 89, 46,217,221,233,116, 52, 31,143,140,218,134,213,155,164, 8, 25, 25, +115, 44,140,201,240, 70, 16, 19,153, 13,193,135, 17,169, 50, 61,106,130,234,133,157, 56, 45, 9, 50,141,170,213, 16, 80, 19,179, +219,133,184,238, 8, 70,250,134,119, 60,171, 38,218,251,233, 36,189, 77,222, 54,145, 36,109, 43,180,146, 88,240,202,148,224, 54, + 41,236,163,200,221, 13,114,225,132, 97, 62, 45,238, 27, 4, 57,221, 36,249, 77, 2,100,198, 45,121,218,192, 76,181,241, 41, 65, + 78, 55,138,214,224,244, 23, 17,177,229,209, 93, 30,248, 3,190,240, 23,254, 6,127,237, 47,253, 71,252,232, 13,225,227, 15,222, +230, 91, 71,103,168,247, 52, 77,205,122,181, 2, 49, 56,167, 84,117, 36,194, 25,155, 19, 52,144,205,102, 28, 30,236, 51, 43,178, +214,224, 74,193, 68, 35,170,160,158,106, 93, 82, 46,207,168,170, 26, 87, 87,172,171, 10,215, 52,209,195, 33, 47, 40,138, 25,118, + 54, 99,239,240,128,189,217, 12,209,154,213,201, 3,238,223, 63,226,222,253, 99,206,206, 86,120,231,112, 33, 32, 26, 88,228,129, +134,134,186,172,201,172,162, 54, 71,131,114,234, 28,243, 42,240,202,225, 25,229,171,207,241,241,111, 63, 96,222,124,140,228,123, +125,126,194,198, 17,188,227,116,151,196, 25,110,100,195, 45,219,167,103, 77,134,140,158, 95,196, 67,172,109,135,187,184, 99, 25, + 15,175,177,189,167, 36,217,179,164, 49,185,211,196,193,123,103,129, 87,243,251,252,220,127,252, 39,249,120,255, 79,177,122,247, +119,153,211,176,110, 44, 87,178,134,119,242,167,184,245,206, 71,204, 86,239,192,222,222,133,140,179, 93,249,233, 35, 34, 46,187, + 37,232, 27,109,105,186, 27,122, 4,214,218, 32, 41,157, 58,104,232,214, 70, 74, 30,214, 97,236,224,252,125, 95,133,253, 81,191, + 73, 32,203, 76, 59, 29,203,152, 43,164, 41,105,105, 98, 67,202,196,134, 51, 6,158,176,225,236,149,234,161,117,242,239, 3,188, + 61, 20,227, 62,183,185, 37,181, 5, 25, 79,238,182,251,221,237,200, 16,116,139,164, 35,241,220,150, 13,219,216,105, 87,171, 19, +166,249,216,191,122,219,134,103,164, 80,215,116,194,107, 95,161,201, 81, 12,165,120, 76,166,224,194, 72,255, 62,124,173,244,161, + 32,134, 24, 75,232,208, 78, 37, 54,214,184, 79,128,160,166,127,189,102, 3,130,234, 95,111,136,254,234, 70,149, 91, 15, 60,230, +224,128, 43, 7,107,234,165,167, 73,116,227,221,129, 97, 18, 35,149, 32, 99,251,216,192,184, 29,221,194,255, 31, 33, 4,208, 33, + 10, 67,150, 60, 42, 41,137, 97,251, 94, 76, 82, 80, 75, 38, 80,189,144,181, 69, 55,104,204,253, 83,191,157,192, 38, 73,113,218, + 5,156,181,104,250,232, 6, 10, 62,180, 13,132,217, 16, 81,110,115,199,191, 48,218,245,162,246,125,155,180,107,203,212,181, 57, + 85,109,119,143,211,173,211, 63, 27,197,125, 96,191,235,184,193,217,150,206, 54, 56,226, 12,210,194, 41,156, 62,225, 19,104,210, + 39,117,108,203,233,110, 93,196, 64,104,184,247,201, 29,242, 39, 63,199,175,254,234,223,229, 63,253, 83, 63,134,156,222,226, 91, +223,185,195,114, 85, 82, 85, 21,174,169, 89, 87, 53,190,241, 88, 19, 3,166, 66, 0,107, 12,121, 97,201,138,125,246,247,247,163, +194,202,251,190, 97,200, 76, 68,220,202,243,115,206,206,206, 41, 87, 37, 94, 29,231,171,146,106, 89, 98, 12, 20,179, 25,179, 34, + 39,155, 21, 28, 94,190,196,165,131, 5,235,178,225,254,189, 99,142, 79, 78, 89,175, 74, 74, 31,121, 63, 62, 4,212, 7,188, 40, +103,165,199,107,192,185, 64,225, 2,121,161, 52,106,104,156,195,107, 32, 95, 85,188,122,101,193,241,179,175,177,250,246, 93,230, +254, 24,102, 7, 45,167, 38,209,241,168, 62,180, 22,244,168, 71,154, 85,159, 16, 65,199,177,196, 83, 5,209, 67, 40,219, 41,227, + 94,132,113, 62,192, 84, 13,145,134, 53, 73, 95,220,141,192,131,165,231, 74,117,143,191,250, 87,190,128,252,232, 95,230,238,111, +223,193,134, 99, 42, 44, 7,234, 49,215,246,249,157,239, 5,194,247,190,138, 41, 60,176,183,241,234,250, 38,230, 81,210, 77,119, +206,203, 23, 44,251,119,164,237,237,186,238,219,225,247, 93,159,209, 35,160, 34,187,154,183, 31,104, 98,191,192, 62, 86,163,215, + 12,157,162,113,244,198,100,112,169, 10,201,117,148, 94,230,146, 56,125,117, 19, 92,239,177, 60, 28, 0, 41, 60,189,141,249,220, +221,222, 65, 67, 43,143, 18,108,231,208,150,208,176, 13,105,222,185,144, 17, 35, 89,157, 14,154,247,238, 13, 24,209,158, 53, 30, + 77,101,116,212, 76,200,164,203,141,147,146,105, 51,201, 37,177,188,222,180,172, 28, 32,234,212, 64,120,208, 58, 75,203,114,206, + 90,109,179, 11,221,190, 62,202,214,172,164, 5,107, 32,117, 9, 66,214,165,204,109,129,120,134,181,138,233,225, 57,209, 36,134, +117, 90, 20, 36,167, 51,253,205,114,160, 57, 37, 4, 33,136,233, 39,127, 73,215, 28,162, 73,210, 92,183, 94,232, 50,235, 45, 42, + 33,113,188, 79,118,162, 91, 31,175,212, 97, 79, 54, 34, 13, 55,240, 55, 29, 8,107,227,125,247,248,203,250,162,144,124,226,211, + 20,176,169,212, 80,146,201,125,240,103, 81,210,176,151, 84,226, 22, 66, 24,144,155, 48,149,103,233, 70,231,157,194,254,219,136, +108, 23,177,227,217,162, 61,151,100, 69, 48,109,172, 54,243,212, 91, 91, 80,101,187, 73,205,100,245,177,185,151,223, 94,156, 73, + 12,102,186,176, 18, 73,140,103, 82,180, 97, 4,213, 78,108,164,117,242, 59,197, 24,124,185,228,246,189, 99, 94,249,169,175,240, +183,255,206,223,228,167, 95,189,206, 71, 55,191,199,253,179, 53,235,178,162,170,107,214,101, 69, 93, 87,132,160, 4,239,219,204, + 30,161, 40,114,140,205,216,219, 91, 48, 95,204,227, 57, 33, 38, 50,218, 5,130,177,120,215, 80,215,107,206,206,215,172,151, 75, +156, 11,148,235, 53, 77,211,208, 56, 79,134,199, 7,135, 61,216,231,250, 19, 79, 96,141,165, 94,158, 80,214,129,179, 85,131,115, + 14, 31, 2,161,169, 8,190,137,106, 23, 1,130, 71,172,193, 18,159,171,198, 53, 72,104, 57, 45, 98, 9, 42,172,188,225, 82,189, +226,229,167, 23,252, 78,253, 19,156,125,242, 62,217,234, 14, 5, 43,108,110, 33,155,197,198,127,139, 60,113,163, 61, 78,228,196, +155, 7,121, 23, 30, 51,245, 91,148, 71,247,148, 79,205,160,166, 13,111, 66, 74,238, 60,169, 72,166,119,177,134,251,103, 53,123, +171, 7,252,205,191,252, 69,158,253, 83,191,202, 55,190,115,138,158,190, 31,213, 38, 33,112,237,138,229, 55,151,215,184,249,255, +253, 63, 28,184,155,176,119,249, 2,142,128,236,104,103,183,163, 24,125,114,228,163,214,208,135,140,200, 27,211,255,200, 27,224, + 33, 77,198, 31,144,100,253,211,116, 2,153,111, 33, 82,233, 3, 81,100,180, 19,235, 96,230, 33, 88, 68, 71, 1, 87,163,253, 79, +123, 34, 5, 77,215,150,131, 89,133,142, 32,236, 97,159,234,101,232, 70,163,164, 98,128, 99, 67, 82,116, 66, 27,117, 58,250,251, + 45,243, 99, 7,229,119,240,172, 85,122, 63,249, 49, 12, 98, 64, 50,144, 16,141, 58,132,177,107, 86,194,150, 87,166,238,110, 45, +252,217, 59,209, 17,245, 74, 94,192, 24, 84, 2,248, 16, 97, 94, 41,144, 44, 39, 15,235, 94, 58,152, 54, 80,125,193, 8,155,159, + 92,122, 63,118,114,182,172, 53,145, 8, 29,163,123, 92, 78, 81,175,232,226,144, 69, 81,226,151, 43,154, 96,192,195,169, 83,140, + 25, 28, 2, 83,102, 65,148,234, 69,185,143,168, 35,132,110,111,111, 49,166,213,190,235, 96, 72,180, 67, 7, 17,155, 1,141,159, +213,136,153, 45, 23,192,225,125,243,167, 19,146,152, 12,235, 7,137,172,116,215, 22,244,238,245, 61, 18, 73,104, 4, 65,235,100, + 58,144,150, 1, 61, 60,196, 62,132,237,223, 59,202, 6,215,205,169,103,231,225,185,141,228,182, 89,136,187,102,178, 79,156, 99, +128,228,173,200,144,137, 48,133, 24, 68,182, 63,239, 91,180, 54,187,162,104,199,175, 71, 70,159, 91,234,207,176, 13, 61,144, 9, +122, 48,181,224, 21,137,107,147,242,244,136, 79, 78, 75,126,246, 47,252, 50,127,247, 87,255, 11, 30,207,215,124,239,189,247,169, +154,192,122,185,100, 93,150, 17,238,246, 1, 31, 32, 52, 14,231, 61,153, 53,100,197,130, 60, 51, 44, 22, 11,102,179, 25, 94, 3, + 33, 40,153,205, 80,245, 72,251,188,157,175,214,172,206, 79, 40, 43,199,122,121, 14, 98,168,170,134,224, 26,188,107, 56, 58,122, +192, 19, 79,222,224,153,151, 95,101,150, 89, 78, 78,142, 56, 63, 93, 17,124, 77,227, 42,124, 93,225,155, 6,239, 66,139, 70, 6, +196, 8,222,195, 76,104, 21, 18, 1,181, 5, 4, 79, 46,138,201,108, 60, 75,140,225,188,130,103, 22, 21, 47,124,225, 57, 62, 42, + 63,195,205,155,119,120,240,201, 39, 44,239,221, 34, 91,221,101, 46, 75,164, 40, 16, 59,219, 46,101,219,121, 39, 39, 77,212, 72, +115, 42, 59, 27,108,189, 16, 6,224,161, 58,172,177,192, 98, 24, 68,238,222, 63,229,138, 89,241,183,126,229,223,227,181, 47,255, + 18,191,243,157, 59, 44, 63,254, 30,190, 89,163, 65,121,114,223,240,201,254, 83,124,245,255,126,151,217,189,175, 99,246,246, 54, +230, 89,157, 82, 76, 46,150,167,111, 16,217,244, 33, 54, 52,187, 43, 54, 59,121, 66,187, 25, 11, 23,193, 6, 99,178,244,182, 10, +220, 63,215,127, 16, 61,128, 64,230, 21,156, 70, 41, 67,202,160, 14,237, 65, 55,236, 23,180, 13, 37,148, 36, 89, 41,140,166,160, +116, 11,218, 67,224,201,141,209, 69,148,118, 69,164,243, 43,238, 63, 46,163, 88, 21,188,166, 83,247, 56,174,212,247,249,194, 3, +132, 47, 58,118, 84, 27,241, 57, 69, 7,137,212,104,242, 25, 74,130,177,194,129, 42,181, 23,234, 36, 49,110,170,153,239, 13,111, + 70,251, 96,250, 56,203,248,186, 28,174,233,118,163,209, 84, 85,213,163,198,242,184, 21,202, 74, 57,213,214, 72,166,109,162,186, + 68, 58,223, 65,225,157,241,205, 86,242, 84,251,218,181, 51,118,137,100,188, 78, 3, 32, 42,120,107, 17, 74,102, 56,106,137,166, + 59, 86, 34,122, 48,124,190, 67,131,213,203,150, 91, 25,153,161,117,204, 19, 25,249,156, 27,209,173,201, 70,163, 63,107,123, 79, +180, 46,127, 97,178,133, 18,182,192,134,210,161, 53, 19,144,187, 11,212,233,229,139, 29, 68,174, 35, 83, 43,221,178,179, 26, 61, +127, 45, 7,195, 76,157,162, 18,166,206, 5,219,188, 17,249, 76, 85,119,154,206,108, 39,166,209, 91,119,234, 86,189,187, 36,108, +244, 49,140, 77,226,218, 38, 64, 33,130,163,187, 22,201, 61,215,230,206, 71, 17, 65, 24, 45,241,119, 54, 21, 50, 94, 75,109, 54, + 49, 19,159, 10,217, 30, 86, 52,142,179,221, 78,229, 49,198,112,118,116,143,179, 48,227, 63,251, 91,191,198,127,245, 75,127,142, +112,126,143,247,110,157,144,217,130,242,252, 46,231,203, 21,193,123,188,247, 81,162, 6,212, 62,182,137, 54, 47,216, 63,220, 39, +203, 50,242,220,182, 41,120,113, 66,206, 44, 32, 25,203,179, 99,170,178,228,236,124,201,122,185,162,172,106,234,218,145, 9,212, +213,154,170,170, 57, 61, 62,102,113,233, 50,111,252,228, 23,185,180,191,224,238, 39,183, 88, 45,215,172, 43, 71,181, 94, 81,175, +214,148,235, 10,239,125,159,242,102,218,251, 38,100, 25, 62, 40,193, 85,104,240,100,214,210,168, 68, 43,218, 86, 18, 42, 88, 36, + 19, 60,134,107,171, 83,174,205,150,188,246,153, 5, 39,175,190,206, 39,231,159,229,163,123,231,220,126,239, 67,194,157,119, 89, +148,119,201, 10, 19,247,238, 98, 18,164,228,225,146,172,169, 53,250, 56, 16, 71, 38,108,151, 45,149, 40, 73,223,123, 8, 13,110, + 56,219,141, 80, 59,207,189,187,247,248,204, 51,215,248,107,127,249,175,112,227,115, 95,224, 55,191,241, 54, 39,119, 63,198, 53, + 53,214,192,149,153, 69,174, 63,206,191,248,198, 61, 86,191,251,127,112,105,166, 27, 18,191,141, 76, 70, 73, 88,228, 59,194,155, +198,239, 87, 55,220, 24,183,190,250, 71,177,154,190,160,140,127, 42,111,249, 11, 16,128,157,138,148, 31,104,183,190, 27,118,200, +178, 20,126, 87,105,167,219,168, 93, 20,237,166,244, 24,110,162,125,145,143,161, 44,221, 65,101,218,125,151,151,177, 12, 76, 72, + 82,162,218,239, 53,109, 5,246,163,180,179,182,247,234, 50,218,101,216,170,154, 68,131, 59, 16,161,232,243,216, 83,153,153, 38, +146,175,142, 10, 98,218, 74, 24,146, 61,120, 72, 63, 21,117,168,131, 70, 50,212, 64, 80,135, 85,165,179, 56, 49, 73,136,204,192, +202,214,141, 84,182, 97, 26,141, 76, 59,151, 28,216, 34,129, 80,173, 57, 22, 19, 27, 35,137, 5, 44,235,157,187,162,140,205, 3, +134,208, 87, 91, 59,105, 8,211,143,113, 72,207,139,187,230, 66,162,138,161, 34,198,123, 26,117,172,215,130,145,140,133, 9,241, + 58,233, 56,198, 53,103, 64, 34,186,232,198,224,253, 16,220,210,190,158, 94,115, 31,118,247,176,134,193, 13, 45,176,189,251,237, + 56, 4, 3, 33, 43,140,110, 82, 43,131, 34, 66, 53,153,208,147,131,192,244, 65, 59,227,226,170, 23, 60,152, 35,214,184, 78,217, +223,210, 35, 58,155,136,120, 66, 40,210, 93, 16,246,150, 34,173, 59,108,176,118, 25,217,244, 15,253, 64, 42, 29,248,133,241,190, +117,170, 88,157,184, 48,202, 48, 65,245,168, 84, 94,224,189, 71, 59,114,134,240,208,195, 91,100,219,250, 64, 18,102,180,238,108, +106, 71, 14,116,233,242,173, 95,155, 25,142,238,221, 38,236, 61,206,223,249,123,255, 29,255,201, 87,190,192,189, 91,239,115,188, +242,236,239, 31,112,239,147,143, 57, 62, 57,110,249, 49, 74,240,129,166,169,241, 62, 80, 20, 25,198,102, 28, 94,190,204,124, 62, + 71,212,247,106, 26,107,163,134,197,121, 71, 85,214,156, 47,215,148,229,154,213,106,133,115, 17,121, 83,133,163,147, 19, 80,229, +228,228,148,197,222, 62, 95,254, 51,127,134,235,215,174,112,243,131,155,156,158, 46,113, 77, 77, 8,142,243,117, 77,185, 90,225, + 85,240, 65,113,222,227, 67,155, 95,174,158,220, 26, 92,128, 38, 8,234, 37,198,238, 26,193, 99, 9,170, 56,175,100,248,136, 72, +212,142, 59, 98, 97, 21,200,252, 41,135,133,240,228,225,140, 55, 62,115,137,251,159,249, 49,190,119,244, 22,223,251,238,135, 28, +191,243, 59,236,157,190, 79, 49, 87,164,216,111,189, 44, 38,112,244, 67,152,239,253,222, 29,122,211,170,221, 5, 79,118, 35, 57, + 23, 16,247, 64, 56, 57, 61,165, 94,175,248,249, 63,254,147,252,135,191,248, 75, 44,179,235,124,245,107,191, 67,185, 60,193, 59, + 71, 46,158,195,220,178,127,227, 49,126,253, 59, 21,239,255,198,175,115, 37, 63, 71,243, 75, 23, 22,213,225,153,188,120,143,157, +222, 95,143, 44,162,127, 84,125,186, 76, 81,223, 79,131,171,127,154, 52,185, 63, 0, 84, 94, 32, 83,105, 99, 32,219, 2,105,176, + 4,217, 7, 60, 38,212, 4,175,248,214,234,219,244,197, 57, 61,242,226, 65,110,204,144,143, 46,189,197,103,215, 81, 73, 47,132, +183,173,251,144,237,161,213,100,170,208,225,112, 50,210, 25,204,180, 14,119,109,113, 53, 9, 1,106,148, 36, 38, 3,193,109, 20, +133, 42, 83,233,207,150, 52, 37,133,181, 24,196, 42,135, 82,160, 62,112,234, 27, 64,218,216,129,228, 5, 38,201, 44,169, 18, 99, +216, 7,179,145,197,208,201,119, 74, 18, 87,184,142,133,223, 18,250,124,130, 3,249,238,125, 38,186,224,160, 9,243,121,100,248, + 17,226, 4, 97, 38,221,181,137, 78,246, 26,124,123, 93,101, 99, 79,223, 53, 14,190,135,206, 59, 24,122, 8,165,145,182, 66,171, +108,246,255, 38, 33,230, 4, 6,143,127, 43,137, 70, 57, 41,158, 83,191, 3,213,109, 98,196,177,150, 54,144,154, 11,203, 70, 20, +175, 60,228, 49, 83, 54,134,114,198,206, 16, 58, 76,243, 27, 63, 40,241,124,111,149, 0,250, 8, 93,255,174,194,191,141, 97,190, +139,207,188,177,151, 38, 34,106, 99, 60, 76,134,144,164,246,107, 15,114, 67, 41,202,186, 14,137,212,127,208,127,202,136,245,190, +107,223,158, 68,166, 74,183, 87,213,205, 96,183, 17, 90, 48, 28,206,154,196,190,222,191,115, 27,115,233, 41,254,193,127,255,143, +249,185, 47,190,193,251,239,190,205,178, 81,174, 95,187,198,131, 59,183,184,115,247,110,108,200,189, 39,104,160,118, 13, 33, 64, + 81,204,193, 8,123,123, 51, 14,247, 23, 56,215,224,188,199,100,115, 22,123,115,130,171,169,202, 21, 85, 93,179, 60, 95,226,189, +231,252,108,137,250, 6, 99, 50, 92,211,176, 60, 63,143,251,249,245,138, 98, 54,227,203,191,240,243, 60,113,227, 58,183,110,126, + 64, 93,215, 52, 78,105,154,134,117, 25, 89,241, 98,132, 28, 67,240, 66,150, 89,124, 8,120,223,196, 21,154,119, 24, 43,204,102, + 57, 85, 9, 33, 40, 18, 4,131,235, 73,192, 34,177, 33, 8,193, 49,203, 13,193,204, 57,175,224,172,105,144,115,207, 65,190,230, +133,235, 71,188,254,220,227,220,122,225, 85,254,221,189,207,240,123,223,254,152,163,223,251, 58,251,167,111, 83,204, 3,228,251, + 32,118,212,224, 93, 84, 74,100,219,100, 46, 92, 56,201,110, 11, 45,217,220,212,196,247,179, 94, 47, 57, 58, 58,229,249,103,158, +228, 23,127,249, 47,241, 19, 63,251, 21,222,190,121,194,135,255,246,107, 40, 13,222,206,160,241,236, 23,134,171, 79, 63,201,255, +245,190,231,223,253,159,255,156,203,114, 23,153, 93,109, 21, 33, 60,212, 53,110,107, 99,185,241, 44,167,218,240, 71,204, 59, 31, +167,233, 60,164, 60, 79, 78, 22,209, 11,126,141, 78,164,164,187, 47,244, 69, 45,203, 15,107, 90, 79,127,142,253,169, 55, 95,255, + 31, 92,221, 36,248,255, 1,228, 87,225,192,146, 29, 56, 14,172, 99, 17,192,180, 46,112,140, 46,148, 36,140, 75,105, 59,243, 13, +161, 83, 79,122, 27,171,205, 37,209,111,109,218,142,245,158,227,116,113,167,131,227,154, 38,113,154, 42,178, 83, 79,216, 29, 44, + 41,141, 36,237,200,198,114,181,128, 37, 48,163,128,194,112,197, 58,140, 23,214,233, 71, 40,131, 8, 47,104, 58,125,110, 47,152, +211, 63,153,228, 79, 70,166, 81,165,202, 16,138, 22,255,228,181, 99,163, 78,182,240, 50,190,177,226, 62, 60,244,197,213,135,208, +251,103, 55,158,222, 81,111,219,150,110,163,241,209, 68,169, 32, 3,212,183, 25, 70,147,188,151,241, 22,118, 84,116, 68,198,215, +103,163,224, 38,121,172,227, 16,145,241,127, 67,240, 79,154, 41,254, 72,243,200,152, 25,180,229,225, 30,249,208,111,249, 65,227, +173,241, 69,191,100, 59, 59,119,219,154, 66,164,187,159,146, 5,148,145,221, 48,253,228, 48,217,133, 80, 68, 91, 83,109, 9, 92, +201,235, 78, 60,217,165,187,135, 38, 50,195,222, 29, 48, 53, 37,209, 97,229,182,109,208, 75,100,236,163,100, 57,107, 12,247,239, +124,194,236,250,243,252,195,127,252, 79,248,210, 91,175,241,254,251,239,177,246, 18, 11,250,221, 91,188,255,193,205,182,128, 41, +206,185, 22,126,119,204,231, 11,242, 89, 30,239,157, 44,199,218, 12,149,140,195, 43,215,184,113,227, 9,212,213,156, 30, 63,160, +170, 42,214, 85, 77, 93, 85, 84,101,201,106, 85,146,231, 25,117,213,112,124,124, 66, 93,215,212,101, 77,240,129, 47,255,194,207, +241,218,103, 95,231,253,119,223, 97,121,126, 70, 83, 55, 52, 77, 77, 85, 59,188,107,147, 29, 90, 98,158,247,158,224, 29, 33,120, + 66, 8, 61,215,200,180,242, 88,167,218,194,133, 33, 78,243, 34,100, 89,134, 49, 89, 76,225,211, 64,102, 4, 91, 20,172, 75, 15, +190,194,230, 6,135,225,184, 20, 78,238,159,113,101,245, 9, 63,246,132,231,179,175, 63, 79,241,226,155,220,205,158,230,244,168, +194, 44,239, 97,117,141, 24,155,196,147,202, 14,166,246, 20,228,149,209,231,146,124,200, 59, 52, 88,178,113,159,198, 91, 38, 80, +173, 87,220,187,247,128,124,182,199,159,253,185,159,227, 87,254,203, 95,225,181, 55,223,226,119,191,243, 62, 31,124,247,219,100, + 77, 69,158, 65,163,202,213, 92,121,242,185,167,249,215, 31, 11,191,241,207,254, 41, 7,229, 77,178,131,203, 23, 44,196,166,251, +232, 71, 53,208,211,239,175, 12,234,163,253,243,116,133,204, 5, 92,160,161,168,202, 35, 84,224,100, 88,249,125,254,111, 54,155, +145,137,132,126, 18,140, 55,118, 67,224, 12,177,142,189,194,243,188, 8, 87,130,242,225, 90,249,128,168, 63, 55,140,205, 17,186, +105,179,183, 32,108,211,206,180, 77,243,138,187,209,208, 78, 95,227,176,144, 65,223, 60,182,110, 13, 29,195,187,253, 37,190,101, +152, 25,134, 32,151,142, 72, 20,182, 20, 13, 73,119,182,147,232,214,254,231,144, 10, 44, 20,175,194,185, 47,177, 10,179,214, 15, +126, 76, 26,212,201, 14, 82,122, 18, 81,127,160,245, 0,169,236, 60,144,199, 69,114,216, 37,143,164,117,157, 5, 43, 50,161,193, +140,227, 81, 59,222,128,215, 33,139, 88, 53,208, 52,161,109,104, 36,201,106,219,110, 88, 97, 70,127,167,163,105, 50, 36, 5, 49, +104,210,140,232,120,231, 63,105,157,226,123,109, 47,178,129, 17, 17,109, 52, 29, 38, 67,163, 73,141,117, 82, 94,239, 72,195,222, + 33, 23,186,209, 0, 76,143, 42, 29,125,110,143, 96, 63,153,230, 99, 39, 40,144, 36,174,106, 42,105,225,213, 20,170,217,217, 86, +236,234,244, 85,199,157,188,244, 3,194,166, 28,108,152,166,217,226,235, 22,247,234,210,115, 86, 82, 34,235,112,168,167,147,248, +136, 52,167,108, 16,233, 6, 2, 86,167,128,216, 21, 27, 42,131, 46,186, 35,245, 25,195,131,187,183,153, 93,123,154,127,244, 63, +254, 19,190,240,185,103,121,239,253,119, 9,146,115,227,241,235,156,220,255,132, 15,110,126,140,205,114, 20,168,203, 38,194,224, + 46, 96,242,130, 60,179, 72,150,113,120,233, 58,135,135,151, 41,138,130,162, 40, 56,152, 23, 28,221,187,205, 39,183, 62,166,106, +162,223, 66,240,129,178,113, 44, 87, 34,121, 94,107, 0, 0, 32, 0, 73, 68, 65, 84, 37,214, 64, 85, 86,156,158,156, 83, 55, 13, +206,121,234,186,226,167,127,230, 11,252,248, 79,188,197, 71, 31,221,225,193,189, 7,160,158,170,170,250,143, 47,183, 16, 40,168, +214,107, 64,169, 27,199,122, 93,246, 5, 93, 18, 52,179,170, 27, 22,179,156,202,102, 17, 1, 40,242,248, 92,104, 0,137,185,237, +153,180, 53,223, 59, 76,102,105, 26, 65,154,134, 60, 11, 56, 85,238,215,142,211, 74,185,187,190,203,211,151,142,248,217, 27, 87, +248,236, 23,175,243,187,175,252,105,190,253,237,155,156,190,247, 29,138,211,155, 20,230, 12,201,243,232, 78,215, 67,243,122, 65, + 27,169, 23,175,117,166,142, 55,163, 14, 59,224,235,138,213,106,197,202,103, 92,121,252, 73,190,242,165, 63,203,151,255,196, 31, +229,115,159,121,145,187, 15, 78,248,234,215,190,193,234,228, 94,139, 66,236, 81, 87,231, 60, 54,135,171, 79,189,200,191,252,206, +125,254,213,255,242, 79, 57,168, 63, 38, 63,188,210, 27,126,245,234,239, 73,240, 16,147, 97,115,155, 64, 75,182,160, 18,155, 18, +102,189,176, 90,239, 22,209,178,149,184,186,161, 15,219,213, 70,108, 12, 9,219, 19,244,126,255,235,248,230, 59,204, 84, 7,232, + 49, 4, 8,172,160,172, 8, 94, 40,115,165, 81, 56,245,194, 73,122,128,245,124,139, 54,163, 58, 64,192, 68,190, 78, 7, 55,183, +155,121,140,137, 77, 64, 43, 11,105,249, 39, 35, 40, 69, 49,136,116,161, 44,154,248,191,167,215,108,176, 84,221, 22,196,161, 9, + 11,120,202, 95,216,238,188,148,162,172,157, 27, 94,252, 87,239,225,110, 18, 33, 26, 18,143,108, 77,166,157, 41, 13,172,127, 95, +146, 60,100, 67, 90,101, 63, 21,155, 9,224,163,108,103, 70, 51, 41,148, 38,125, 0, 52, 45, 14,147,155,191, 61,252,131,106,143, + 84,200,142, 41,189, 91,171, 4,166, 46, 74, 61, 13,123, 36,229, 11,108,211,206, 71,141,190,216, 24, 12, 19, 90,246,184,145,212, +207,126,115,113, 37,173, 62, 94,219, 2, 54, 36,147,117,236,254,225,222, 76,217,217,157, 83, 97, 15, 41,235,195,202,182,108, 89, + 79,142,105,175, 27,235,183,196,126, 85,183,216, 70,117,211,118,211,178,240,243, 29,228, 37,213,237, 20, 92,221,210,182,135, 41, +138,176,229, 52, 49, 59,229, 80,109,241,157,154,205, 76,224,247,173, 48,164,236, 98,241,140, 77,113, 96, 83,199, 46, 35,144, 77, + 16, 35,156, 62,184,135,159, 95,227, 31,252,218, 63,226,103,222,120,145,239,190,243, 46,106, 11, 30,127,236, 49, 86, 39,247,249, +224,230,135,228, 69, 78,240,158,166,172,104,234,154,198, 5,102,179,130,249,172, 64,141,225,233,167,158,225,218,245,235,228, 70, + 34,187, 60,120,110,221,250,136, 15,110,222, 36,203, 11,102,243,121,156,238, 85, 9,206, 35,170,212,117,205,233,217, 18, 87,215, +228,153,229,232,232,152, 87, 94,122,142, 63,242,197,159,166,174, 26, 62,254,232, 35, 92, 83,227, 3,148,181,139, 33, 47,170,248, +160, 45,137,215, 80,175,207,104, 92,220,221,219, 44,202,207, 92,227, 80,239, 49,121,148,207,121,231, 90,107,225,168,200, 80,175, + 56,107,200, 53,144,181, 76,248,178, 9, 88, 83, 51,203, 11,154,210,224,212,199,123,189,187,159,196,114,230,148,239, 28,121,228, +232, 62,215,237,109,126,252,218,130,215,126,252, 6,239,188,250,199,120,251,221,219, 28,127,248, 62,254,228, 14,102,125,134,248, + 37,198,132,214,215, 34, 68, 22,126, 86,128,201,183, 70, 59,111,171, 63,253,218, 37, 4, 84, 3,218, 84, 52, 77, 67,229, 2,141, +153,179,119,249,113, 94,122,253, 21, 94,127,253,117,126,242,205,215,248,204, 11, 79,114,126,126,198,239,126,243,183,184,251,224, +152,114,181,102, 63, 55,132, 34,227,228,220,241,196,254,156,203, 79, 63,201, 63,255,205,143,248,234,255,250, 79, 57,228, 1,197, +193, 21, 34, 80, 56, 52,228,169,231, 1, 27,136,147, 92, 64, 80,125, 24, 68,125, 1,165,252, 83, 56,189,140, 28,253, 54,208, 15, +125,200, 58,126, 50, 56,110,109,237, 31,174, 50,248, 97,238,221, 51, 35,137,171, 86,207,207,240,216, 74, 88,213,134,239, 26,101, + 46, 49,133,173,147,148,133,214, 95, 74, 53,131,108,129,177, 21,210, 52, 52,206,224,141,144, 75,100,115, 75,155,204, 38,173,251, + 92, 42,159,234, 46, 85, 72, 62,226,110,119,222,237, 98, 7,189,252,112, 96,244, 7,137,234,216,133,173, 23, 51,167, 12,252,225, +195, 49, 35,120,155,129, 14, 40,169,202, 93, 91, 66,221,240, 32, 12,112,120, 59,127,107, 68, 53,212, 26, 10, 9,152, 0, 85, 18, +203, 41, 91,128, 34, 77, 38, 47, 73,102,252, 48, 6, 17, 70,197,114,120, 95, 38,229,168, 77, 10,217, 22, 90,108,187, 27, 23, 1, + 47, 54, 6, 93,180,186,243,192,192,182, 79,239,125,191,109,111,213, 54, 35,102,195,150,118,124,200,247,117,194, 8,179,220,226, +235, 24,131,105,140, 14, 65, 96, 9, 23, 64,182, 52, 99,210,123,155,104,235,197,170,173, 90,162,141,166,156,172, 83, 6, 20, 99, + 75,193,217, 2,241,143, 3, 76,116,162,143,223, 13,236,245,201,100, 91,178,190, 85, 35,153,234,250, 83,207,145,171,227,246,173, +143,177, 89,182,245, 64, 21,177,131,247, 80,136,234, 0, 73,125,191, 39,107,136,241,129,161,219, 15,146, 78,126, 57, 9, 93,218, +125,178,232, 64,126,155,116, 50, 50,162,151,142,204,152,147,105,126,187, 37,174, 38,207,157, 49,134,213,233, 49,167,206,242,247, +127,237,215,248,202, 31,121,147,111,127,231,109, 76, 49,227,177,107, 87,169, 86,103,124,251,237,239,181,201,106, 66, 85, 53,248, + 16,200,108,206,124, 22, 51,201,171,170,230,133,151, 95,230,198,141,199,168,171, 10,103, 12,133, 17,238,222,187,199, 71,183,110, +147,181,147,124,211,196, 61,184,119, 13,120,135,119,142,117,217, 68,210,154,115, 84, 85,205, 98,150,243,135,127,226, 45, 46, 93, +185,198,187,239,127,196,241,209, 81,219, 11,121, 16,203,170, 44,153,101, 2,121, 65,189, 94, 99,172,165, 10, 22, 85, 71, 49,155, + 33,170, 52, 77,221,163,129, 6,197, 26,161,106, 98,209, 15, 1,154,166, 33,107,157, 14, 53, 68,114, 95, 36,211,197,230, 86,178, +120, 93, 10,235, 49, 54, 35,120,199, 44,183,125, 62,187,201, 44, 33, 40, 31, 85, 25, 31,127,184,230,218,236, 61, 62,119,121,193, +203,159,191,202,157, 87,254, 48,247, 79,107,142,143,207,168,170,146,117,229, 40, 87,145,201,223, 44, 79, 49,203,251,100,254, 12, + 43, 14, 99, 77, 43,165, 29, 58,255, 16, 66,187, 74,208, 24, 46,164,224, 37,199,139, 69,138, 61,138,195, 27, 28, 94,186,194,203, + 79,220,224,249,231,158,227,181, 23,159,230,217, 39, 31,227,138,173, 89,159,159,240, 91, 95,255,152, 7, 39, 75,202,229, 10,131, +103,182,183,199,202,103,152,179, 21, 47,220,184,206, 74, 22,252, 79,191,254,111,248,189,175,254, 75, 46,207, 2,118,126, 53,114, + 13, 18,130,169,208,234,252, 71, 85,115,130, 43,124,138,170, 38, 27,137, 28, 15, 69,189, 47,116, 98,215,148, 46, 53,106, 18, 30, +238,254,247,136,158, 57,191, 63,236,185, 11, 76,109,178,142,225,237,146,152,207,142, 16, 38,196,130, 85,107,204,105,238, 64, 98, +219,217,154,106,141,247, 6,151, 89,230,251,158,107, 21,156,213,194,121,235, 88, 96,213,247,123,239, 65,154, 51,248,176,167, 26, +100,219, 79,204, 25,166,213,141,251,132, 1, 63,216, 33,134,126,186, 75,139, 93,106,218,209,215,183,196, 57,205,140, 74,150, 65, + 77,100,159,103, 68,180,161,238, 88,241, 9,217, 79,250, 2, 25,175, 71,199,104, 23, 34, 25,102, 4, 39, 36,175,163,103,242, 74, +106, 51, 51,252, 91, 72, 12,121, 82,104,223, 51,202,207,232, 65,252, 60,217, 43,143,166, 86, 6, 93,189,182, 48,168,237,155, 16, +195, 60,207,217,199,113, 90, 57,154,100,127, 59,242,239, 15,155,152, 70,186, 31,239,224,199,148,157,167,201,245,137, 15,109,220, +236,187,170, 34,196, 78,113, 12, 94,245,121,182,105, 38,183, 14,126,251,161,101, 6, 36, 18,174,254,147,237,246,231,163,162, 39, +109, 70,252,197, 19,250,118,201,221, 38,151,246,162,103, 78, 9, 35,196, 34, 69, 67, 2,130,212,103, 81, 13, 33,102,251, 44,161, +209, 27, 32,157,114, 69,117,115,138,106,255,126,163,241,145, 36, 91,125, 43,251,121, 59,159, 74,118,186,218, 73,130, 50,234, 6, +178,208,215,232, 30,141,211,209,223,111,146,235, 32,179,177,101,174,215,231,220, 61, 93,243,203,127,251,239,243,231,255,228, 79, +241,189,247,222, 99,239,240, 10, 7, 7,123, 4, 87,243,254,251, 31,176, 46, 43,138, 60,167,172,106,140, 64,158,101,184,186,134, +224,168,189,242,248,147, 79,241,212,147, 79, 68,211,153,118,117, 83,213, 53, 71,231, 37, 54,159,145, 25,101,181, 90, 71,134,188, +115,156,157,156,178, 60, 95,209,184,134,249,188,160,174, 43,154,198,113,190, 92,241,214, 91, 63,194, 43,175,190,202,114, 85,114, +239,222, 61,172,137, 22,212,161,105,176,162, 24,147,245, 60, 32,107, 45,123,243, 2,127,120,128, 43, 13,136, 97, 85,174,105,130, + 98,212,147,229, 5, 62, 4,172, 53,237, 58,221, 33,214,182, 10, 14,105,173,105, 99, 72,148,141,179, 52, 46, 4, 22, 2, 38, 47, + 80,215, 68,139,218, 16,250,243, 45,203, 50, 66,112, 4,175, 20,214, 32,197,140, 83, 12,103, 39,158,253,179,187, 60,177,200,121, +238,218, 30,250,196, 1,166,120,140, 96,231, 4, 59,163,212,156, 59,167, 53,183,238,156,114,239,246,109,206,143,239, 81,175,206, + 8,117, 73, 8,117,223, 72,231,179, 57,139,253, 67,242,189, 61,178,217, 30,139, 34,227, 96,127,143,131,131, 67,174, 29, 46,184, +124,121,159,235,123, 51,174, 29, 20,204,196,211, 44, 79,184,253,246, 39,188, 91, 54,168, 8,101, 19, 40,203,154, 76,148,253,189, + 25,106, 50, 14,247,246, 56,184,244, 12,111,191,247, 1,255,219,191,248,159,121,240,222,183,185,122,105, 31,201,103, 61, 41,110, + 28, 70, 51, 12, 43,169,230,157,157, 51,250, 69,163,183,124,186, 90,248,168,145,171,137,255,132,108,250, 51,114, 81,220,218,197, + 82,216, 71,127, 41, 63, 76,121, 91,166,166,213,135,135, 22, 74,148,161, 59,183,164, 26,200, 48,216,136, 38,132, 2, 19, 74,220, +202,176,204, 12,214,194,194, 42,117, 96,148,191, 28,225,216, 65, 34,214,111,111,181,155,248, 59,226, 92, 11,197, 26,131, 85,162, +132, 37, 36, 20,178, 32, 40, 54,166,104, 37,250, 42, 25,117, 91,137,229,109, 15,229,210, 59,198, 17,162,229,163, 65, 40, 36,186, +224,209, 22,206,166, 85, 0,244,251, 78,105,243,201, 19,200, 91,197, 96, 12,228,170,125,218, 90,199, 32,151,169,126,136,193,174, +118,176, 73, 29,235,127,117,210,245,141, 38,252,118, 34,175,211,130,144,116,191,178, 99, 74,237,175,123, 83,181,202,133,116, 45, +161,125,104,132, 18, 3,104, 58,125,115, 55,141,133,233,206, 55,217,249,107,146,251,173, 73,243,161, 12,251,220, 20, 9,192,208, + 91,223,218,132, 76,213, 77,224,182,125,181, 94,135,223, 43, 83, 79,230,174, 81,235,188, 9, 90,253,176,110,177,129,157, 22,249, +113,194, 92,210,184, 24,233, 39,221, 48,145,198,117,247,174, 36,193, 58,219, 30,186, 89,110,185,119,239, 8, 69,200,243,108,235, + 14,220,136, 33,132,128, 49,157, 68, 44,108,188,200, 41, 27, 94,183, 64,131,227,112,151,177,102, 64,119, 76,245, 50,213,229, 95, + 16, 9,185, 89,244,219,198, 62, 65, 2,182,133,196, 24,105,141,113,188,227,214,189, 35,254,252, 95,252, 21,126,249,151,254,125, +238,222,253,132,131, 75,215,152,229,150,204,192, 39,199,199, 28,157,156, 98,197,224, 92, 19, 39, 89,160,105,106,234,186,198, 24, +225,177, 39,158,228,197, 23,159,235, 63,131, 34,143,100,185,170,110,184,116,120, 0, 26, 56, 57,186, 79,211, 56,154, 38,178,221, +151,203, 85,207,181,112,117,217, 78,233, 13, 79,220,184,198, 27, 63,250, 35,204,231,123,220, 63, 89,178, 90, 45, 49, 2,141,239, + 85,254,204,139,136,172, 84,141,139, 70, 50, 86,176,214, 82,121,135, 21,161,200, 51,154,198,226, 67,155, 70, 97,179, 72,130,179, + 2, 89,129, 42,184,110,125,213, 73, 93,181,109,155,133, 24,101, 76, 96,111, 94,176, 90, 54,184,186, 34,179, 66,163,113,215, 89, +134, 6,107, 12, 98,163, 22,104, 38, 74,144,200, 71,170,109,206,113, 99, 8, 71,107,112,103, 44, 12,236,207, 50,246, 22, 57, 7, +153,229,233,249,156, 55, 94,217, 99,249,242, 75,156, 54,175,113,182, 44,169,203, 18,213, 64,158,229,236, 45,102, 28,238, 45, 88, + 44,102, 44,114,137,132, 67, 13, 44,108,136,218,122, 87,177, 58, 63,167,190,119,155,219,119, 2,235, 32,168, 87, 68, 76,204,155, + 87, 33, 4,101, 49,207,153,101, 57,179,189, 3,174, 94, 58,228,188, 90,243,191,255,171,127,205,111,254,191,191,129,169,151, 92, +187,118, 37, 14, 73, 91,131,131,146,161, 32,189,183,100, 96,232,238,182,218, 26, 47,248,100,226, 76,169, 15,171,136,159, 66, 19, +158,198, 29,235, 86,150,206,142,159,241,208,103,137, 13, 11,242,223,159,255,198, 63, 55,139,133,208, 32, 18,200,128, 38,116,178, +178,214, 31,187, 29,231,135,206,127,216,173, 70,200,217,144,137,226,125,224,204, 71, 83,149,188,253, 20,125,203,120, 15, 34, 45, +209, 70,113,196,253, 85, 52,146,145,126,223,234, 90,118,189, 73, 25,180,237,117,243,189, 36,203,162,166,136, 22,235,226, 16, 95, +227,131, 73,246,215, 58, 76, 66,146,198,243, 69, 79,118,107, 5,227,171, 40,159, 9, 81, 90,151,181, 9,101,189,172, 75,198,145, + 37, 83,127,121, 85,197,160, 17,226,144,238, 90,104,178, 39,151, 13,118,120, 74,162, 50, 50,176,246, 59, 83, 18,218,105, 48, 30, + 14, 41,233,110,124, 51, 73,235,188,166,152,126, 34,111, 38, 5, 61, 36,173, 66, 21, 96, 29,164, 69, 89,232,161,249, 32, 67,156, +168,177, 22,107,162,231,188,119, 30,175,108,225,228,111, 66, 94, 58, 70,210, 70,175,215,119,141,128,104,239,160,215, 57,239,245, + 43,144,100, 63,158, 25, 8,126,240,158,191,232,214,237, 56, 8,141,142,131,118, 12,187,125, 32, 36, 9,165, 17, 25,101, 79, 38, +242,201, 14,185,104, 5,133,125,135,168, 35,211,168,225,193,143,110,129, 54,203, 55, 10, 93, 87,163,173, 64, 97,132,149,235, 16, +145, 33,230,120,115, 45,184,105,243,186, 49, 24,244,182,183, 19,178,219,206, 83,107,128,220,199, 1, 46,194, 68, 32,180,125, 87, + 9, 91,172, 72, 55,127,153, 11,202,199,183,111,243,214, 31,251, 10,127,239,111,252, 53,234,245,146,249,222, 1,133, 21,156,194, +249,249, 41,119,239,124,130,180,207, 75, 89, 53, 52, 85, 69,145,103, 20,179, 25,152, 12,147, 25,158,125,246, 25,242, 44,167,110, + 92, 91, 60,149,224, 64,189, 35,183, 66, 81, 20, 4, 21,154,186, 98,181,138,154,244,166,174, 35,210,232, 3,229,186,106, 77,155, + 2,175,124,230, 21,158,121,246, 57, 20,195,241,253,251,248,186,166,170, 26,234,186, 6,148,204, 90, 76, 86, 16, 92,131,177,194, +106, 29,200, 12,216,214, 67, 66, 67,124, 22,212, 55,228, 89,214, 54,135, 74,221, 4, 12,158,124, 54,139,105,111,121,214, 74,223, + 90,135, 15,175,189,106,196,136,160, 45, 59,222,187, 38,122,116, 96, 8,222, 71, 3,157,204,180,207, 78,212,185,123, 87, 97, 77, +124,159,130,224,188,163,118, 30,163,224,212,114,182,244,228,149, 50,155, 21,228,101,141, 80, 51, 23,207, 37, 49,236,133,128,201, + 33, 55,150,121, 81, 97,243, 10,211,156,177, 94, 7,170,186, 1,107,112,154,241, 0, 33,104, 0, 99, 88, 59, 33,212, 53,214, 4, +140,205,200,173,197, 22, 57,130,193, 40, 88, 59,227,224,224, 18,135,151, 14, 88,158,159,241,181,223,254, 38,255,230,171, 95,227, +206, 71, 31,112,233, 96,159,252,242,213,193,165,113,215, 68, 58,229,128,116, 68,208,238,252, 12,190,229, 90,121, 52,180,202, 13, + 31,215,182,113,229,106,192, 88, 12,130, 49, 1,205, 12,108,152,217,240, 72,154,244,109, 27,114,101, 98,169,172,159, 98, 74,222, +137,247,237,250,150,139, 11,251,247,191, 91,159, 76,234,195,244, 45, 4, 3, 38,116, 7,115,155, 55,174,130, 23,197,142,228,108, + 3,199, 89, 90,114, 88, 38,241,123, 58, 8,185,219, 4,183,118, 43,189,230, 47,116,174, 71,125,128,139,105, 89,208,130, 53,237, +238,187, 69, 5,180,221,175,118,185,233, 42, 6, 49,138,177,134,220, 88,140, 24,124, 3,181, 90,212, 10,214, 68, 84, 32,104,194, + 49, 87, 65, 37,195,139,141,158,236, 89,142,173,149,202,197,194,208, 62,131,253,235, 78, 97,205,206, 40,102, 92,232,226,207,111, + 72, 80,129,142, 25,204,196,168, 99,114,115, 11, 67,145, 67, 58, 35,158,208,199,191,218,150,101,235,118,221,136, 9,225,197, 90, + 75,166, 53,206, 79,216,254, 19, 86,186,221, 8,213,161,103,178,247,113,139,186, 75, 60, 34, 35, 89, 55, 59, 28,209,198,203,165, + 65,114, 21,116,124, 27,143,247,240,161,127, 29,141,242,240,150,183, 91,125,168,246, 70, 66, 29, 2,209, 53, 67,176, 91,183,222, + 57,193,137,145,126,229,160, 27,121, 15,130, 41, 22,168,107,250,137, 90,147,198, 96,240, 48,183, 52,117,195,186,246,236, 47,230, + 49,242, 83, 39,168,130, 68, 87,190,210,251, 17, 81, 41, 93,101,104,194,215,155,186,210, 77,245,175, 50, 37, 62,169,108, 80,143, +140, 76, 51,204,119, 89, 88,110, 18, 2, 85,199,145,198,253, 94,221,232, 70, 66,200,136, 4, 40,112,126,114,204,229, 27,207,241, +119,255,214, 95,103, 97, 3, 39,237,189,188, 46, 43,172,129, 91,183,110,115,126,190, 36, 51,150,178,105,226,250, 46,203,169,171, +146, 34,139, 94,238,215,174, 95,227,224, 96,159,186,174,219,172,115,168, 67,192, 59, 79,227,227,164, 60,203, 51,130, 6,150,171, +146,245,114, 69, 93, 53,172,203,154,204, 26,130, 42, 69,158,225,156,231,201, 39, 30,231,181,215, 94, 99,111,239,144,117,229, 56, + 62, 57,198,185, 10,239, 67, 68, 77,108,107,188, 17,124,228,111, 4,197,182, 83,250,250,116, 73,240, 13, 34,134,198, 53,113,168, +177,113,114, 85,239,201,114,139,170, 37,248,208,255,188, 94, 33,161,145,192,105,140, 68,116, 50, 4,106,209,104, 80, 19, 2,185, +129,170,246,136,122,138, 89,156,244,235,170, 33,179, 6,155,231, 49, 27,194,100,113, 87,239,154,158,115, 17, 21, 5,113, 55,159, +231, 22, 49, 18, 67,100,130,114,230,162,206, 40,207,115,130,201, 40,203,138, 60, 52,204, 23,115,156,100, 84,101,197, 60, 23,230, +179, 25,198,120, 84, 76,124,244, 92, 19,135, 43,107,176, 98, 41,242,172, 85, 35, 68, 51,171,199,174, 95,227,224,242, 53,142,143, +143,249,173,111,124,141,223,252,230, 55,121,247,221,247, 40,172,229,250,181,235,109, 19, 26, 30,125,133,220,221, 51, 33, 16, 92, + 77, 83,173,105, 26,143, 55, 51,180, 56,196,228,123,200,108,129,181,150,124, 62, 39,159, 31,144,229,145,103,225,234,146,186,169, +209,117,160, 88,221, 1,238,130,157, 49,177,231,122,116,179,153, 11, 75,227,167, 48,157, 81,249, 84, 51,184,254,112, 42,248, 67, + 33,248, 44,116,124,245,196,236,195, 74, 34, 83,105, 9, 93,190,135, 13,165,101, 45, 15,112,233,128,180,134,214,237,107,160,131, +153, 54,164, 4,137,144,169, 85,193, 17,218,233, 54,209,209,154,110,242, 15,209,187, 61,196,157,122,208,193,217, 76,213,131, 70, +233,142,104,100,188,246, 33,173, 98, 16,107, 34, 11,185,245,133, 22, 26,188, 83,130,122,140,216,118,106, 9,157,216,174,133,241, +199, 83,117,191,151,215, 56,209,118,218,212,160, 99,182, 99, 24,121, 17,110,234,134, 55,254,182,183, 53,111, 73, 96, 65, 7, 57, + 87,123,216, 7, 29,103, 85,202,196,206, 84,219, 73, 83, 91,122, 91,150,222, 91, 27,249,102, 58,178,140,220,246,248, 5, 20,188, +111, 81,152, 16,247,253, 45,175,194,118, 78,122,221,239,109,223, 89,144, 52, 33, 74,182, 99, 89,194, 6,211, 93,183, 17, 86, 90, +228,161,111,244,244, 97, 70, 13, 41, 97,111,152,244, 83, 2, 93, 58,181,203,232,186, 38,197,107,130,238,105,219,192, 98,114,174, + 95, 62,100,121,118,194,114,237, 49,182,117,201, 15,237,221,106,109, 44, 54,229, 25, 87,159,127,157,183, 94,121,133,183,191,254, + 27,156,158,157,147,229,249,246, 34,185, 5, 88, 76,167,130,105,144,132, 36, 44, 77,157,132,253, 78, 40,186, 27,135,137,142, 96, +247,244,235, 7,158,204, 46, 67,147,222,253,176,191,161,116,216,189,203,174,157,122,252,243,189,147,115,254,250, 95,253,175,249, +209,207,190,196,157,123, 15,152, 23, 51,206,206,207, 64, 3,119,239, 31,115,255,193, 81,116,185, 11, 74, 85, 53,168,171,177,153, +229,188,241,216,178,226,218,193, 33,215, 31,187,214, 70,156, 18,253,222, 77,235,212, 22, 92, 79,226, 61, 61, 59,229,252, 52,234, +207, 93, 93,183,156, 88, 33,203, 12,222,107, 68,154,188,227,179,159,123,131,199, 31,127, 28, 43,202,233,217,121,156,206,197,162, +212, 96,162,134, 94, 85,113, 77, 52,180, 9,206,147,217,172,117,226,131,232, 68, 28,167,198, 44,203,250, 33, 37, 24,211, 23,248, +224, 92, 44,144,189,147, 95, 22,137,188,170,184,198,227, 92, 13, 26,104, 26, 33,179, 57,179, 89,198, 98,239, 18,179,144,145, 27, + 37,207, 51,170, 96,168,234, 26, 9, 33,174, 2, 9,132,224, 41,171, 10,155,197,189,126,252, 95, 92,249,101, 70, 98,184,141,122, +212,100,125,200, 79,214, 50,226,213,149,228, 6,138, 98, 6,198,224,154,134, 34, 19,164, 69, 63,138,220,160, 82, 16,130,143, 17, +206,198, 80, 24, 75, 38,150,249, 98,143, 98,255, 42, 7,139, 25,185, 81, 78, 31,220,230, 27,191,253, 53,190,241,205,111,241,225, +199, 31, 98,196,114,229,242, 37,140,152, 33,142,121, 51,187,116, 59, 18, 30, 60, 77,185,166,172, 74,106,205, 40,246, 47,113,237, +249,151,185,254,228,179, 60,118,227, 9, 14,175, 93,199,204, 15,176, 10,135,133, 50,219, 47,104,130,229,236,116,201,201,189,123, +216,213, 93,202, 44,240,221,245, 30, 71,239,189, 66,241,209, 55,193,127, 0,182, 32,213, 18,125,122, 1,152,142,164,251,250, 40, + 44,180, 93, 22,159, 63,248,122,255,135,129,188,199,162,222, 33,145, 62,153,179,188,146,216, 63,198, 41, 61, 36,147,166,151,214, + 97,139, 97, 34, 15,100, 49,184,196,212, 45,116, 37,109, 3,208, 74,197, 52,217,239,137,237, 23,173,161,157,204,209, 78,178,165, +189, 51,221, 56, 71,162, 45, 77,190,198,119, 62,228, 26, 83,218,252, 56,216, 26,107,226,142,220, 5,131, 26,143,250,134,208, 4, + 42, 21, 10, 90, 9,138, 74,207,104, 77,112,218, 13, 44,185,115, 98, 19,209, 17, 97,122, 26,228,163, 23, 94,247,137,155,154, 78, +221, 25,117,108,203,156,188,158,148,102,215,161, 36, 22,165,110, 60,101,167,241,223,194,249,214,164,172,143,118,203,211,175,244, + 1,199, 40,100, 19,139,146, 75,156,160,125,250,243, 68,152, 89,139,120, 79,169,210,235,208,183,199, 34,245,155,253,222, 44, 70, +183,213,255,212, 13,115, 2,139, 77,255,243,202, 70, 28,107,154,192,199, 68,218,211,121, 8, 76, 19, 5,101, 66,176, 27,252,211, + 61,103,199, 15,112, 33,250,149,167,230, 62,217,108, 78,177,216, 39,120,101,185, 46,121,242,218, 1, 63,249,226, 33, 31,252, 54, + 52,161, 93,199, 76, 96,239, 14, 66,156, 18,231,166, 77,160,176, 73,200,239,210, 22,162, 55,192,196,204,166, 15,148,145,157,232, +137,181, 57,206, 59,122,188, 95,211,108,251,221,233,113, 29,130, 54,142,223, 76, 67,142,210, 12,117,225,248,193, 3, 62,243,249, + 31,229,231,255,236, 87, 56, 61, 61,101,111,111, 63,218,180,134,128,115, 77,180, 67,158, 45,104,154,154,166,137,133,184, 81, 8, +206,115,245,210, 37,156,247,236, 31, 30,176,152,207,105,124,228,117, 88, 49,120,239, 41,203, 53,198,198,232,195,198, 57, 86,171, + 53,229,178,164,108, 97,119, 16,140,137, 77,168, 23,165,118,129,107,143, 93,227,217,231,159,139, 54,175, 26, 56, 57, 61,163, 90, +175, 98, 60,107, 80, 44, 6,239, 34, 75, 94, 67,188,167, 84, 32, 51,145,251,144,217, 56, 9,135,208, 42, 63,196, 82, 87,117, 68, +209,242, 44, 94,151,224, 49, 18,195,100,156, 49,152,214,223, 62,104,100,214,184, 0, 85, 21,139,122, 45,112,184,111,184, 60,159, + 35,254,140, 80,150, 52,222,145, 23,150, 75,243, 5,249,222, 12, 53, 5, 70, 44,222,236,177,170, 3,133, 94,138,242,226,224, 49, +198, 80, 87, 21,198, 55,241, 89, 20,143, 53, 54,162, 29, 70,144, 32, 52, 62,176, 44, 27, 68, 27, 14, 22, 5,146,205,169,170,232, +123,159,229, 5, 78, 5, 27, 2, 34, 25, 14,139,136,141,242,193,189, 61, 14,246, 23, 28, 44,102,136,175, 89,158,221,225,230,135, +119,248,214,247,222,231,247,190,251, 14, 15,142, 30, 80, 20,115, 46, 31, 28, 34,198,244,124,150,139,138,139, 38,133,188, 90,175, + 89,175,215, 48, 91,112,248,216,179,188,242,204,179,188,248,210, 75,188,244,242,139, 92,125,252, 9,174, 46, 44,121, 38,132,106, + 77, 83,158,182, 54,192, 57,235,170,230,238,201,138,211,251,199, 20, 71,159,176,176,107, 30,147,156, 43, 7,107,190,254,234, 37, +238,202,143, 51,187,233,192,127, 4,118,206,167, 85,131,111, 21,170,109,113,217,219,141, 60,104, 2, 92,238,158,214,183,171,114, + 46, 78,174,249,212, 3,252,150,111,200, 66, 43, 59, 11,218, 5,160, 76,205, 97, 90,194,148, 57, 64,115,135,145,146,204, 71, 77, +123,119,116,135,214, 19, 93,197, 64,102,200,197, 97,107,168,195, 64,170,139,238,112, 97,184, 16, 22, 22,173,103,124,169, 17, 2, +107, 68,251, 34, 27, 84,122,139,204,161,147,106,229, 18, 62,180,228,177,206,183,219,131,215,126,138,244, 93, 48,141,134,232,132, + 39, 16,212,227,107,165, 20,122,207,249,244,106,132,177, 3, 71,108, 86, 54,188,236,181, 47,242,125, 67, 51,201,144,223, 36,173, +141,157, 73, 59, 5,192,176,231,220,126,219,140,155, 6,221,172,204,164,201, 97, 50,176,151,167, 8,130,140, 39,194,109,208,216, +116, 30,244,157, 2, 32,229, 40,116, 61, 79, 8,147, 97, 92, 55, 45, 23, 82, 15,115,211, 46,110,194,244,138, 15, 57,221,221,154, +199, 76,178,225,119, 89, 42,142, 61,240, 31,198,147, 73, 24,253, 50, 64,102,108, 41,236, 10,172, 91,211,158, 97,171, 16, 83,186, +242, 89, 17, 39,119, 3,151,175, 94,225,221,223,251,109, 62,248,214,111, 81,171,101, 62, 43, 54,246,233,177,176,155,173,140,241, +116, 85,160, 91,217,180,209, 21,112,190, 88,144,101, 25,231,167,167,113,183, 56, 98, 55, 36,178, 54,116, 19, 62, 31,101,211,111, +102, 74,199,134,108,178, 71,212,113,212,206,182, 77,233, 72,210,174,202,201,178,228,175,254,194,207,243,194, 51, 79,114,247,222, + 3, 14,103, 57,101,121,138,115, 13, 77,221, 80,100,134,107, 87, 46,243,225,249,105, 79,112,180, 18,225,105, 13,158,131,195,125, +110, 60,254,120,239,216, 22, 66,140, 97,174,234, 42,102,153,183, 22,212, 85, 89, 83,183, 69, 98,189, 42,241,193, 71,206, 66,158, +199,189, 51, 74,158, 89, 94,126,233, 5,102,139,253,200,168,199,178, 92,173, 41, 87,171,129,108,216, 66,224, 70, 35,178,147, 27, +193,139,197,181,123,124,155, 89,196, 24,196,187, 86,162, 24, 3,146, 98, 48, 77,231,243, 30,226,138, 80, 60,153, 49, 52, 46, 80, +215, 37, 89,214, 10,121,125,141,180,142,144,185, 17,230,179, 5,223,125,239, 54, 31,127,240,118,223, 80, 89,129,153,133,249, 44, +134,212,236, 45,102,204, 23, 11,246,247, 22,236, 29, 92,166,200, 11, 46, 31,238,147,237, 93,166,242,151,112, 33, 54, 55, 54,203, + 17,147, 83, 86, 30, 87,174,208, 60,128, 13, 88,227,201, 13,204,246,230,120,201,217, 47, 98, 65,207, 50, 75, 16,195,204,192, 98, +145, 99, 16, 50,234,168,248, 89,159,112,118,251, 3,222,185,247,128,119, 63,248,136, 79, 62,185,197,157,227, 37,181, 83,246,246, +246,184,118,245,250,232,129,234,248, 70,186, 67,246,165, 40,213,106,205,114,181,130,172,224,218,141,167,121,243,179,159,227,245, + 55,222,224,249, 87, 94,227,137,199,174,177,151, 11,174, 60,163, 92, 45,105, 92,197,209, 89,195,250,244,156,133,105, 96, 49, 99, + 93, 5, 86,165,227,238,185,231,108, 85, 98,197,115,166, 57,231,107,207, 85,167,188, 57, 59,231,235, 47,236,113, 82,255, 33,102, +183, 75, 52,220, 7,179,248, 84, 18,178,157,178,118,121,132,240,151, 13, 63,221,135,107,236, 63,237,164,254,131, 34,243, 89, 23, +192, 97, 80, 52, 8,190, 11,115,233, 37, 99, 45, 17, 77,215,104, 16,200,149,125, 64,131,176,212, 1,120, 23,241,152,112, 78,168, +132,208,178,215, 99, 80, 73,151, 33,158, 18,197, 2,248,118,119,156, 18,165,181, 11, 94,145, 81, 44,232,244, 18, 70, 45,102,146, + 4, 31, 74,112, 25, 77,200, 80, 27,139, 77,199, 74, 77, 29,184, 12,131, 41, 75,104, 15, 23,153, 92,201,148, 70,164,137, 20,206, + 43, 19,159, 56,134, 8,210,113, 44,208, 22, 46,182, 14, 9, 74,105,196,232,228,119, 14,250,138,221,157,103, 80, 29, 77,154,154, +100,215,135, 72,146,192, 2, 78, 58, 47,127,153,184,221,177, 49,209,143,236,105,146,100,180,212, 47,190,155,226,235,160, 99,228, + 73, 39, 52,144,100, 99, 16,167, 76, 67,110,133,166,246, 3,234, 1,209, 35,155,120,184, 77,247,190,250,136, 15,137,108,115, 86, +219, 81,220,135, 75, 62,176, 5,182, 41,188,173,145, 13, 10, 13,170,248,166,194,216, 28, 66, 64,124, 77,233, 2, 94,161,200,164, +119,217, 75,245,243, 98, 76,132,144,219,144, 28,157,202,216,116, 92, 36, 69, 54,229, 53,190,105, 32,184,113,234,218,168,229,102, +195, 20,166, 83,149, 52,141,139,239,210,200,102,115, 56,106, 34,100,172, 91, 31, 49,141, 55,228,252, 9, 63, 4,206,207,207,120, +229,213,215,248,210,159,248,163,156,156,156, 48,159, 47,168,170, 53,103, 39, 71,212, 85,141, 15,190, 39,140,121, 23,147,207, 92, + 19,181,211,222,123, 68, 12, 79, 93,190,194,108, 62,143, 19,115,171, 14,240,237,245,234,204, 95, 66, 8,172, 86, 75, 30,220,127, +192,249,114,217,194,199,113, 37, 40, 45,100, 94, 57,207,245,235,151,121,238,133,231,104,156,167, 40, 44, 34,102,104, 14,162, 73, + 64,228,227,216,156, 16, 60,117,237,105, 26,135,201, 50, 92, 75,118,179,109,179, 19,130,146,183, 92, 31,147, 66,246,206,161, 33, +144,231, 89, 12, 97,106, 26, 26, 31, 77, 97,172,181, 44,215, 53,101, 89,246,172,239,195,189, 61,206,150, 37,239,126,116, 11,209, +130,172, 13,162,241, 8,101, 80, 30, 44,227, 64,163, 97,137,232, 25,133, 40,121, 22, 88, 20,150,195, 69,198,222,222,140,189,197, + 30,123,123, 11,246, 15, 14,216, 95,236,177,119,176,135,145, 57,115, 19, 88,236,205, 80,201, 16,242, 72,176, 19, 67,112, 13,185, + 85, 2,209, 10,183,169, 42,202,186,228,164, 92,115,118,186,228,236,236,132,147,243,115,238, 63, 56,229,193,233,146,243,181, 67, +109, 70, 81,204, 89,236, 93, 98,223,200,142,173,154,140, 72,158,170,134, 16, 28,174, 90,178, 94,151,148,206,240,248,141,199,120, +253,167,190,200, 27,159,127,147,215, 95,255, 12, 79, 62,241, 36,115, 19,104,214,167,156,173,239,113,255, 56,174, 77,131, 88, 86, +101,141,171, 75,138,194, 98,108,116,227, 51, 56,234,160,145,107,128, 39, 24, 75,104, 42,172, 56,206, 52,227,178,135,207,239,215, +124,227,133, 57, 85,245, 38,249,253,175, 66, 94,130,204, 47,192,255, 31,161,104,126,106, 24, 93,182,224,177,187,135,187, 31,110, +217,190,248,116,204,250,201,120,216,246, 14, 6, 48, 93,233, 52, 32, 52, 88, 7,234,133,117, 66,174,235,253,222, 19,169, 91,240, +176,110,101,100, 38,201, 99,238,140, 91,124,123,144, 52,218, 73,211,218, 66,158,132, 78,140,125,120,135,163, 43,116,250,113,105, + 73,116, 90,192,254, 83,216,236,152,234,252,156,198, 91,114, 51, 20, 57, 77,152,227,253,165, 55,210, 51,240,117, 66, 51,143, 83, +169, 37,136,144, 73,104,205,118, 6,120, 58,158,105, 97, 68, 98,145, 86, 34,167,137, 11, 89,122, 0,167, 35,156, 76, 59,136,201, + 29, 32, 91, 38,253,113,147,168,219, 15,218,110,127,204,144,189, 62,157,194,167,150,160,170,227, 64,212, 13, 54,117, 2,109,235, +168,205, 26,243,209,181,197,209,141, 72, 34,127,107,225, 90,239, 90, 69,197, 80, 44,189, 87, 46, 61,246, 4,214,175, 56,122,112, + 28,125,174, 39,123,229,135, 21,234,135, 68, 36,143, 12,110,166,251,254,135,133,178,244,196,204,228,190,107,202, 10,223,196, 69, +133,111, 28, 89,150,245,144,187,110,129,215,173, 49,109,140,109,116, 85,116,206, 13, 5, 95,101, 83, 74, 51,249,176,141, 17,156, +247,212, 78,251,130,194, 68,113, 48,134,242, 38, 33, 50, 50,198, 32,118,166,203,141,156,246,146, 0, 11, 25, 59, 27, 78,153,249, + 0,231,231, 43,190,244,165, 55,120,230,169, 39,184,127,124,198,225,126,206,131,251,247, 88,173, 43,124,240,145, 29,110, 6, 34, +236,186,172,251,181,157,109, 9,114,135,151, 14, 65, 44, 69,102, 89, 55,171, 62,177, 48,154,185,196, 44,245,218, 43, 15, 30, 28, +113,124,114, 66,104,175,163,109, 93,217,156,247,204,103,115,230,179,130, 23, 94,120,150,131,131, 67, 78,207, 74,102,179, 25,214, +230,168, 87, 50,107,240, 24, 86,171, 53,185,119,204,103, 5, 77, 16,214,181, 67,131,146,181,205, 80,102, 13, 85, 29,223,171,181, +182, 47,204, 81, 79, 30,155, 13, 99,132,162,200,187, 14,164, 53,207,137, 7, 78, 83,215,184,166,142,140,119, 19,167,251,218, 5, +110,222,252,136,250,236, 1, 38,155, 81,135,104,141,155, 5, 71, 38,129,153, 53, 72,150, 33, 38, 3,137,235,150, 38, 40,101, 3, +119,215,158,112,119,141,232, 57,153,120,114,163,100, 70, 89, 20,134, 60,207,200, 51,203,172,200, 48,214,182, 4, 58, 75,221, 4, +130,143, 57,244,206, 57,170,198, 83, 55,158,117,229, 41,235,134, 58, 8, 94, 13, 98, 44,121,150,145,231, 7, 92,154,125, 26, 7, +243, 54,138, 22,195,201,201, 25,206, 85, 92,122,242, 69, 94,253,220, 51,124,254,179, 47,241,214,143,189,193,115, 47,188, 16, 17, +155,186,228,244,252,136, 7,101,141, 54, 53,198, 66, 97, 51,156, 70, 59, 95,171,158,197,172,192,183,230, 56, 26, 60,117, 48,241, +249, 18,199,218,102, 52,165,105,153,239, 25, 34,134,101,128, 27, 46,240,185, 43, 37,255,246,197,107,184,230, 77,178,211,175, 67, + 94, 15,172,248, 71,116,145,211, 11,217,117,242,240,114,124, 1,129,248,145,123,133, 31,212,140,102,235, 78,157, 97, 55,157,250, + 92,135,126,119, 23, 16, 53, 73,182,118, 39,163,138,164, 22,175,210, 91,159,106, 23,225,154, 24, 89,116, 73, 79, 89, 11,181,215, +147,131, 86,144, 54,161,172,195, 5, 6,118,252,104,114,235, 9,122,209, 78, 22,186, 40,216,184, 19,158, 95,177,188,145,193, 7, +247,225, 19,133,153, 76,182,187, 50, 62, 56,141,196,195, 35,180,228,179, 97, 95, 24,191, 54, 19,165, 96,200,150,239,253,237,211, +224, 4,145,141, 79, 70,250,170,100, 80,177, 24,171, 72,240,184,144,234,175,183,120,122,239, 8,234,216,198,152, 28, 29,175,137, + 49, 75, 15,221,246,147,114, 11,159, 75,162, 40,145,193, 84, 38, 97, 66,141,100, 76, 50,153,188, 69,199,156,131, 81,227,161, 93, + 60,143,233,191, 70,135,213, 45,105,252,248, 64, 70, 20,104,214,136, 54,189,253,237,136,191,182, 5, 6,219, 42,241,122,104, 99, + 62,181, 71,213,113,102,210,197, 62, 23,189, 95,122,119,205, 92, 93,183, 46,123,102, 39,147, 60, 38,185, 5, 66,136,108,106, 90, +231,176,177,142, 45, 13,209,145, 13,251,101,146,207,202,202,112,175, 69,189,187, 69,178,184, 23,158, 30, 75,210,202,149,140, 49, +209,212,165,105,198,252,130,157,135,138,140, 50,170,123,232, 61,181,209,157,236,225,187,235,242,220,179,207,128, 8, 69,145,177, + 90,175, 89,149,235,118,191,220,154,238,136,160,184,232,231, 96,162,149,176, 49,113, 13,183,152,207,217,223,223,227,112,127,143, +178,174, 35, 7,160, 37,112, 9, 80,123, 79,221, 56,238,220,190,197,241,131, 7,253, 61, 27, 66,180, 92,181,214, 98,140,197,136, +112,233,242, 37, 46, 95,185,138,115, 81, 71,190,183,183, 79,227, 98, 40, 75, 83, 55, 44, 22,115,216,155, 83,151,107,234,186,198, +102, 25,243, 60,195,155,232,188, 38, 98, 9,193, 69,146,104,150, 83,151,117,139, 30, 74,116,176, 83,112, 26,245,235, 65, 3, 46, + 68,212, 65,189,163,152, 45,168, 28,156,159,157,226,234, 18, 85, 40,140,193,216,140,183,223,121,159,147,179, 37,207,191,250,121, +110, 60,245, 52, 7, 7, 7, 84,193,112,231,232,156,211,147, 35, 86,103, 39,148,231,103,132,242,140, 92, 87,228,185, 33,203,231, +100, 24,102,214,118, 12,151,248, 28, 5,165, 82,101, 85, 43,161,106, 85, 18, 90,247, 94, 11,218,199, 66, 15,228, 81, 17,193,152, + 28, 43, 5,249, 98, 78,209,158, 25, 27,230,166,143,154, 57, 46,208, 4,195,131,251, 15,248,220,115, 7,252,204, 47,252, 37,158, +124,249, 45,158,125,236,128,199, 46,101,184,170,161, 94,159,114,119, 37,184,218,225, 92,255,232,183, 0, 0, 32, 0, 73, 68, 65, + 84, 85,177, 26,144, 60,107,191, 55, 18, 26, 11, 43, 4,137,205, 82,240, 46,146,151,141,193,181,156, 39,107,148, 60, 51,216,121, + 70, 8, 11,130,107, 80,231,177,166,102,165, 25,207, 97, 40, 31, 91,241,237,250,105,252,219,107,108,245,187,144,185,182,164, 61, +122,126,250,110,178,252,195,164,103,250,200,208,249, 35,180, 7,223,255, 44,191,209, 20, 72, 71,160,214, 49,163,175, 39,169,181, +246,136,109, 53,108, 68,201,148, 62,202,115, 48,144,233,100,111, 38,238,197, 58, 31,117, 13,253, 52,235,186, 93,117, 75,160, 11, + 9,191, 87, 38,212,170,206,143,222, 38,204,243,206, 61,204,180, 9, 80,145, 52, 98, 17,219,144,175,222,163,124, 63,227,131,220, + 82,217,206,202,118,211, 80, 80,100, 26,105,154, 68,134,142,244,195,145, 12,224,196,244, 54,169,131, 12, 73,123, 4, 99, 10, 99, +147,102, 96,139, 32, 54,194,185, 96,200, 52,196,194, 62, 45,208,173,148, 47, 39,114, 16, 46,180, 60, 77, 60,206,227, 1,103,200, + 72,243,172,211,249,153,222, 50, 82, 38,169,102, 83,150,124, 72,128,118, 25, 81,251,100,104,100,100,203,164,172,244,159,137,105, + 89,230,131, 37,187, 78,130, 66, 82, 57, 30,156,156, 28,199,137,214, 90, 70,198, 15,137,157,217,182,205,213,212,156,231, 81,231, +139,126,127,159,234, 0,116,199,248,191,149,175, 30, 33,245,135, 78, 52,109, 19, 21, 18, 51,159,141, 88,215,137, 97, 18, 15,201, +104, 31,217, 11,139, 98, 68, 39,214,190,233,207, 29, 71,196, 14,188, 8,182,239, 66,167,192,190,180, 84, 67,221, 76,149, 74,123, +173,206, 73,238,242,229, 75,145, 68,229, 29,235, 85,137, 21, 75, 94,100, 80,183,113,192, 45, 81,177, 91, 69,204,140, 69, 37,163, + 44,215,204, 15,246,216,219,223,143,135,125,221,244, 77, 73,247,107,247,247, 22,220,187,119,159, 91,183,239, 80,150,101,100,188, +211, 26, 73,181,107,172, 34,207,201,139,156,199,159,188,193,108,111,175,117,125,139,175,117, 93,149,113,185,104, 44,117,227,218, +160, 35, 7,121,134,171, 29, 54,138,177,105,154,134,249, 44,231,124, 21, 87, 4,121,102,104, 76, 52,173,142, 48,187,224,154, 26, +107, 45,181,115,184,186,166,104,217,238,193, 71, 13, 58,106, 41,203, 10,117, 21,121, 49,235,115,222,159,125,254, 37,126,246,213, + 87,184,113,253, 42,130,199,151,231,168, 42,175, 61,125,153, 42, 60,203,201,114,205,217,178,228,248,188,228,246,157, 7, 28,125, +114, 11, 57,251,132, 69, 22, 48,179, 5,189,152, 88,162, 84, 78, 0,107,101, 75,246,163,110, 79, 64,100, 99,255,180,169, 72,153, +240,111, 46, 42,232,181, 23,238,221,189,195, 47,188,117,141, 95,253,251,191,198,226,197, 47,113,247,227,219, 44,143, 62,230,238, +189, 6,239, 0,141,170,130,104, 87, 26,199,180,224,163,209, 88,199,129, 9,170,248,224,169, 42,135,113, 21,100,224,189, 5,231, +200,140,167,200, 50,116,150, 83,179,160, 44,215,248, 80, 69, 9, 34, 68,243,176, 6, 94,206, 28,213, 19, 37,239,185,151,145,119, + 27,108,243, 45, 52,147,164,176,235, 35, 87,200,116,240,185,240, 27,116,188,190,219, 34, 0,248,131, 99,190,239, 24,221,179,110, +190, 54, 26, 89,239, 62,225,243,145, 6,157,104,196,225,189, 12,182,157,218, 89,168,246, 48,109, 11,179,183, 65, 29,241,112,139, + 14, 73,142, 46,167,155, 62, 62,213, 76,160,226, 62, 12, 38, 57, 76,124, 79,204,136,228,148,160,150,218, 10,153,209, 65,131, 45, + 5,138,112,199,197,253,189,233,166,248,148, 25,221,190,126, 53,157, 37,105, 87,156,219, 85, 66,219,188,168, 12,210, 92, 15,189, +201,204,152, 85, 61, 45, 24,244, 38, 53, 38,169, 56,209, 78,118,136, 75, 29, 1, 59, 58, 28,234,146, 72,177,252,174,178, 36,195, + 53, 86, 50,236,108,134,241,101,107,118, 49,188, 22,219, 95,183, 97, 79, 27,116, 60, 73,122, 29, 28,190, 3,219, 2, 13, 90,246, + 64,171,161, 79,187,127, 77, 63, 47,141, 49,148,217, 86, 33,218,152,106,197,100, 21, 18,167,216,196,113, 42, 49, 55,234,206,150, +160,147, 7,238,251,126, 72, 82, 6,248,246, 60,243,241,158, 99,172,187,215,150,121,255,105,118, 91,189,148, 78, 55,134,244,209, +249, 32,147, 3,101, 87, 34, 84,208,208, 55, 11,222,251,150,233,182, 3,245,209,152, 19, 46,169,135,172,164,235, 32,153, 4,190, + 48,102, 92,244, 65, 46, 91, 90,171,254,217,143,247,250,124, 86,224, 27, 71,181, 46, 17,161,213, 95,135, 33,161,203, 8,198, 26, +178,118,223, 43, 38,238,215,231,179, 25, 87,175, 92, 69, 3,156,159, 47,113, 46,186,202, 73, 27, 55,154,137,178, 92, 46,249,240, +195,155,241,217, 55, 6,231, 3, 62, 56,242,118,215,142, 70,131,150, 39,174, 62,198,211, 79, 63, 73,192, 80,183, 94,236, 67,156, +171, 99, 86,100,172,171,134,245,122, 77,110, 13,179,162,160,172, 99,176, 75, 85, 55,228,153,193, 57,223, 55,110, 54,139,144,118, + 91,161,226,254,223, 70,107, 68,231, 60, 62, 64, 93,187,150, 56, 41, 84,181,143,187,235,186,138,114, 91,231,112,206,243,217,151, +158,228,141, 31,249, 49,214,231,167,220,253,248, 93, 78,207, 87,184,150,225, 95, 88,216,159,229,204,196,112, 88, 88, 94,120,122, +143, 31,121,254, 85,238,172, 94,225,237,155,119,249,240,221,119, 48,199, 55, 89,228, 96,138, 5,157, 33,146, 12,211,192,164, 69, +159, 46, 42, 7,131,171,205, 10, 51, 62,193,134,103, 98,236, 38, 56, 37,120,174, 43,199,209,221,187,252,249, 47, 60,193,127,251, + 15,127,141,226,249, 63,206, 7, 31,223,225,232,232, 62, 84, 43,156, 10, 85,237,176,192,124, 81,224,179,125, 92,237,241,190, 70, +218,240, 28,212,163,234, 8, 26,104,124, 91,115,212, 34,174,193,107,212,208, 27, 35,209,184, 40, 19,124,105, 8,206, 71,210,115, + 59,121, 25,160, 84,152,121,225, 53,235,104,158,130,155,205,171,200,251, 37,198,189, 3,118,129,118,177,181,250, 40, 39,198,163, + 98,224, 58,216, 57, 63,226, 79,122,120, 54,220, 15,169,228, 39, 63, 42, 83,213, 36,235, 60,221,179,118,178, 21,131, 88,193, 72, +192,132, 24, 79,234, 25, 2, 91,186,105, 55,157, 99, 7,131,144,118, 58,214, 52, 11,187,219,219, 71, 41,154,166,115, 90,146,143, +110,186, 73,177,131,138, 68, 90, 21,156, 70,227, 7, 49, 24,147, 74,193, 12,214, 68,205,102,231,246,229, 71,201,152,166,133, 60, + 59, 11,208, 78,123, 46, 91,242,131,198, 19,161,236,216,182, 76, 11,188, 36, 44,100,240, 4,111, 49, 22,108,171,155,223, 90,148, + 76,188, 86,161, 53,240,209,196,121,141, 29, 36,190,160,144, 89, 40, 68, 88, 58, 29,164,128,137,108, 76, 54,230,218,196, 61,141, + 33, 74,181, 47, 66,218, 65,231,211, 48,156,228,253, 73,178,158,209,128,181, 57,143,207,227, 1, 89,250, 16, 31, 92,198,122,230, +205,159, 66,162,217, 31,246,252, 41, 89, 75, 85, 35,217,105,182, 32, 19,165,110,154, 81, 44,234, 24,107,185,160,216,235, 4,126, +151, 71,107, 11,116,202,135,208, 79,247, 12,138,164,158,215,219,247,216, 42, 83, 46,133, 60, 4,210, 75,188, 7, 68,118, 18, 42, + 7,243, 27,217, 32,106,110,250,182,235, 36,240,101, 91, 67,161, 19, 50,228, 24, 25,114, 77,197,186,140,230, 32,179,217, 28, 31, +132,224,192,218,172, 39, 8,206,231,115,246,246,246, 57, 63, 61,233, 95,243, 98,177, 96, 54,155,177, 42, 43,208, 64, 80,143, 21, + 67,150, 23,148, 85, 77, 93, 87, 60, 56, 62,101,189,174,176,109,172,108,150, 69,238, 54, 26,240, 62,238,189,157, 15, 92,185,114, +153, 44,203,169,170, 6,231, 3, 89,187,103,214,186,193,251,208,250,204, 11,179,162,136,211,102, 93,163, 26,168,107,223, 55,148, +104, 52,181, 50, 94,162, 55,189,181, 52, 46,126,127, 44,196,129,170,174, 81,239,227,132,174, 33,174, 85, 66, 60, 71, 86,229,146, + 60,139, 94,147,181,247, 28,204, 50, 10, 35,124,243,183,190,193,114, 93,182, 1, 48,218, 26, 4,197,226, 89,206, 11,242, 98,134, +150, 13,230,180,100, 47, 23,158,218, 47,120,250,115,215,184,253,226, 13,190,253,193,171,124,244,157,111,147,157,220,100,190,200, + 32, 95,244,193, 88, 65,180,229,102, 92, 80, 96, 82, 72, 77,198,195,235, 78, 82, 55,227, 0, 36,105,115, 36,142, 78,207, 9, 77, +205,127,240,165, 55,249, 27,255,205,127,142, 60,245,211,188,255,225,109,238,220,125, 64, 88, 29, 67, 30,155,182,107, 87, 15,216, + 63, 56,100,182,216, 39,152,156,186,241,132,166,194,249, 64,237,106,150, 43,135, 59, 63, 6,127, 22,227,108,173,160,146,163,106, +113, 85,131,197,225, 76, 92, 93,170, 49,209, 11, 64, 58,203,230, 24,126, 99,140,199, 90,131,147,140, 2,248,108,161,184,231,148, + 91,254,243,204, 62, 12, 24,255, 62,100,115,180, 99, 77,235, 69, 40,196,112, 24,201, 67,166,109,233, 13,216,100, 66,110,121,248, +121,242,253, 80,222, 31,189,228,143,223, 91,214,237,210, 67,119,163,144,104, 90, 33,106,200,131,224, 45, 81,158,209,238,117, 82, + 23, 53, 77,173, 85,147,130, 78, 31,250,209,154,210,244, 82, 51, 29,178,211, 25,100,115, 61,108,143, 25, 12, 85,146,168,210,174, + 75,138, 18,182, 16, 77, 34,232,108,110,187,163,222, 68,192,170, 53, 73,232, 27,135,196,168,100,124,165,219,166, 37,137, 94, 29, + 14,200,144,210,193,152, 88,135,140, 33,225,132,137,214,101,125, 7,124,164,225, 39,135,178,108,142,224, 17,181, 72, 32, 85,217, +214, 33,166, 91,123,241, 52,235, 21, 78,162,196, 42,232, 64,132, 10, 50,121, 50, 71,187,127, 77,162, 84, 37,113, 58, 75,233,208, +195, 77, 62,221,243,143, 24,158,109, 3, 54,207,179,232,107,222, 56,234, 42,180, 18,195,135,192, 80,210,193,112,154, 0,253, 93, +138,153, 7, 59,231,250,227,151,104, 86,167, 84,181,223,142,144,235, 35, 62, 52,186,133, 86,247,168, 81,140,250,131, 53,211, 59, +201,105,146,194,217,131, 4,240,162, 95,101,182,106,203,119,209, 4,195, 40,107, 96,130, 45,238,120,125,155, 7,213,195,200,117, + 65,225,244,236, 12,231, 99, 62,185,181, 25, 33,104,148,118,185,136, 42, 88, 19,163,119,246,246, 23,228,197,140,208, 68,183,190, +131, 75, 7,228, 69, 17,119,170, 33, 54,136,222, 59,124, 85,210, 13, 26,213,122,205, 98, 86,112,255,193, 17,203,243, 37,153, 49, + 72,102, 89,174,226,190,219, 7,101,150,231, 49, 93,173,174, 35,185,206, 73,107,195, 26,240, 33, 18,217, 26, 23,152, 23, 25,179, + 89,198,114, 89, 18, 90,163,165, 24,182, 99, 34,235,221, 10,153, 26,130,181, 24, 12, 70, 34, 81,206,183, 76,251,166,118,120,231, +219,207, 33,196, 70, 36, 68,244,175,170, 34, 52, 92, 20, 57,174,253, 30, 49,134,155,119, 78,112,222, 71,131, 24, 19, 45,153,171, +198, 19, 66, 96,150, 91, 26, 53, 4, 23, 9,122, 54,179,148, 38,163, 42, 13,123,238,156,151, 14,103, 60,255,163, 79,243,157,167, + 31,231,247,190,253, 62, 71, 31,124, 7,123,126, 31,107,227,240, 34,198,160,214,210, 69, 94,181,198,197, 59,198,198,164, 45,148, +139, 11,251,112, 34,119, 22,221,194,249,217, 25,175, 60,125,153,159,253,242,159,230, 75,127,244,167,225,241, 23,185,125,231, 8, +215, 84, 92, 58, 88, 48,187,118, 64,145,207, 89,204,103,204,231,115,102, 25,152, 60, 99,237, 44,229,217, 9, 33,115,248, 0,141, + 70,130,162, 95,129, 6,139, 72, 96,145, 27,156,228,156,175, 29, 5, 21,217, 34,199,215, 51, 22,225, 12, 53, 51,202, 10, 66,149, +227,137, 13, 86,156,244, 13, 70, 35,194,236,128,194, 27,222,156, 57,120,121,198, 45,254, 16,197,205,128,117, 31,128,221, 99,240, +247,144, 29,147,123,250,160,203,206, 14,126, 52,216,233, 14, 2,206,247,181, 31,255, 1,167,245,109, 68,185,144, 24,207,160, 67, + 23, 73, 66,154, 83,141, 48,114, 45,177, 70,117,236,221,208, 21, 84,194, 8,146, 48, 45,196, 27,218,138,156,181, 73,107, 46, 73, + 1, 49,232,200, 50, 86, 38,219,211, 40,135, 10,237,122,111,176, 20, 13,125, 19, 64,111,112, 19,115,207, 91, 96, 88, 67,191, 19, + 52,109, 5,243,154,194,215,180,191, 59,146,228, 48,177,105,232,211,233,194, 4, 64, 14, 73,106,186,164,177,148, 36,211,216,184, +244, 14,147, 90,252,133,126,194, 36, 78,224,144,190,232, 76,207,206,225, 55, 77,180,232, 58,224, 40,177,243, 79,135,210,193,166, +210,176,105, 71, 19, 66,151, 64, 39, 35,158, 65,159, 71, 46, 50,209,208,203, 72,171, 79,146,100, 39,109,195,247,160,118,228, 70, + 34,195,216, 8,222,143,177, 2, 67,160,110,167, 42,147,196,205, 74,154,166, 39,131,155, 92,215,160,205, 76,160,106,189,175, 51, +107, 38, 80,150,126, 10, 18,137, 60, 18, 4, 55, 12, 53, 58, 86, 9,164,236,240, 71,248,165,221, 62,219, 24,115,225, 35,155,226, + 39,143,106, 77,153,218,183,238,218,193,119,158,254,253,253,184,235,189,107,234, 57, 72,111,250, 98,147,140,120, 70,241,174,155, +196,122,231, 3,247,239,221,141, 19,106, 75, 56,181,214,182, 58,249,200,124, 15, 33,202,235,180,105,200, 51,203,217, 42, 6,176, + 92, 62,140,238,100, 46,212, 88, 99,163,125,104,104,211, 27,213,115,118,118,202,122,189,194,135,192,186, 44, 89, 87, 53,153,137, +202,137, 14, 96, 48, 86, 88,204, 99,122, 90,221, 52,236,205, 22,100, 25,148,117,201,122,181,196,218, 61,140, 24,138,214, 52,166, +174, 98, 51, 48, 43,114,196,102, 45, 60, 31,161,221,204, 90, 52, 68, 93,142, 15, 13,214,128,177,150,178,170,122,167, 57, 85,197, +133,208,115,108,140, 49,253, 26, 36,207,103,209,248, 74, 97, 54,179,216,204,208,180,132,190,168,212, 49,184,118,175, 60,155, 21, + 44, 22, 11,138,162,136, 50, 73, 98, 17, 52,198, 98,173, 64,150,113,123, 45,132,163, 79,248,204,229,130, 87,127,246, 77,190,241, +206,115,220,126,231,187,212,235,115,170,114,133,171, 75,124, 93, 66,104,144, 80, 97,165, 37,116,218, 40,229,139,146, 37,217,104, +212,165,133,144, 31, 70,142, 51,173,140,247,193,209, 25, 63,241,194,156, 95,252,139,127,142,103,127,228,103, 48,243,171, 28,159, +172,153,201,154,253,253, 43, 44,230,115, 22,251,251,160, 22, 19, 74, 86, 85,201,250,236, 12, 35, 21,107, 39, 56,175,212, 62, 42, + 3,150,149,163, 62, 95, 65,168, 48,173, 91,158,177, 74,237,148,140, 6, 83,196,213, 77,109, 61, 33, 43,208,178,193,138, 39,179, + 57, 4,219, 54,255, 54, 18,187,131,130, 58,172, 64,109, 45, 11, 49,188, 57,171,104, 94, 90,112,199,253, 24,139,143, 42,196,223, + 1,187, 72, 38,236,113,147, 67,127,150,201, 40,225,243,209,136,114,187,255,226,251, 46,209,223,207,180, 62, 58,227, 58,162, 92, +151,140,214, 21, 61,213, 54,195,219,128,213,129, 68,214, 94, 11,237,146, 40,131,246, 59, 50,172, 33,215,128,241, 74, 21, 18,119, +186,214,170,206,183,211,118,167,153,214, 86,163, 76,103, 72, 19, 35,199, 18, 89, 92, 27,142, 32,177, 65,232,145,132,196,167,189, + 59,112, 98, 74, 90,123, 56,105, 18, 42,170,131, 47,184,136, 38,102, 37,154,184,231,233, 24,162,157,132,153,144, 16, 2, 59, 68, +160,157,237, 55,108, 87, 83,234, 89,135,120, 72, 58, 53,165,200,133,200,214,132,177,241,103,165, 61,119, 37, 36,112,167, 72,151, + 15, 63,200,219,198,129, 49, 50, 90, 33,164,197,189, 11, 82, 25,119,157, 67,134,246,160,253,211, 30, 98,157,238,134,210, 6, 64, + 67, 0,231, 32,179, 56, 31,179,177, 37, 57, 20, 2,138, 51, 25,207, 28,238,199, 88,206, 58,196,125,103,138, 92, 36,140,244,190, + 40,168,227,147,187,247, 17, 49,125, 65,255,193,152, 39, 99,104,255, 97,187, 48,217, 72,143,250,244,211,121, 8,225, 81, 94, 78, +175,255,221,150,217,190, 27,136, 31,118,229,122,193,151, 14, 74,140, 45, 19,119, 79,170, 27,208,147,254, 30, 78,154,152,109,166, + 28,221,231,159,229, 57, 31,127,252, 17,235,213, 18,105, 73, 92,153,141,187,204, 90,155, 88, 40, 51,195,186, 92,115,231,206, 29, +170, 50,154,198, 92,186,116,137,189,253,125,202, 58,194,226, 65,163,123, 90,150, 89,214,101, 67, 85,149,220,189,119,143,166,174, + 89,151,107,188,139,114,167,202,121,188,143,230, 64,198,152, 56,253, 26,161,169,107,154,186,161, 4,140,177,172,235,154,187,119, +239,114,245,177, 39,227,217,225, 26,108,158,199,162,153,105, 47,195,205, 51, 11, 89, 52,148,105,154,134,170,174, 41,203,154,213, +106,133,171,171,152, 65,238, 35,255, 38,179,150,198, 57, 52,248,150, 85,110,218,243,210,145,231, 25, 98, 10, 50,155,181,103,103, + 92,101,212, 85, 73,181, 94,163,206, 97,140,193,100, 57,153,201,163,165,176, 49,145, 76,214,241, 12,124, 76,164,116, 30,202,178, +110, 13,138, 12,183,151, 48,175, 62,230,179,135, 25, 47,189,245, 57,170, 38, 80, 54,142,229,170, 98,189, 90,177, 90,151,172, 86, + 43,214,235, 21,213,122, 69, 93,173, 8,117,137,248, 26,163,174, 71, 28,165,151, 43,106, 66,154,149,150,220,170, 35, 2, 36, 45, +135,196, 5,229,141,231,175,243,199,190,244, 69,102, 7, 55,152,107, 13,133,112,226, 10, 50,239,216,195,147,169,227,236,244,132, +251, 71, 75,202,211, 59, 84,206,177, 46, 61,198,149,100, 54, 90,212,250, 16,155, 33,231,162,199, 62, 54, 39, 52,113,125, 81,171, +193, 87, 53,115,171,212, 88,154, 26, 50, 28,165, 49,100, 89, 70, 81,228,212,101, 5, 46, 18,138, 3, 6,117,190, 37, 35,217, 86, +157, 5,165, 10,123, 94,120,115, 81,241,155, 47,205, 57,109,254, 16,179, 79,190, 6,242,255,243,246,238,191,146,101, 89,122,208, +183,246,222,231, 68,196,125,100,102,101,101,102, 85,117, 79,215,208,211, 51, 30, 11,195, 96, 15,216, 98, 52, 3, 50,200,230,241, + 3, 70,178,144, 64,200, 66,194, 96,144, 5, 2, 1, 22,195,152,193,255, 25,191, 34, 64, 2,201, 24, 51, 51,253,154,174,119, 85, + 86, 86,222,155,247,222,136, 56,231,236,189,215,226,135,181,246, 62,251, 68,196,205,204,234, 46,200,209,116,119,213,205,123,111, +196,137,115,246, 90,235, 91,223,227, 21,200,109, 26,148,180,153,220, 91, 1,208, 91,112,214,239,255, 39,249,165, 54,244,223, 1, + 39,238,196, 63,168,236, 17,222,180,227,212,116, 47,165, 48, 57,155,130,133, 5,177,164,174, 9,213,135, 24,146, 33,172, 4,173, +146,231,157,101,193, 49,174, 19,118,217, 5,150, 40,204,140, 89,147,206, 40,150,178, 52,131,190,101,223, 79,141,238, 89,154, 98, + 68,141, 71,123, 51,121,112,179, 67,117,152,253,227, 5, 88,248,160, 83, 69, 33,184, 6,115, 21,178, 25,183, 1, 42,199,200,116, +147,129,174, 5, 86,121, 4, 14,232, 58,172, 48, 33, 69, 84,239,248, 67,232, 88,154,107,113,175, 66,180,102,251,210, 98, 69,209, + 22,101,111,141, 79,203, 98,149,234,219,175, 71,116,178, 9,190,200, 0,105,241,119,151,183, 33, 47,216,159, 88, 76,113,142, 14, +166,127,123, 26,114,154, 96, 74,164,133,141,171,121,125,160,243, 30, 23, 46,227, 43,206, 11,132, 0,149,219,112,168,129,214,247, + 28,130,183,216,221,111,107, 2,121, 98,113,223, 70,151,190,149,126,181, 37,150, 53,236, 62,249, 22, 13,183,156,102,200,201, 1, + 96,179,200, 93,193,253, 44,248, 67,179,161,183, 63, 52,102, 40, 29, 39, 39,124, 35,140, 90, 68,236, 36,175,193,102,121,217,140, +172,215, 27,124,254,217, 23,184,190,122, 9,215,159, 35,198, 9,155,179,115, 53,116, 33, 66, 22, 70,240,192,221,237, 29,118,251, + 1,222, 76, 92, 30, 62,124,160,201,101, 57, 99,181,222,152, 76, 77, 97,237, 85,223, 99,183,221, 33,197,172, 41, 94,153,225,201, +205, 44, 17, 1, 98, 78, 8,166,221,223, 58,194,205,171, 27,156, 63,184, 68,244, 30, 46,105,136,212, 55, 87,175,224,124,103,170, + 12,160,247, 4,231, 3,242,160,123,254, 41, 70,155,218, 3,188, 15,216,239, 71,107,196, 8, 57, 49,118,195, 4,130, 54, 26, 49, +206,166, 51,101, 48,144,172, 68, 57,117,188,115,232,251, 30,222,244,234,165,112, 80, 10, 90, 28, 99,134,163,140, 21, 17,216,107, +232, 12, 81, 82, 50, 30, 37,120, 4, 68, 97,116, 1,200, 76,136, 41, 98,213, 5,172,250, 0, 16,225, 54, 10,124,140,240, 46,162, +119, 14,155,206,225,209,163, 0,121,248, 0, 66,143, 32,174, 67, 98,194, 62,102,220,222,237,176,221,237,112,119,183,197,126,187, + 5,241,160, 65, 55, 8,136, 57,235,202,148, 1,230,136, 32, 25, 93, 23, 84, 3,238,156, 54,212, 94, 51, 50,200,121,188,119,222, +227, 55, 63,252, 30,198, 16,112,119,243, 10,159,125,254, 28,239,222, 94,227,209,147,247, 17,251,135,120,126,189,195,112,247, 5, +246,227, 14,219,145,225, 73,224, 67,143, 72, 30,226, 54, 26,241, 58, 90, 66,161,168,227, 29, 35, 32,143, 19, 58,202,144,174,215, +212, 59, 82,133,130, 99,192, 59, 65, 38,135,149,203, 72,157,190,150,222, 3,169, 95,129,179,146,230,148,201,172,147,122,217,253, + 11, 11,118, 34,120, 8,224, 95,120, 48,224,255,248,209, 35, 12,211,239,160,191,250,223, 33, 20, 1,244, 32,200,193, 10,148, 22, +182,199,175,141, 82, 61, 69, 14,250,214, 97, 49,223,241, 31,186, 15,126,103,155,196,205, 32,164, 45, 8,197,157, 37, 86, 43,202, +217, 11,220,131, 64,164,147, 25,101,104,106,217,162,179,183,112,134,134,100,224,154,201,130, 33, 77, 64,140, 84,153, 28, 85,249, +141,212,105,180, 76,199,128,148,161,222,186, 76,198,210, 16,133,142, 72,158, 5, 17,160, 3,214,167,212,125, 61,205, 99, 44,181, +241,165,243, 1, 47,205, 84,212, 58,205, 81, 51,177, 23, 69, 0, 56,206,209,139,181,185,105, 13, 70,232, 4,193,238, 20,134, 35, +203,233,222,126, 87,155, 42,220,122, 49, 11, 81, 99,102, 66, 71,211, 95, 45, 38,246,154,164, 97, 67,183,166,169,197,101,175, 32, + 35,157,247,232, 8, 24, 83, 90,238,236,140, 7,224, 64,198,166,135,105,170, 9,153,147, 18,150, 66, 7,226, 9, 63,185, 26, 0, + 55,135,237,204,145,179, 7,161,174, 53, 60,166, 97,190,159, 64, 68,222,200, 91, 59, 52,232,255, 86, 89,198, 77, 4, 44, 73,211, + 96,125,139, 4,167, 74,236,121,131, 41, 5,181,104, 9, 14,248, 11,167,122,240, 37, 77,147,238, 67, 30, 90, 95, 1,105,115,173, +233, 36, 92, 95,156,220, 94,119,178,205, 94, 15,115,231,182,234,123, 60,127,241, 13, 94, 62,255, 10,223,255,209, 63,139,237,205, + 75,156, 95, 92, 54, 77,157, 96, 24, 6,108,239,238,224,189, 87, 50, 92,240, 56, 63, 59, 55, 77,122,211,248, 91,193,116, 68,184, +187,187, 67,140, 58, 41,167,148,144,115, 52,195, 19,123,230,137, 16,153, 65,102, 35,187,221,222, 89,156,114,174,171,189,196,192, +205,221, 22, 4,134,239,188, 77,248, 10,197, 79, 49,193,123,157, 82,119,251, 17,132, 81, 73,158, 4,228,156, 48, 78,163, 22, 26, + 80,117,183, 75, 57,215, 51,128, 89,209,130,190,239,193, 44,240, 78,229,125,227, 56, 33,166,201,252,227, 29, 98,140,245,186,103, + 86,242,231,202, 7,253, 28,106,129,208,252,114,129, 50,241, 21,202,247,170,217, 78, 9, 32,134, 55, 68,130, 65, 72,226, 48, 37, + 69, 54,132, 51,130, 35, 4,159,176,242, 14,189, 19, 92, 94, 18,240,240, 18,228,222, 65, 68,128,228,140, 62,232,206,126,179,238, +176,217,172,145,169,215,223,149, 19,216, 82,222, 66,231, 53, 23,157,213,114,247,172, 15,160,110,131,207,159,191, 2,189,122, 1, +225, 53,194,213,136, 39,151, 43, 60,190,217, 97,242,103, 24,167,164, 28, 38, 31, 16,188,250,209, 59, 36,116,222,129,187, 21, 56, + 7,164, 20,145,137, 1,241,202,118,143, 9, 78, 50,196, 17,166,105, 0,113, 66,232, 3,132, 60,114, 78,144, 44,112,200, 26,197, + 96,235,160,206, 59,112,214,251, 63,120, 32,146,186,207, 81,206,128, 23, 80, 22, 56,138, 96,239, 49,100,135,103,196,248,237, 71, + 3,254,175, 15,159, 33,239,127,203, 52,236, 89,145, 86,153, 7,198, 26, 5, 11,117,199,123,237, 9,115,127, 22,210, 91, 65,231, +242,182,213,249,219, 66,240,116,130, 40,231,138,113,193,114,233, 0, 39,197, 71, 93, 42,100, 12,210,224,138, 74,148,106,148, 15, +185,129,172, 97,123, 36, 49,163, 24, 54, 77, 41, 31,240,178,203, 33,145, 48, 23,215,162,201, 21,193,129,220, 74, 11,191, 91,176, +237,237,176,230, 6,146, 39,170, 43,131,146,229, 78, 7,193, 92, 77, 54, 28, 28, 45,127,166,216,174,223,217,239,100, 57,177,115, + 45, 93, 30,150,114, 60, 64,179,128,199,186,171,190,135,194,238,100,118, 21,195,125,150,167, 82,155, 44,136,128,251,115, 92,116, +140,105,183, 71, 52,116,162, 28,130,108,172,251,217,208,100,126,141,174, 33,239,201,129, 12,207, 45, 98, 88,155, 32,143,166,200, +122,114,120,118,209, 35,142, 3,190,216,142,224,162,221, 55,135,192,140, 89, 47,159, 69,192,146, 64,221, 6,143, 31,157, 99,184, +187,194,148,116,247,120, 90, 91,126, 28,151,202,204,175, 39,218,189,237,238,106,233,103,249,246,227,126, 81, 7,212,189,255,236, +157,240,182,127,202, 62,189,162, 64,135, 41,168,180,168,183,139, 29,247,253,253,137,180,106,254,134, 98, 40,111,192,230,228,136, + 25,127,114,252, 40,207, 93,201, 10,144, 19,198,151,141,159, 60, 65,157,214,174, 94,222,225,163,143,126,129,191,248, 59,127, 13, + 95,125,241, 9,222,121, 39,162,235,123, 76,211, 8,231, 8, 55,183, 91, 76,113,196,122,181,198,221,246, 14, 15, 30, 92, 96,181, + 94,129,200, 33,231,132, 20, 39,205, 7, 32,117,158,187,219,222,225,230,246, 6, 49, 70,236,119, 3, 82, 76,200,204,245,172,168, +164, 82,206,232,188, 6, 67, 77,211,132, 20, 19,124,175, 18,203,100,112,247, 48,142,136,211,168,177,164, 89,247,238, 2, 45,194, + 32, 53,240, 73, 41,215, 41,220,123, 13,142,201, 22,132, 51,197,212,220, 74, 42,205, 83,228, 45, 96,189,238, 1, 43, 68, 41,101, +236,111,239, 16, 83, 86, 85, 8, 37,132,160, 60,129, 16,188, 34, 88, 94,229,114,220,114,143,156, 18,232,196, 72,127, 57,171, 70, +190, 36,161, 49, 52,215,221,153,113,149,119, 4, 49, 82,111,215, 5, 48, 58, 37, 4, 66, 16, 19, 91,144, 78,182,162, 24,235,253, +123,183, 23,120,201, 24, 61, 97,235, 12,117,115, 4,182,108,130,205,170, 3,113,143,172, 33, 25, 88,109, 58,132,208, 99, 31, 71, +172, 55, 30, 28, 30, 99,114,128,248,128, 59, 89, 35,221,100,132,176, 67,191,234,177, 10, 30, 18, 60, 98, 4, 98,142, 32, 97,244, +129, 65, 62,129, 77, 99,223,121,175, 90,127, 78, 74, 31,118, 14, 67, 18, 72,206, 88, 27, 65,125,202, 73,109,145, 69,141,104,124, +177, 23,102,193,148,163, 53, 31, 70, 24,117,154,152,199, 78, 27, 69, 18,134, 15, 58, 80, 36, 6,118, 81,240, 1, 39, 92, 61, 78, +248,232,123, 31,194,253,226, 26,196,159, 42, 12, 95, 41, 54,135,238,159,210,144,177, 79, 67,242,242,198, 10,251,255,243,164,126, + 31, 81, 14, 53,170,148, 42,107, 91,137, 22,179,134,124,214,208,210,129, 20,103,214,170,187,146,239, 92, 66, 85,138,197, 34,153, + 71, 48, 73,163,145,214, 31,192,150, 31, 94,131, 51,106,105,155,135,103,215, 22,248,131,220,233,202,209,108,248, 0,124,116,100, + 73,221,210,159,250,152,196,118,214,109,137, 41,144,221,161,136,170, 58,180, 1,139,255,141,102,125, 32, 70, 20,212,181, 64,163, + 83, 46, 90, 97, 43,180, 76,210,212,154,211,166,133, 4,153,163,103,243, 4,113, 38, 49,108,154, 20, 62, 40, 88,212, 32, 20,212, +184,127,201,129,225,236,161,134,189, 4,205,176,101,142,151, 23,151, 57, 97, 59, 0,158, 91, 8, 87, 63,171, 36, 14,239, 92,156, +161,203, 19, 94,236, 35, 58, 71, 24, 77, 32,127,185, 9, 72, 59,213,147,122,194, 66,247, 76,181,168, 45,139, 18,125,139,123,120, + 41,221,122,205, 19, 68,173,247,254,235,205, 40,228,224,179,146, 70, 10,147, 45, 49,235,173, 94,163, 28, 72,199, 14,220, 62,244, + 58,231,202, 75, 81,167, 56,247,134, 93, 63, 45,209, 10, 17,224, 62,165, 65,235, 9, 76,203, 38,109,185,251,199,210,135, 64, 14, +137,130,114,239,251,154,159, 63,143,143,126,241, 11, 48,143, 32,215,225,250,234, 37,222,121,242, 20, 62,116,136,211,136,105,156, + 16, 83, 6, 73,130,247, 30, 23,231, 23, 88,175,215, 72,137, 33,228, 48,140, 3,250,190, 67,215,173, 1,104,108,232,106,125,142, +235,171, 43,149,145,169,111,171, 18,238, 82,134,247,154, 65, 14, 40, 10,152,153,113,125, 29,113,125,125,133,119,251, 77, 13,179, +129, 83, 98, 92, 78,169,114,109, 18,171,185,140,239, 58, 76, 49,106,250,153,233,210, 37,171, 15,252,206,166,123, 54, 5, 77, 65, + 9,130,247,246, 26,146, 77,199, 14, 73,148,172, 58, 77, 19,198,105, 66, 23, 60, 28,116,247,158,134,168,206,120, 78,167,100, 71, +135, 94,140,234, 47,159, 82,130,239, 58,136,176,126,191,115,224, 44,112,222,166,120, 82, 66, 96,102, 64, 18,131, 88,109,104, 67, +154,208,245, 61, 28,133,234,135,160, 13,129,254,115, 76, 25,222, 9,124, 8,250,236, 58,189, 91, 70, 1, 98, 98,196, 49, 66,114, +194,186, 39, 12,217, 1,219, 59, 4, 79, 88,247, 29, 4, 1, 55,187, 17,121, 28,112,222,123,208,249, 10,193,123, 92,108, 86, 88, +159,159, 99,226, 0,146, 8,136, 54, 62, 18,213, 57,142, 68, 37,207, 83, 22,120, 30,224,131,174, 60, 84,249,199, 74, 26,244,132, + 40,134,242,146,104,209, 30, 21,117, 32, 7, 68, 4,112,154, 48,229,132, 56, 14,122,253, 21, 6, 84,185, 36, 3,194,172, 81,179, +142, 64,226,170,236,174,172, 71, 71, 56,132,200,248,161, 79,184,121,127,141,171,219, 31, 97,245,245, 43,128,118, 0,173,148,199, + 67,167,247,210,212,236, 89,171,195,104, 51,142,138,224,180,231,246,193,185, 34,223,186,176,255, 18,211,250, 61,108,189,192,165, +251,177, 66, 86,108, 46,133,200,252,207,219, 32, 19, 89, 64,113, 37,169, 43, 31,139,110, 17,234, 6, 67,108,242, 47, 7,186,202, +219, 50, 73, 3,105, 23,230,253,204,134,119,102, 30, 83,138,107, 53,102, 41,135,142, 65,245,115,167,197, 54, 25,187,133,142,182, +157, 60,185,249,125,212,216,111,230,123, 36, 59,165, 99, 19,154, 93,244,168,105, 6,138, 30, 31,142,102,190,177,180,191,179, 25, +215,105, 54,132, 88,233,162, 31,187,198,224,164,232,241,107,246,119,153,134,203,116,148, 35,182, 73,185, 12,238,192,242,182,133, +170,185, 65, 32,244, 71,243,145,162,187, 68,112, 22, 93,251,236, 0,183,244, 70,119,102, 77,250,114, 24,171,132,177,222,216,222, + 99,179, 62,195, 59, 93,198,213,152,144, 1,172,137,208,133,128, 56,237,241,233,103, 91,144,247, 8,158,170, 85,172,216,135,233, +137, 14,100,130, 50,199,126, 10,142,138, 85,187,135, 47, 44,127,221,185,115,109, 68,239,109, 1, 78, 25,197,223,183, 54, 94, 72, + 51, 27,233,162, 49,100,153, 85,126,244, 38,247,183,194,126,111,157,221,150,127,135, 17,186,222, 14,109, 66,215,117,184,187,189, + 1, 14, 3, 51, 14,214, 45,135, 12,131,183,114,212, 59,244,131,111, 20, 45,199,139,126, 57, 90,139,220, 47,129,179,231,188, 95, +225,179,207, 62,199,221,237, 13,206,207,207,112,117,245, 18, 49, 69, 60,121,242,126, 67,222,116,216,238,110,209,119, 29, 54,155, +141,230,158, 39,133,149, 41,120,189, 14,222, 35,120,135, 24, 7,101, 53, 91, 17,157,166, 9, 49,170,151,185,247, 14,227, 56, 96, +138, 81,117,202, 57,129,200, 97,216, 39,188,186,126,133,135,143,159,192, 21,246,183,192,238, 15, 45, 96, 41, 39,245,223, 7, 48, + 24, 41, 45, 4,133,141, 57,103,220, 13, 3, 94, 94, 93, 99,154, 6,115, 3,156,155,226, 44, 2, 98, 70,202, 90, 44,201,147,106, +214,133, 48, 77, 9,227,160,141,137,238,118,245,148,152,178, 97,127, 44, 32, 18, 4,215, 89,246,187,194,239,206,246,214,217,200, +166,222, 7, 51,223, 81,185, 90, 49,132,201, 57,107, 99, 82, 94, 77,210,231,121,138, 12, 55, 70,221,231,119, 1,112, 65, 9,239, + 54,145,172,130, 3,204, 63,191,239, 60,146, 56, 80,142,250,140, 57,192,247, 1, 64, 48,164, 15, 96,214, 79, 62,187, 30, 47,110, + 19,166,184,135, 23, 70, 23, 8,222,143,184, 88,123, 12,114,166, 43, 5,243, 4, 73, 65, 97,115, 50, 31,126, 7, 49, 2, 32, 48, +230, 9, 97, 18,100, 10,112,204,232,123,135,236, 86,144,172, 77,150, 14, 96,222,228,184,170,148, 16, 2,178,100, 36, 34,196, 36, +112,204, 32,239,145,216, 1,105, 2,145, 32,137, 7, 39,229, 40, 80,112, 96,246, 70,182,149,138,244,101,139,221,221, 8,240, 27, +235, 17,255,228,251,151, 72,187, 31, 33,236,254,239, 10,195, 47,140,201,234,211,229, 48, 59,112, 74, 67,168,251,118, 75,244, 67, + 30,208,255,183,132,185,227,159, 30, 52, 83,184,120,160,183, 44, 39,131,162, 85, 68, 48,243,191,139,101,171,237, 13,125, 61,122, + 74,128, 69,145,161,205,233, 96,206,116,201,177, 56,183, 53,135,109, 57, 35,184,248,146,211,156, 4,110, 28,252, 10, 29,207, 94, +217, 5,158,158,101,101,153, 58,245,129,207, 12,231,128, 78,227,161,234,190,190, 64, 43,229, 67,227, 50,121, 46,252,206, 77, 47, + 79, 51, 83, 84,154, 29,166,190,143, 37,146, 80, 30, 92,161, 99,197, 99,185,222,188, 48,111, 97,140, 25,166,183,167, 37,201,237, +112,162,196,220, 56,149, 8, 74, 52, 36,183, 83,214,163, 34,154, 30,182,144,144,181, 26,123,106, 89,244,179, 31, 58, 9, 0,103, +106,134, 98,113, 90,154, 32, 57,140,145, 37, 16, 11,120,218,225, 23,187,136,200, 14, 43, 15,140, 6,157, 19, 17,224,252, 50,120, +166, 97,133, 37, 41,225, 47, 56, 8, 42,145, 69,241,160,166,249, 42, 36, 55, 2,208,119, 1, 62, 16,132, 29,166, 41,213,194,190, +136, 49,165,166,101,126,141, 56,119,201,103,107, 61,177,181,164,167,204,184, 92,175,241,187,191,241, 3,252,236,243, 47,241,243, +175,175,176,233,187, 95,142,253,110,183,238, 20, 39,124,240,228, 25, 30, 61,184,192,167,159,126,138,206,187,165,212,232, 4,114, + 33, 7,175,207, 78,210, 58,177,159,162,212, 45, 28, 69, 10, 92,127, 64,248,163,163,133, 84,129, 25, 79, 19, 3,231,207, 67,191, +119,189, 94,227,171,175,190,194,171,171,111,112,241,232, 25,136, 28,190,121,121,133, 56, 77,120,240,240, 49,200,121,156, 93, 92, +160, 95, 91,118,247,229, 3,157, 30, 59,133,150, 87,235,141,122, 45,228,132,171,171,107,124,252,201,199,184,185,185, 65, 23, 66, +125, 70,245,160, 86, 54,166,134,170, 56,228,100, 9,112,193, 97, 24, 39,220,221,222,234, 32, 80,226, 91, 83,174, 4, 79, 22, 32, +166,164,210, 58,102, 76, 83,196,170,247, 8, 33,224,250,246, 22,211, 56, 97,138, 17, 57, 43, 2,144, 51,207,142,128,128, 73,243, +116, 66,244,228, 0, 71,216, 15, 35,192,192, 48,105,177, 33,231, 20,254,182, 34,236, 64,166, 99, 87,226,158,230,194,107, 86, 59, +145,102,147, 59, 86, 15,121,182, 80, 24,102,221,157,107, 80,140,106,236,153, 51,156,173, 38,156,101,154, 67,204,165, 51, 51,130, +153,230, 16, 71,136, 35,164,148,225, 29,193,245,125,149, 12, 79, 49,131, 89,117,222, 36, 25,253,170, 7,195, 3,156, 64,150, 79, +208,145,224,108,179,130,116,107,196,253, 30,193, 19,128,206,172,126, 9, 99,118, 72, 35, 67,134, 65,207,124,231,224, 36, 99,181, +242,232,186, 53, 50,121, 56, 97,184,224, 53, 38,214, 72,196, 68, 17,174, 11,216, 77, 14,156,110, 32,164, 1, 45,171, 14,128,119, +144, 76,240,196,136, 0,226,126, 2,241,136,148, 5,148,148,201,229,145,193, 14, 96, 9, 64, 30, 21,194,103, 70,240, 86, 33,148, +108,161,164,224,156, 33, 57,219,189,239, 48,102,224,169, 99,124,255,209,132, 63,127,246, 62,252, 71, 95,131,248, 51,192,109,106, +102, 69,211,193, 87,101, 79, 13, 22, 43,134, 92,243, 67,113,210, 2,251,190,153,155,126,149, 90,253, 54,211,250,209, 51,106, 41, +109,222, 43,227, 16, 44,200,162, 55,141,199, 44, 29, 19, 97, 35,155,185, 2, 8, 67, 36,171, 33, 13, 60,146, 39,147,148, 21,120, +218,129,156, 84, 54,122,221,223,214, 2,221, 64,195, 92,228, 90,109,124,165,185,158,149,125,109, 93,190,179,237,145,231,213, 0, +140, 80, 7,206, 64,255, 3,184,239,247,248,193,244, 83,108,159, 11,174, 69,137,121, 1,179,229, 40,159,112, 57, 19, 89,146,161, + 0,245,171,159,153,222, 12,225, 57,187,154,218,176,154, 69,241,150,197,134,184, 53,245, 56,164,132,101,161, 99,151,181, 83,148, +202, 74, 90,155, 27, 39,162, 89,167, 47, 75,178,186, 66, 92,225, 12,171, 14, 72,227,222,144, 23,106,108,125, 79, 64,169,198, 98, +103,114,240, 78, 59,112, 33,157, 16, 88,102,206,192,209,171, 19,198,126,210,207,187,115, 51, 89,174, 52, 9,143,214, 29,114,206, +184,137,169,126,182,179, 7, 74,145,226,201,107,225,235, 2, 93,207, 27, 6,133,171,157,193, 16, 26,137, 9,112, 90,174, 66,138, +164, 17, 36,245,202,241, 61, 15,198,236,188,214,154,238, 96,177,210,185, 92,117,120,188, 9,248,153,228,183,122, 84,219,157,122, +235,215, 95,126,108,215,245,184,125,117,133,225,238, 21,246,163, 58,178,221, 23, 18,211,150,221, 83,156, 4, 58,130,202, 15,109, + 68, 63, 12, 52,177, 0, 0, 32, 0, 73, 68, 65, 84,151, 16,197,241, 30,126, 89,232,219,200,158,215, 18, 3,109, 61,177, 94,245, +248,250,197, 11,124,250,209, 47,240, 87, 63,252, 77,124,243,205,215, 8, 97,133,219,237,128, 7,143, 28,126,248, 27, 63,194,126, +191, 3, 4,232,215,107,228, 20,177,223,222, 97,183,223, 33,167,136, 24, 7, 12,195,128,187,187, 59,220,220,110, 49,216,181,216, +238,246, 74,178,202, 42, 43, 75, 41, 35,101, 37,158,229,148, 45,132, 69, 37,101, 49,101, 92, 93, 93, 97,123,119,139,205,249, 67, +184,224,205, 81, 78,155, 0, 1, 35,197, 50,241, 10,114, 78,184,187, 27,145,179, 22,122,103,172,245,113,140,106, 48, 83, 80, 22, +219,179, 67, 8, 49,235,247, 22,130, 29, 39, 13,138, 73,156,112,182, 89,219,148,152,213,173,142, 21,133,200,162, 7, 44,145, 83, +135,196, 78, 25,230, 53, 55,126,102, 34,105, 38,188,179,113, 70, 8,142, 20,138, 15,193, 89, 49, 22, 67, 16,184,162, 93,112, 78, +249, 2, 32,228,100,161, 40, 68,112,125, 0,231,164, 4,187, 16, 48, 37,134,128, 17,186, 0,208,170,174, 35, 88, 28, 28,171,100, +111,181, 10,232,214, 27,236, 71, 86,253,184, 91,169,148, 47, 16,186,190,179,148,180,217,208,104,202,162, 10, 5, 36, 36,100, 76, + 41, 99,237, 51, 2,173,213,239,160,235,144,132, 16,144, 17, 25,184,219,143,232,120, 68,232, 2,216, 7,140, 19, 33,184, 1, 9, + 14, 49, 69, 48, 50,134, 72, 24,135, 9, 46,239, 65, 93,192,152, 61,144, 34,250, 32,216, 82, 0,199, 61, 64, 9, 68,198,193,176, +152,220, 8,168,236, 81, 50,188,176, 25,143, 1,145, 0,151,128, 95, 11, 17, 47,159,173,113,115,253,235,232,175, 94, 2, 46, 2, +232,234,144,135, 3,155,248, 37,231,107, 89,252,103, 52,249,112,138,248, 46,118,232,111,192,239, 79,235, 86,143,100, 52, 65,164, + 68,136, 54, 30,240,152,245,233, 98,240,140, 50,215, 25,130, 14,222, 63,132,248, 29,124,154,144,179,154,142, 56, 19,197,177, 40, + 4, 20,156, 96,101, 50,167,212,192,216,190,217, 97,123,243, 14,231, 66,148, 43,251, 75, 89,250,150,207,220, 96, 13, 31, 17, 33, + 51,139, 41,133, 54, 0,249, 27, 96,235,177,246,132,232, 76, 71,111,122, 75,129, 51, 47,248,217,228,164,185, 63,103,136,205,184, +179,100,143, 27,224,209, 57,129,103,198,128,165,238,155, 22,147,235, 44,129,163, 67,137, 68,153,190, 23,110,165,114,154,113,221, + 76,115,237,132, 42,198,115,208, 24, 75,187,209, 56, 87, 63,114,135,185, 33,130,115, 56,239, 9,219, 73, 48,178,155,119,206,116, +168, 78,178,107, 42, 11,178, 66,245,244,102, 44,153,217, 51,148,106,196,187,133,222,117, 94,204,151,182, 41,230, 92, 21, 2,139, + 84, 62,105, 16, 14,121, 3,124,181, 88,207,232, 29, 42,194,200, 41,163, 51, 70,115,182,155,165,149, 25,210, 98,242,156,131, 77, +218,162, 88,180,206,108,113,192, 82, 82,244, 26,216,154, 0, 4,231,112,125,183,195,255,252,143,255, 12, 55, 83,194,102,213,189, +214,180,227,200,206,246, 68,126,174, 39,135, 49, 70, 12, 83,137, 85, 93,194,225, 75, 46,188, 28, 79,209,167,154, 31, 57,104,104, + 22, 75,192,215,199,205, 46,133,134,109,204,210, 27,142, 38,210, 41,118, 63,101,252,252,103, 63,199,239,255,117,135,190,235,176, + 90,173,112,113,113,137,179,205, 25,118,119,175,112,115,115,141,119, 30, 63, 1,199, 9, 47,191,121,142, 97, 80,219,208, 97, 24, + 48, 12, 59, 45, 90, 32, 56,167,211,243, 52,106, 38,121, 74, 73,167,116,182, 34,142,162,231,230,250,242, 98,210, 9,254,234,234, + 6,207,191,122,142, 15,127,248, 0, 4,130,183,181,207, 56, 77,152,166,201, 10,120,172,255,159, 51, 87,120,158, 82,214,221,127, +140, 32, 82,254, 68,201, 9, 96,139, 5, 13,193, 65, 68,201,117, 98,134, 58, 83,154,208,247, 29, 88, 8, 28,213,200, 38, 78, 9, +193, 43,135,199,145,201,196,234, 42,198,214, 97,164, 40, 68,223,105,113,234,130, 3,249,174,146, 68, 75, 40, 16,185, 18,131, 77, + 16,226,218,200, 23, 67,160,206,154,199,108,107, 5, 88,195, 43, 68,136,153,161, 17, 1, 17, 14, 64,232, 60, 86,125,135, 36, 74, + 80,212,230, 68,155,153, 46,120,149,189,177,142,114, 93, 8, 26,207, 74,140, 85,223,193,119, 43, 99,241,151,238,218,161, 3,163, + 91, 7, 0,218,116, 0, 64,100, 32, 15,123,181,251, 77,163,114, 38, 50, 67, 82, 70,176, 93, 58,239, 7,184,206, 33, 38, 2,113, +196,200,130, 52, 37,172, 93, 70,244, 61,118, 35,176, 33,163,103,231, 12, 38,103, 59,249, 4,134,211, 64, 49,175, 25, 32, 46,235, +192,201, 89,224,136,213,239,157,169,121,132, 5, 17,130, 51, 56,124,120,145,241, 39, 31, 60, 70,222,254, 0, 62,253, 4,240,161, +174,124, 91, 18,110,225,212,204, 1,156,212, 36, 41, 54,134, 96, 39,168,205,120, 61, 40,248,237,138,253,137,191, 40,111, 98,200, +149,157, 58, 42,243,155,106,132, 31,139,238,211, 59, 18,115, 22, 34, 36, 51,121,113, 2,100, 90,129,207, 24,151,110,194,230,150, +241,205, 8,164, 10,157, 55, 21,161, 30, 25,198,156, 23, 84, 93,117,185, 96,190, 72,172,100,206,229,214, 2, 69,149, 96, 85,224, +249,226, 75,222,184, 96,171, 71,176, 39,120,108,129, 23,140,159,178,131,116,133, 11,208, 16,216,236,119, 23, 19,156,214,231,154, + 76,243, 13,219,117, 41,147,155, 17,133, 43,114, 0,115, 99,115,173, 54,190,176,227,105,185,141,164,134, 29, 95,238, 20,119, 32, +148, 40, 19,162,158,181, 60,155, 63, 16, 78, 76,250,114,130,164, 52,135,129,148, 63,222,123, 32,238,112, 29,245,209,247,214,144, +149,141,147,175, 5,185,205, 77,151,122,211, 22,166,118, 57, 72,102,115,148,198,156,162,209,151,211,162, 8, 45,239,197,109, 76, +245,112,154,107,190,153, 12, 53,119,191, 0, 39, 77,110, 14,111,224,154, 19, 79,154, 51, 94,236, 59, 79,181, 71, 39,141,243,113, +236, 19, 80,211,207,228, 96,162,165, 37,169,109,159, 53, 58,183, 51,168,178, 45,170,204,162,211,220, 61,187,117, 58,100,184, 91, +239,234,141,140,122,114,119,125, 72,106,196,125, 6, 25, 56,189, 31,135, 28, 93, 3,122, 93,142,252,161,201,140,188, 97, 74, 63, +240,107,234, 87, 27,252,248, 39,127,134,221,237, 13, 30,189,243, 46, 82, 26,145, 57,225,249,215, 95, 97, 24, 6, 92, 62,120,132, +187,187, 59,188,120,241, 28,156, 25,206, 7,196, 41,218, 13,172,145,167, 34,130, 96,113, 68,227, 56,129, 57,207, 41,130, 54, 77, +138, 49,196,139,220,213,145, 7,131,209,117, 1,219,237,136,235, 23,223,224,195,127,230,135, 16,116, 72, 73, 37,110, 2, 96,154, + 34, 82,212,212,180,113, 28,244, 51, 11,190,174,206, 98,102,100, 97,179, 47, 22, 51, 65, 82,152,124,156,210, 12,137,231,140,148, +178, 66,249,227,164, 30,243, 46, 32,229, 12, 78, 25,227, 52,214, 21,158, 19,160,235,131, 21,117, 58, 50,137, 34,211, 72, 59, 43, +222, 58,120, 59,120,239,170, 18, 64,207, 30,130,239, 93,189, 87,179, 64,101, 97,142, 32,100, 69,185, 11, 21,205,116,142,106, 51, +145, 5,136,153, 65,156,213,118,119,154,224,193,232,214, 43, 76, 19,208,121, 66,223,245,128,119,216, 14, 35, 60,180, 48, 70,209, +117,192,122,189,210,157,118,142,230,160,167,150,180,137,163, 54, 18, 69,174, 39, 0, 36, 99, 20, 93, 47, 22,174, 64,105,192,122, +175,100,196, 41, 49, 2,101,136,235, 32,156, 32,228,244, 51,118, 14,123,238,224, 36,161,119, 14, 73, 60,242, 84,172,120, 73,155, + 2, 39, 24,157,199, 20, 29, 58,137,240, 65,144,176, 50, 51, 32,149, 43,178,168, 12,142, 44,136, 74,201,115,122, 15,188,239,129, +231, 79,128,175, 94,254, 0,254,203,175, 0,119, 11,193,234,232,168,144,230,127, 16,100,174,105,213, 48,140, 94, 3,127,191,206, +104,246, 87,231,201,211, 41,205,208,137,103, 58, 20,153, 24, 8,182, 63, 1, 60,207,133, 64, 68,195, 91, 68, 84, 70,224, 48,129, +166, 47, 64,215, 30,251,142,102, 90,186, 49, 31, 13, 29,135, 99,181,133,101,161, 69,127, 83, 33,240,102,183, 91, 38,205,229,110, + 95,212,219,221,190,190,240, 37,174,218,237, 18,253, 42,112, 8,224,179, 75,172,187, 29,194,126,192, 46,105,162, 28,176, 12,184, + 56,148,182, 85, 56,197,121,156,145,189, 87, 56,221, 27, 9, 35,102, 96, 44,210,176,131, 93,138, 44,179, 46,142, 15,239, 3,239, +245,197, 52, 38,205, 44, 36,199,209,162,203,226, 61, 31,110,206, 89, 49, 17,154,161,120, 44,227,101, 51, 55,233,119,116, 48,177, + 22,121, 14, 22,100,231, 58,157,102,225,185, 17, 59, 69, 85,147,251,148,221, 7, 60,128,194,174,110,111,124,107,126,220, 1,135, +235,158,141,240, 2,221,106, 13, 35, 72, 4,197,162,128, 78,124,239,162, 93,104, 41,254,237,187,177,101,186, 8,176,222,108,144, +210,132,113,140,115,212,110,129,254, 13,210,236,253,114, 2,103,102,244,171, 53, 30, 92, 94,226,250,234,165,186,233,181, 68,178, + 19,153,240,139, 34, 76,244, 86, 40,219, 82,198,246,186, 99,226,160, 33,145,102, 71, 69,111, 64, 69, 26,235,103, 28,160, 21,114, +207,223,111,129,150,139,203, 75,252,233,159,252, 41, 62,254,248,231,248, 11,191,243, 87,241,197, 39,191, 0,121,143,213,122,131, + 71,239, 60,198,126,187,197,167,159,125,166,141,165,243, 0,205,211,183,119, 14,108,254,235,195, 56, 98,191,221,131, 57,163,239, +122,140, 99,196, 52, 89,129,119,128,100, 69, 11, 57,243,236, 77,110,113,156, 62, 4,124,252,201, 39,248,224,251, 31,224,123, 63, +252, 45,147,137,101,228,152,144, 98,174,118,175, 89, 68,139,125,108, 96,118,209,162, 46,204, 74, 58, 35, 77,123,115, 84, 66,100, + 4,195, 16,145,162,194,237,211, 56,193,123,205,172, 87, 40, 94,101,109, 57,231,170, 32,241,101,226,182, 29,122, 33,193,149,102, + 57, 4,111,100, 64,221,241,247, 43,130,247, 1,157, 15, 74,112, 43,142,150, 57, 85, 4, 20, 80,137, 41,133, 0,239,181,152, 58, + 97,139,119, 38,147,216, 89,240,150,113,147,130,215, 53, 64,202,185,158,117,121, 72, 8, 62, 64,188,199, 16, 51,242, 24,141, 7, +160,175,185,239, 28, 92,183,194, 20, 19,120,156,244,119,155,121, 84,204,106, 50,147,196, 67,114, 66,240, 0,195, 85,203,106, 71, +192,148, 35,196,136,141, 68,132, 9,140,105, 74,240,121,132, 63,235, 16,217,193,179,131, 11,218,192, 56, 34,100, 7,140,145, 32, +211, 8,231,148, 68, 71,146,103,217, 52, 3, 36, 25, 81, 4, 62, 1,171,144,145,156, 64,146,174,143,153, 2, 36,235,103,235, 73, + 45,193,156, 53,141,145, 9,235,148,241,225, 58,226,234,131, 11,164, 87, 63, 64, 24,254, 31,192,203,145, 76,141, 14,158, 1, 17, +156,208,159, 52, 17,219, 39, 9,165,175, 5, 34,191, 99,121,219,113, 72, 69, 72, 22,124,160,185, 45, 14,197, 54, 56,216,242,123, + 78, 91, 99,211,131,151,131, 50, 99,218, 59,236,157, 74,150, 92,237, 36,171, 27,188,145,232, 68,165, 31,133, 93, 92,136,118, 50, +179,109, 11,171,220, 55, 83, 33, 85,250,249,204, 66,244,237, 89,213, 20, 59,199,128, 16, 3,105, 7,144, 18, 75, 28,212, 14,182, +181,253, 60, 52,229,175, 40, 0, 20,149, 40, 81,174,201, 46, 82, 0, 89, 99, 64, 7, 62,162, 88, 76,222,237,244,210,158,167, 21, +160, 33,105,138,115,235, 84, 38,139,164,180, 58,197,222, 67,180, 16, 97, 51, 97, 64, 99, 74,211, 58,202,113,163,171, 87,253, 63, + 73,241,181,159,147,217,220, 76, 72,168,126,241, 11, 4, 65,102,214, 60,209, 12,202,206,249,234,135,211,236,233,187,180, 52, 93, +181,165,144,217,254,182, 85, 8,200,169, 73,250,158, 14,181, 78,215,116,186,152,207, 69,115,254, 34,159, 48,119,107,137,128,156, + 84,151, 76, 13, 23,159,222,100,227, 75, 74,244, 74,113, 60,250,185, 68, 14,143, 30, 61,194,246,238, 14,251,253,160, 68,166,249, + 35,158, 25,251, 39, 60,163,233,164, 36, 19, 71, 61,250,177,188,229,196, 7,113,208, 53, 29, 53,151, 21,101,146,134,163,130, 35, + 78,135, 28,172, 79, 42, 33, 88,180, 72,223, 92,125,141,247, 63,120, 15, 23,239, 60,129, 39,135, 39,207, 62,208,248, 82, 8, 98, +138,120,241,226,133,238,223, 55,107,248,208, 97, 28,246,112, 94,247,204,128,158, 63, 49, 70,133,219, 49,147,227, 96,249,231, 69, +119,158,133,145,114,170,177,205, 19,103, 68,131,126,125, 8,216,222,238,241,227, 63,253, 19, 60,253,224,251, 16,242,152,166,136, + 56, 77, 22,240,210, 26,200, 8,146,186,151, 64, 64,136, 49,105, 49,176,253,247, 56, 69,196,148,140,152, 74,154, 10,153,181,104, + 79, 83,132,243, 78, 35,102,129,170, 83, 87,102,125,225,122, 64,181,248,110,142, 23,246, 65,109, 79,139, 45, 43,108,103,175, 95, +243,117, 21, 70,166, 33,207, 89, 87, 7,142,148,148, 22,188, 83, 29, 57,160, 28, 0,139,132, 45,205,100, 8, 30,112, 30,204,138, + 50, 56,175,121,239,186, 78, 99,164,236,204,156, 71,176, 94,245, 32,223, 33,197, 8, 56,216,174,158, 64, 22, 37,171, 71,128, 71, + 76, 12,176, 94,163,156,213,193,141,200, 33,145, 3,179,174, 33, 38, 22, 56, 47,138, 2,250,128,253,148, 64, 57, 89,211,226, 32, +112, 70, 84,140,112,146,193,220, 21, 49, 34,212,200, 83,144, 9, 72,160, 57, 1, 15,100, 65, 60, 25, 41, 70, 72,142,186,194, 21, + 70,231,213,149,110,204, 12,102, 93, 45,120,239,212, 50, 86,138,108,218, 82,253,156, 0, 62,128,197, 35, 50,227, 17,103, 60,123, + 48,225,211,199,239,195,127,254, 5, 32, 47, 1, 90,191, 65, 18, 51,163,140,109,158, 39, 53,161,101,135, 83,115,219,248,126, 39, +245,250, 62,134,239, 61,169, 83,129,157, 83,253,179,148, 28,113, 50, 9,134, 62, 56,201, 92,225,218, 29,103, 54,220,215, 57, 54, +216, 30,117, 42, 22, 59, 68, 65, 82, 37,113,190,250, 11,235,241,145,176,148, 45, 17,230,160, 17, 45, 64,124, 36,170,209, 4, 50, +215,184,185, 53,251,209, 82,132,242,128, 24,129,209, 57,211,133, 54,164, 6,243, 96,103, 34,235,162, 27, 19, 27,154, 67, 94,226, +129,199, 53, 31,236, 53, 91,110,130, 28,206,170,210,134,165,232,164, 47, 66, 7,107,131,153,201,221, 90,193, 82,147,204,114,228, + 46,102, 56,248, 2, 66, 61,178,172,109,140,131,154, 29,107,105, 50,170, 83, 96, 37,148,153,131,189, 52,133,188, 20,122,131,187, +229, 72,246,113, 98,140, 22,185, 23,101,168, 82,197, 54,249,112,113,255,157,214,231, 31, 18, 25, 15,239,109,126,163,140,100,102, +246,147,247, 88,247, 29,198,105, 92,120,208,180, 63,115, 24, 71,180,134, 73,139,168, 19,185,191,168,167,148,112,117,125, 13, 95, + 92,194, 26, 68,104,191,189,211,233,199,209,113,161,118,110,177,210,168,223,119, 82, 7, 78, 71, 75, 10,185,239,221, 31, 70,205, +190,129,161,223,102, 10,157, 12,187,104,254, 62,139,128, 14, 62, 96,231, 8,215,215,215,120,242,244, 93,252, 55,127,248, 15,241, +206,227,119,113,245,226, 75,172, 86, 43,172,194, 5,198, 41, 98,183,187,195,163,135,143,112,182, 57,135,243,132,245,106,131, 23, +223,188,192,203,111,190,134,247,132, 56,149,105, 92, 11,220,122,213, 99, 20,198,221,205,132,113, 24, 20, 65, 20, 27, 40,114, 42, +102,149, 74,204,172,146, 65, 66,112,138, 24,252,226,227, 47,240, 27, 31,255, 57, 62,252,139,255, 28, 4,192, 48, 78, 96, 43,188, +133, 88, 88,124, 28,156, 33,112,228,128, 64, 30, 34,108, 86,170,133,235,160,186,116, 50,105, 89,204, 17,161, 11,139,169, 59,166, + 12,206,185,105,232, 8,222,249,218, 32, 50, 11,156,167,106,115,237, 93,168, 62,239,206,235, 36,189, 89,175,117,229,201,217, 60, + 67,148,249,238, 12, 57,149,134, 44,236,188, 51, 91, 93, 93, 65,244,171, 94, 11,184,125, 56, 93,112,106,146,227,200, 32,120,155, +222,136, 0, 38,172, 87, 1,226,180,177,242,142,144,205, 69,114,181, 14, 32,175,110,123, 10,123,231,198, 96, 76, 85, 32, 61, 49, + 66,223, 97, 63,101,164, 41,194, 65, 19,249, 74,129,155,198, 8,199, 9,171, 85, 15,129,175,124,136,148,141,192,230, 59,220, 13, + 25, 36, 19,186,224,236,156, 71,125, 86,131,247,200, 80, 67,153, 82, 72, 25,132,152, 29, 36,141,232,156,128,200,155,219,165,131, + 23, 77,215,115, 78,237,100,217,206,208,196, 2, 15, 86,165, 85,102,192, 17, 70, 33,172, 39,198, 15,250, 9,223,124,112,129,233, +250, 7, 8,219,107, 72, 40,110, 40,111,168,175,141,105,205, 41, 15, 83, 89,252,165,111,225, 62,249,203,106,214,137,150, 44,233, + 22,126,119,133,128,228, 4,129, 25,158, 29,152, 74,198, 74,209,126,211, 44,191,151, 37,129,206,134,233,198,199,221, 28,127, 68, +224, 68,212, 98,182,198,187,210,108, 15,219, 20,220,114,227, 72,133,152, 78, 76, 48, 86,152, 73, 10,251,189, 77,215, 65, 37,147, +137, 65, 64,109, 34,219, 60,249,183,243,207, 28,134, 66,182,187,201, 21,206, 55,184, 91,142,101, 82, 84, 18,230, 22,215, 83, 45, +163, 10,100, 95,136, 93,140,227, 66,125, 74,115, 93,119,213,180,164,179, 83,129,154,155,104,206,130, 44, 56,135,170,227, 23, 52, + 59,251,170, 61,167,133,250,114,150,111,105,226,222,250,236, 12, 30, 35,110,183, 35,156,243, 88,154,145,222, 31, 80,176,152,222, +171, 79,191,156,242, 47, 91,148,160,226,236,183,188,109,151, 15,198,161, 20,228, 84,168,225,169,127, 71, 45, 81,144, 14, 8,124, +156,205,223,224, 52,111, 93, 4,102,211,185, 44,114,111,245,232,145, 66,166,167,254,236,246,131,113, 10,230,229,115,202, 9,151, + 15, 30,226,193,131, 75,124,249,197, 23,139,207,255,222, 53,205, 73, 60, 67, 78,179, 96,219,189,142,208,233,189, 95,221,251,208, +220,212, 85, 36, 69, 78,160, 14,116, 74, 29, 7, 50, 9, 17,115,196,127,242,247,254,115,252,243,127,233, 47,225,167, 63,254, 51, +236,135, 61,134,253, 30,231,103,103,120,250,222, 7,234,111, 46, 25,155,117,111, 41,108,140,199,143, 31,227,230,230, 21,134,155, + 91,149,153,217, 46,152, 25, 24,199, 17,195, 56,128, 89,247,215, 57, 26,252,156, 53, 72, 37,155,203,154, 15, 78,215, 76,153, 76, +182, 38, 70,124,116,248,232,163,143,241,189, 31,254, 38, 82, 76,186, 75,159, 34,146, 77,117,156, 21,190,239,122,213,104,111,119, +251,138, 40,101,123,125, 5,146,103, 59, 0,198, 56, 34,199,132,205,217, 90, 17,128,113,196, 52,168, 86,158,138, 49,145,125,214, +125,223, 41,103, 32,171,159, 90, 8, 1,222,185,202,252, 13,193, 27,255, 69,139, 81,215,117, 11,238,205,148, 82,109,100,187,174, + 67,178, 64,153,148, 24,228,154,212,204,172,207,191,119, 51, 75, 91,236,236,212,198,113,206,199, 13, 68,160,222, 60,231, 29, 97, + 50,107, 88, 34,135,142, 8,190, 95,213,243, 45,120,175, 70, 55, 57,153,146, 73, 63, 23,237, 37,188,162, 43,108, 90,111, 82, 72, + 63,197,136,108,171,130, 62,104, 80, 77, 49,240,137,153,225,196,180,242, 76,160, 50,237, 39,129,247, 9, 25, 1, 57, 49, 86, 46, + 35,154,217, 15, 33, 35, 51,129, 56,161, 8,171, 85, 77, 64, 72,211,132, 14, 9,174,235, 22,167,136,218, 79, 27,221,155, 1, 79, +140, 44, 94,165,183,148,145, 51, 33, 18,227,161,120,188,119, 62,225, 23,239, 60,129,223, 61,178,105,125,117,239, 84, 76,247,184, + 69, 44,161, 66,158, 77,209,154,201,254,117,205,245,119, 2,193,183, 57,216,109, 81,207,162,240, 87,201, 32,115,150,154,198,100, +142,111,162,133, 52,217,163,239,154,195, 65, 4, 11,178, 83,101, 85,139,202, 53,136, 9, 25, 14,137, 72,151,247, 7,131,158, 52, +249,222,243,180,171,200,128,151,165,214,125,222, 47,139,201,211,140, 0,103,213,149, 27, 79,117, 39, 75, 39, 46,215,192,237, 97, + 33,219,153, 59,253,140,217,164,165, 20,124,110,138, 24,201,124,232,241,225,101, 20,149, 5,117,164,235,137,137,103, 97, 55,181, + 48,185,233, 75, 75,167, 15, 35,226,145, 43,100, 62, 35,204, 57, 45,230,213,240,165,120,207,219,193,225, 90,152,184,108,126, 91, + 55, 61,211,130, 22,219,220,210, 84, 56, 59,160,133, 4, 49, 14,250,142,205,166,178, 53,138, 61,148,119, 52, 54,253, 71, 85,149, +238,209, 84,139, 28,228,204, 99,118, 45,107, 99, 14, 95,107,210,112, 96,156, 82,222,251,161, 6, 92, 22,255, 65,139,118, 66,178, +152, 43, 24, 29, 35, 9, 7, 59,125, 58,224, 16,136,252,242,143,221,161, 67, 92,153,208,227, 52,226,238, 21,227,208,104,230,212, +123,150, 35,118,197, 27,242, 95,229, 68,102,244, 41, 6,109,243,117,169,228,184, 3, 2, 67,245,143,144,147, 89,210, 2,224,230, +230, 6,127,229, 47,255,101,252,203,191,247,123,248,234,139,207,209,245, 61,124,215,227,225, 59, 79,208,133,128,179,179,115,132, +208, 97,140,147,122, 31, 24,100,220, 5, 13, 42, 25,198, 81, 89,220,125, 15, 17,193, 48,142, 42,101,203, 19, 24, 26,186, 50, 77, + 81, 39,250,164,228, 72,101,182,187,202,112,119,228,224,140, 92, 27, 99, 70,191, 89,227,234,229, 53, 94, 93,189, 84, 98, 93, 74, +136,147,106,158, 83,102,205, 78, 15,218, 4,239,247,131, 66,208,152,125, 34, 56,243, 12,227,230,172,126,238,113,194,217,217, 6, + 33,104,145, 21, 40,235, 94,198, 60,223,107,162, 5, 59, 4,141, 80, 37,167,234, 10, 71,138,104, 56, 31, 10,111, 29,171, 85,175, +103,145,215, 32,149,156,181,169, 9,222, 27, 33,184,184,173,217, 40, 85, 37,146,118,239,147, 83,214, 62, 8, 49, 49, 66,199,154, +101, 95,166,121, 53, 78,215,123,222,123,116,190,200, 97,141, 56,203,113,150, 26, 23,242,167,157, 13, 33, 56,196,168,241,183,197, + 89, 19,194, 42, 29, 21, 64, 56,155,125,116, 70,134,195,184,143,181,128,119, 94,239,217,148,216,226,108,129, 46,116,128,116,198, +198,159,116,109,144,146,218,201,118, 14,226,231, 48, 40,206, 25, 49, 11, 56, 70, 13, 10, 35, 85, 43,119, 36, 64,231,145, 19,192, +148, 81,163,192,200,169, 51, 99,206,154,232,232, 8, 83,240, 64, 86,207, 18, 71, 64, 38,205,172,135,100,140, 4,208,144,240, 52, +100,124,241,248, 12,233,155,247,224,247, 87, 64,184, 95, 85,190,224,233,136,156, 24,114,154, 97,151,230,147,180, 32,193,203, 88, +212,239,218,134, 70, 78,170, 84,130,128, 45,131, 28,224,106,130,100, 5, 92,104,182, 41,109, 15, 62, 57, 22,101,185, 22, 28, 20, + 1,232, 28, 83, 16, 32, 15,170,129,167, 19,243,217,225, 25, 68, 75,155,211, 25,254,165,250, 69,103,137,108, 9,141,169,140,201, +220, 10,169,174,152,206, 46,139, 78,101,175, 85, 24,187,245,157,147,226,167, 94,216,248, 40,230, 58, 77,227,210,176,209, 90,147, + 18,125, 91,140,209,174, 75,133,205,120, 38, 99,149,221,139, 91,196,168,154,235,188, 52, 87,177,241, 34,164, 38,240,163,181,201, +245, 7, 10, 2, 13,182, 56,224, 78, 31, 72,246, 90,254,147, 3, 33,199,136, 76,122, 40, 46,132,105,188,180,203,109,231,246,146, + 57,207, 45,236,115,146,132, 37,243,254,181, 89, 89, 44,125,151,229, 36, 73,206, 29,162,251,205, 20, 75, 11, 44, 76,142, 30,174, +121,175, 94, 18,217,168,162, 43,133,213,124, 56,225,207, 43,140,198,166,239, 59, 54,106,150, 42,101,243,152,166, 9,195, 56, 34, + 56,255, 26, 81,202,129, 7,255,107,193, 60,121,253,103, 65, 75, 70, 98, 59,125,215,157,249, 97,238,188, 52,201,110, 34,247, 30, + 31,211, 56,224,251,223,123, 31, 23,231,151,186,134, 8, 94,119,156, 36,240, 30,216,239,111,225,156,199,122,125,134,205,197, 3, +196,164,241,166,251,221, 14,227,126, 15, 34,160,183,130, 62,165,169, 18,215,134,221,136,221,118,135,113, 24,225,131,241,109, 60, +169,164,140, 51,200,121, 37,135, 17,129,157,161, 99, 89, 93,201, 54,235, 53,110,119,183,248,236,147, 79, 64,221, 57,182,219, 45, + 24,185, 66,193,100, 59,228,113,156,144, 98, 54,196,129,193,156,204,236, 70,153,232, 41, 37, 12,251, 1, 83,156,112,126,182, 65, +191, 90, 99,138, 89,115,223,179,154,204, 20,173,124,240,193, 96,121,109,144,203, 20, 94, 77,179,156,135,119, 30,125, 31,204,241, +142,140, 53, 46,154, 88, 22, 28,130,239,205, 2, 90, 76, 17, 96, 30,114,198,140, 39,210,198, 6, 4, 4, 71,232, 86, 74,232, 43, +241,169, 1,172, 36, 59, 82, 38,188,247, 30, 33,120,116, 37,218, 54,179,173, 17,180,224,122,231, 16,186, 14,137,141, 45,109,171, + 39,206,102,193, 42,192, 52, 77,139, 19, 59,139,162, 36, 49, 50, 2, 49,152, 28,166,148, 17, 40, 35,116,157,238,207, 89, 79, 95, + 61, 43, 92,253,157,201,114,235,147, 16, 56, 37,116,158, 48, 49,128,172,211,248,148, 1, 65, 68,202, 48,255,122, 93, 77,184, 16, +180,232,179, 64, 56,194, 35, 43,235, 31,172,196,108, 22, 56, 36, 16, 5, 56, 2,206,130,199,224, 86,112,201, 1,146, 52,119, 61, +155,204,208, 5, 76, 44,184, 20,193,211, 7, 25,159, 62,122, 6,183,255, 12, 36,119, 0,245,184,207,220,245,148, 13,196,242, 12, +105,182,237, 21,209,109, 21, 70, 77,147,254,203, 20,248, 83,231,209,107, 6,142,160, 15, 4, 35, 91, 40,138, 55,194, 6, 19,208, + 17,180,176,131, 43,249,173, 49,211, 91, 28,140, 84, 53,211, 70,186, 91,189, 3,126, 79,240, 91,254, 75, 60,248, 34,227,159,236, + 29, 6, 39,213,216, 70, 11,182, 91,156,161, 84, 29,235,168, 78,195, 84,225,219, 2,245,211,193,185,219,184,165, 45,176,122,179, +154, 21, 65, 2, 53,129, 49,237,234,112, 46, 62,133,196, 39,181, 8, 45, 39,226,249,192,148,202, 30,175,141,131, 44,181,210, 5, +197, 40,206, 68, 37,254,181,132,199,156, 58,194, 51, 11, 92,183,198,166,119, 72,195, 14, 19, 19,252,204,184,131,147,101, 19,116, +152, 79, 55,107,204,231,198,230,176,251,116, 77,183, 25, 10, 36, 8, 2,114, 68,204, 25,161,235,245,208,147,217,240, 69,236, 58, + 74, 75,243,163, 6, 35,184,175, 50,181, 89, 33, 71, 76,209,211, 22,164,109, 55,220,118,197, 5, 26,166,251,162, 76, 1,172,131, + 51,105, 82, 41,222,133, 50,171,236,192,148,179, 25,129, 28, 27,229,147, 28, 72, 16,133,126,165, 41,253,240,123, 99,156,224,157, + 87,242,152,145, 81,229,181,207, 53,129, 78, 46, 24, 94, 39,116,193,172,151, 91, 52, 78, 75,180, 67,195, 66,120,241,189, 36,173, +252,242, 16, 33, 57, 26,222,173,200, 56,236,118,123,220,221,221,194, 7, 77,234, 98,206,152, 98,196,110, 24, 16, 99,180,169, 82, +176,238, 87,120,248,232, 29,120,239, 17, 99,196,215, 47, 94, 32,115,198,217,217, 6,142,156, 6,129, 36,221,175,111,111,119,184, +187,185,211, 48,150, 20,205,207,156,172, 96,166,122,143,139,197, 65, 59,239,144,147, 22,102,149,188,169,217,201,207,127,250,115, +188,251,244,253, 10, 15,151, 51, 35,165,132,105,138,102, 72,197,118, 15, 27,212, 14,157, 68, 99, 74, 90,244,115,198,230,108,131, +245,102, 83, 57, 4, 49,171,209, 9,219,126, 59, 56,175,146, 50,117,142,209,124, 0,210,189,182,135,135, 15, 30, 33,104, 18, 27, +168, 49,220, 22,253, 57, 42, 67, 11,149, 28, 88, 26, 46,201, 26, 7, 29, 44, 68,166,248, 62, 56,104,200,137,126, 6,172,147,182, +177,227,189, 21,249,206, 19,250, 85,135,204,205,154, 40,120, 76, 99,182,176, 26, 70,191, 10,186,159,103, 37, 0,250,146,117, 96, +230, 45,251,113, 2,210,136,208,247, 72, 73, 11,189, 18,208,212, 68, 71,208, 35, 77, 58,165,235,250,174,160,253, 90,208,189, 87, +184, 61, 39,229, 75,144,168,244,211, 57,135,236,122,243,177,207,214, 8, 48,166,204, 10,249,219,197, 9, 14, 72, 8, 32, 78, 24, + 89, 48,236, 71, 72, 26,225, 8, 72,222, 65,152, 0, 81, 87,193, 4, 7, 39, 17,189,215, 83,251,204, 39, 12, 20,144, 70, 64,242, + 88, 93, 79,235,240,195,132,247, 66,194,243,199, 27,228,151,239,193,143, 55, 54,173,159,120,186, 12,217,164, 19, 3,201, 73, 41, + 46,181,172,121, 57,150,166, 54,127,145,126,149,205, 59,181,175,101,217,110, 7, 50, 72,200,217,238, 54, 11, 0,202,117, 87, 75, + 32,176,179,144, 18, 99,148,195, 44, 20, 43,196, 43,139, 64, 72,144, 19,240,244, 37,232,107,194,182,215, 14, 65,154,162,201, 52, + 67,199, 84,200,101, 52,123,165, 83, 99, 11, 91,162, 88,185,157, 38, 15, 36, 82, 21,154, 47, 31,128, 20,239,248,134, 53, 95,167, +205, 57,246,181, 85,255, 44,247,192,205,222,188,216,215,218,107, 43, 49,149,217,186, 80, 58,152,134, 22,133,238, 32, 75,189, 78, +196, 60, 19,214, 74, 19,225, 0,128, 35,242,164, 80,153,163,165,223,183, 59,224, 69,184,230,119,205,208,114, 81, 17,204,135,251, + 17, 1,237,192, 92, 92,120, 66, 56,127,140,135,103, 43,220,124,243,165,238,189, 12, 34,168,175,251,192, 66,216, 53,140,254, 99, + 7,189,229,154,247, 56,138,252, 20, 17,203,161, 40,198, 50,161,154, 89,208,129, 4,141, 27, 46,194,225,159,204,178, 76,238,179, +169,155,115, 66,183, 58,195,175,127,255,251,248,234,139, 79,176,221, 13,170,231, 95,114,244,127,101,117,233,125, 4, 85, 2,112, +121,249, 16, 41, 37,196,105,172,190,228,175, 17,165,157,120, 29,111, 33,124, 59, 10,154, 88,250, 48,139, 40,169,201,121,135,113, + 24, 15, 6,251,251,163,239,218,200,213, 89,178,235,112,245,242, 37,222,123,239, 25,126,255, 95,251,155,184,185,189,173,166, 46, +194,130, 85,191, 66,232,122, 51,143,201, 72,204,120,254,245,115, 69,193, 50, 35, 9,112,126,118, 14,129,178,222,243, 56, 96, 26, + 71,220, 92,223,224,246,246,182, 58,158,121, 63, 55, 11, 10,189,171, 69, 48,139,128,179, 6, 15,169, 29,172,121, 84,146, 64, 72, +176, 90,173,240,242,250, 22,211, 20,113,249,240,145,218,183,138,182,194,147, 89,197,130, 14,214, 56, 2,164,164,178, 53, 13, 53, +114, 88,247, 61,206,207,214, 32,231, 49,197, 9,193, 57,176, 87, 86,113, 8, 58,125, 7, 91, 37, 20,249,154, 39, 50,185, 91,175, +238,113, 38,235,242,142, 16,130, 25,204, 20,190,143, 35, 8,147,177,183, 29, 88, 18, 60,233,189,204, 53,222,122,254,104,157,159, + 23,149, 44, 98, 63,211,107,164,108,223,233,132,159, 50,156, 87,137, 89, 23,188,202,205, 82,172, 14,119,146,147, 37,188, 57,228, +152,144, 19, 3,156, 0, 82, 9,177, 39,177,243, 7, 8,171, 30,112, 1,142,147, 54, 80, 4, 36, 33, 32, 37,100, 8, 56, 69, 43, +240,154, 72, 87,100,129, 33,232,238, 61,217,250,195, 27,131,127, 72, 12,159, 71,136,115,152,146,128, 88,213, 14,146, 85, 74,171, + 77,129, 98,238, 20, 20,146, 31, 19, 48, 14, 3, 28, 71,144,119,200,226, 16,179,170, 38, 2, 1,226, 29,144, 61, 58, 47, 16,172, +244,186,176,160, 39,128, 59, 15,112, 15,230, 1, 41,171,229,172,247,132,140,128, 75, 2, 30, 93, 10,158, 95, 62,133, 31, 63, 7, +100, 80,148,227, 36, 93,133,222,130,103,115, 64, 87,110,139,123, 99, 56,214,238,222, 5, 39,214,101,111,185,117, 95,182,253, 7, + 59,117,154,163, 2,140,148,101,251, 13,154,137,102,186, 99, 47, 68, 53,237, 10, 51,205,185,211,121, 49,160,217,131, 34, 9,110, + 39,248,236,214, 33,121, 77,107, 43,133,136,155, 93,177,111,109, 64, 23,132,227,214,131,123,134, 47,234,228,222,188, 23, 87,194, + 80,154, 64, 74, 7,212,228, 56, 28, 48,167,233, 4,220,139,197,158, 29,139,137,128, 68, 14,124,221, 73,111,224,214,132,165, 64, +247,141,126,188,194,168, 70,120,227,134, 24,197,141,179,157,254, 28, 53, 77,136, 73, 33,122,223, 20,237, 67, 83,184, 35, 78,212, + 1,127,147,172,163, 47, 18, 67,180, 13, 69,133,231,117, 26, 77, 41, 99,181, 58,199,175,189,127,137, 31,191,252, 28,163,120,157, +204,205,252,103,110,122,102,138, 52, 29,200,162,203,207,227,102,162,230, 6, 5,169, 36, 72, 67, 68, 78,234, 58,113,191, 95,178, +220, 51, 1,183,107,155,201,166,156, 35, 18,185, 77,166,211,176,181, 67,156, 78, 23, 82,153, 71, 82,225,239,166,168, 51, 43,203, +249,111,254,171,127, 29,207,191,252, 4,255,203,255,250,191,225,108,115,134, 35,231, 35, 57,181, 79, 95,174,135,238, 35,234,205, + 68,204, 83,102, 20,203, 84, 54,206, 9, 57,183,235,163,226, 42, 72, 75,198,255,125,191,203,140, 82,174,190,121, 9, 17,198,255, +240,199,255, 8,191,247, 7,255, 10,126,254,211, 31,219, 30,216, 1,208,240, 21, 16,208, 5,143,148,148,228,229,200,107, 44,105, +231,209,145,102,141,199, 20,117,178,223,237,176,187,221,226,230,213,141,237,108, 25, 49,199, 25, 98,135,233,219,189,145,205,132, +144, 37,195,121,194,196, 73,225,115, 81,135, 56, 79,154, 84,225,187, 14,175,238,118,216,238,247,216,172, 55,240, 93,111, 41,123, + 4, 23,130,221, 11,186, 99, 79, 41,129,115,212, 6,217,171,126, 60,120,157,192, 11,140, 30, 92,176, 29,111, 50,159,118,169,174, +148,133, 23,211,119, 1,171,126, 5,114, 14,161, 11,134,206, 56, 56, 23,116, 74,245, 78, 27,250,108,137,113, 32,116,171, 30, 93, + 87,166,106,170,197, 51,244, 93, 69, 23,179, 65,254,206,163, 34, 80, 33,120,108,214, 43, 37,232, 58, 7,231,149, 85, 79, 36,240, +222, 67, 72,189,225, 51, 39,112, 22,164, 52, 33,167,104, 73,112, 38,173, 51, 46, 21, 57,178,223,129,106,194, 19,156,141, 54,204, +205, 67,106, 81,168, 49, 67, 36, 34, 56, 93, 51, 8, 8, 49, 1,200, 17,112, 14,121,138,112, 20, 1, 71,144, 12, 36, 88, 86,189, +169, 22,144,116, 13,146, 68, 9,144, 5,117,241,100, 49,205, 62,128, 73, 48, 68, 70,220, 15,232, 92,130, 95,245, 96, 56, 76,137, +193, 41, 35,144, 32, 18, 1, 41, 34,208,132, 40,106, 93,228,124, 7,134, 71,240,130, 46, 16,134,220,129,166,136,206,101, 16,249, +122, 63,109, 68,240,189,243,140,151, 79,222, 65,126,245, 20, 62,253, 66, 93,230,240, 6, 64,236,219,100,157,183, 3,245, 34, 5, + 81, 22,210,230,163,245,215,219, 44,244,228,126,187,106,149,163, 55, 95,103, 27,139, 11, 4,223,238,169, 21,150, 52,120,214,233, +215,195, 76,175, 50,114,217, 76, 50, 98, 16,224,149,232, 80, 66, 73,138, 13,233, 34,209,172,124, 93, 80, 9,111,229,152, 97,110, + 67, 96,150,161, 23,210, 16,231,228, 96,215, 92,244,240,220, 20,222,234, 67,210, 76,145,135, 94,247,100,147, 61, 99,217, 48,180, +215,154, 91,210, 89,227, 20, 69, 7,197,181,101, 20, 23, 66,210, 41,178, 69,249,160,139, 49,197,108, 89,123,176, 75,110,102, 75, +150, 54, 91,136, 22,157,155, 18,242, 14,118,205,118,119,149, 25,216, 27,235,121,189, 90, 35, 93,127,142,127,122, 45, 16, 9,232, +156,189,247,197,238, 92,142,246,187,116,176,255,158,255,121, 70, 88,164,146,248, 48,103,170,179, 28,149, 15,102,214,221,161,177, +147,241, 58,242,220,137,167, 70,108,255, 91, 63,147,106, 26,160,242,190, 28, 39,124,244,241, 39, 8, 93,167,100,164,102,178, 93, +120,173,176,153,125, 56,247, 43, 76,231,243,254,218,217, 62,244,159,254,227,255, 19,195,184,199,170, 95, 31, 16,103,112,175, 21, + 36, 45,124, 19,223,226, 34,208,145, 90,255,184,201,144,182, 89,152, 27, 86,224,245,142,117, 45,249,239,213,245, 43,176,100,252, +247,255,227, 31,227,247,255,224, 15,240,201,199, 31,205, 18, 57, 22,147,106,121,213,109, 83,243,110,108,186, 45,215,200, 5,143, + 60,142,184,187,189,193,246,246, 14, 47, 94,188,196,118,187, 53, 43, 82,133, 81, 99, 74,240, 54,181, 42,161,174, 83, 73, 88, 74, + 72,156,173,152, 75, 69,211,196,118,199, 66,128, 15, 30,157,116,200,153,113,115,119, 11,111,105,120, 69,126, 88,236,129,115,210, + 64, 32, 71, 14, 93,223,213,169,219,123,175,178,176,224,225,132,172,240,231,153,163,193,106,112, 82,154,238, 46, 4,248,208, 97, +181,238,177, 57, 59, 71,140, 42,191,115,198, 32,215, 92, 5,189,247,162, 36, 56, 59, 41,250,190,211,209, 73, 52,136,165, 20,219, +204, 17,125, 8, 90,104, 77,191,173,169,126,250,180,119, 94,217,255,142, 4,161, 87,247, 56, 97, 43,232,230, 12, 42,204,102,193, +171,168,192,217,102,165, 12,242,152,230,225, 72,111,250,106,112,163,247,111, 94,116,219,100, 1, 41, 49, 37,117,130, 51,222,132, +115,206,120, 67,186,167,167,114, 15,228, 12,120, 64,178, 51,197,131,190, 55,239, 28, 50,107,222,102,209,125, 19,105,128, 20,153, + 39,128, 55,254,192,144,129,105, 24, 17,144, 16, 66,128,144,105,229, 89,221,229, 84,255, 46, 16, 81, 76, 53, 37, 65, 47, 17,107, + 39, 32, 90,131,197,161, 35,129,172, 28, 38,108,128,184,135, 16,195,137,131,115, 2, 65,192, 35, 18, 60,120, 32,184, 58,127, 10, +127,253, 57,202, 2,250, 62, 82,233,235, 74,184,220,247,228, 29,110,196,208,132,197,148, 32,153,111, 93,220,103,174,208, 41, 4, + 33,148, 41,172,205, 41, 47,144,122,110, 24,213,190, 22,125, 88,183, 60, 23, 15,114, 75, 90,108,245,123, 98,177, 76,241,214,196, +164,181, 11, 61, 17, 35,217,100,221,202,129, 86,186,117, 2,107,231,118, 87, 17,131, 86,159,222,146,237,104, 62,204,104,150,102, +249, 58,245, 43, 92,239,155,242, 21, 22, 19,211, 18, 69, 40,205,129, 43, 19, 56,176, 48,101, 89,152,159,212,215,184, 12, 40, 57, + 77,122, 62,158,207,232, 4, 33,113,110, 54, 96,166,129, 55,100, 99, 0, 0, 32, 0, 73, 68, 65, 84, 11,122,184,177, 61, 20,167, +136,207, 44, 75,121, 20,215,230, 69, 59,147,196,106, 3, 89, 27, 26, 57, 86, 71, 75,147, 33,223, 94,223,186, 29,146,165, 12,171, + 50,224,157,249,214,131, 76, 94,114,188, 26, 96,230, 55,113,187,223, 40, 47, 91,188,235, 3, 13,120,223,247,139,207, 83, 14,224, + 6,177, 98,212,175, 87,170,143,254, 14,228, 38,133, 5,251,179,143, 62,130,247, 65,227, 57,223,128, 2,208,235,143,136,123,145, +247, 35, 39,164,251,174,145, 28,170, 54, 80, 73,135,175, 61, 70,156,195,221,237, 29,246,251, 29,254,187, 63,252, 35,252,155,255, +214,191,141,159,255,236, 39,216,237,118,234, 78, 6, 66,226, 12,114, 22, 39, 27,122, 76,113, 68,138, 81,167, 99,239, 84, 43, 94, + 60,185,227,132,237,221, 45,110,174,110,149,173,254, 74,155, 5,141,100, 85, 68,199, 59,143,208,117,182,171,159, 52,203,124,229, +212,130, 52,149, 9,143,235,231,167,125, 28, 43,243, 28, 90, 68, 28, 57, 35,183,101,108,183, 59,196, 56, 97,220,239,241,240,225, + 67,132,205, 5, 32,106, 20, 35,208, 48, 35, 13, 61,209,137, 57,132, 0, 31,180, 72,146, 11,192, 36, 72, 9, 22,161,218,213,102, + 98,181, 90, 33,116, 29, 86, 93,192, 7,223,251, 30,246, 83,194,120,117,165,247,188, 87, 86,123,223,245, 0, 17,178, 68,116, 33, + 88,195,103,114, 65, 71,232, 93,135,152, 18, 56,114,117,218, 19, 0, 93,231,209,247, 29,200,193,138,184,106,209, 67,167,158,243, +222,123,101,140,231,136,245,106,101,235, 83,129,179,188,139,110,221,171,199,189,217,182,194, 38,239,118,231, 91, 44,194,139,231, +136,112, 82, 69,142, 53, 45,197, 8, 70, 85, 4, 25, 93,240, 32,167,171,132,156,210, 44,169, 99,181,188, 82,229, 7, 25,255, 90, + 64,206,207,121, 6, 4,107, 16, 4, 48, 68,199, 57, 75,177,179,192,170,196,202, 55,240,142, 33, 8,152,146, 32, 80, 84,198,215, + 76, 92,130,179,236, 1,161,128,148, 5,195,148,128, 60,162, 95,101,116,171, 53, 64,107,244,196, 64,239, 48,200, 6, 20,247,128, +203,224,236, 16,211,132, 62, 17,158,116,140,235, 7, 15, 32, 55,143, 64,252, 53, 64,254,128, 4, 39, 11, 87,185,251, 10, 59,189, +174,184,211,177,164,246,168,128, 83, 67,242,173, 7, 20,225,126, 87,142,251,255, 4, 97, 86,251,197,172,134, 6, 75,168,219,244, +224, 37, 51,221,246,168,174,105, 96,184,228,207,202, 92,244,203, 68,198,173,233,137,180,242, 52,105,242,211, 21, 42,103,154, 27, +135,234, 59,222, 30,194, 70, 60, 91,120,117,211, 76,165,171,183,103, 37,210, 45,103,146,242,218, 92,219,125, 81,147,101, 82,221, +206,168, 49,164, 41,133,105,153,122, 69,237,190,152,168,242, 13, 68, 14,253, 0,104,177, 19, 94,232,142, 73, 78,232,175,105,249, +115, 15, 8,112,197, 35,190,192,251,133,124,215, 38, 97, 51,150,112,125, 41,190, 14,173,201, 8,213, 69,137, 24,116, 81, 2, 48, +248, 64, 78, 85,185, 8,208, 72,218,226, 1,144, 23,235, 3,243,204,110,136, 90, 85,174, 88, 53,209,250, 64, 59, 56,136,147,197, +189,182,208, 69, 31, 60, 58,199, 15,136, 73,117, 42,234, 49,199,213, 22, 85,195,107,243,206,219,121,182,120,156, 19,192,146,177, +234,214,120,244,232, 33,190,252,226,115,164,100,169, 86,223,150,229,126,226, 95,110,214, 27, 35, 97,201, 73, 82,250, 33,242,116, + 2, 60,127,195,131,124, 98,244, 63, 21, 8,209,122,220, 11,189,245,214,158,156,195,110,187,197,171, 87,215,248,175,255,219,127, +128,127,231,111,253, 45,252,244, 39,127,134, 97,191, 71,191, 94,227,225,195,199,152,198, 9,215,215,223, 0, 16,116, 93,143,243, +139, 75,124,241,197,103,202, 7,105,100, 91, 83, 76,136, 41,226,238,230, 22, 87, 87, 87, 24,135, 1,219,221,174,134,169,164,148, +144,140,188,214,247,189,182,159, 4,172, 86, 43,196, 24, 49,140,154,175,158,153,231,181,141,204,237,170,243,206,178, 1,216,166, + 68,109, 86,179,157, 31, 41,101, 60,122,252, 24, 63,248,225,143,192, 2,140,195, 30, 49, 70,155,204,181,168,100,131,186,251,190, + 87,171,212,156,107,244,105,240, 30, 28, 50, 56,139,134,215,108,214, 32,242, 88,117, 30, 63,252,225,175,227,242,209, 99,124,246, +197,243, 90, 36,201, 20, 47,229, 28,235,187,206,138,182, 71,113,119, 45,208,185, 99,135, 16,212, 21,174,220,227,153, 51,188, 3, +132,141,251,100,123,124, 31, 58, 56,102,116,157,199,148,196, 20, 76,130,174,243,128, 80,213,164,135,224, 49, 76,192, 20, 71,211, +250,155, 47,131,152, 34,164, 78,232,176, 22,223,118,235, 16, 48, 49, 98,204, 22,128,147, 53, 42,183,211,253,127,137,133, 21, 46, +215, 87,204,247, 93,175, 97,100,129,164,168, 65, 49,162,158, 8,106, 74,167, 77, 0, 25,175,200, 23, 4,199,200,118, 44,234,240, +232,136,109, 96, 73,182,130, 0, 50, 74,195, 99,186,121, 27, 20,132,116, 40,203,142,176,205, 14,251,187,132,135,241, 6,225, 60, +131,194, 5,122, 98,164,206, 33,231, 14, 73, 52, 4,202, 75, 70, 79,132, 39,171,128, 47, 30,175,176,253,230, 61,116,187,111, 32, +206, 8,220,167, 24, 46,212,118,209,167, 32,248, 86, 43,112,252, 72,202, 41, 9, 48,205, 8,118,155, 29, 82, 17,233,147,126, 19, +175,151,183,134,226, 44, 85,225,168, 38,128,197, 67, 77,127,152,176,112, 98, 42, 47,209,149, 67,182,228,155, 75, 59,213,181,197, + 17,200, 85,130,182,244,110, 47, 69,124, 73,152,214, 73, 82,172, 8, 84, 3,147, 67,200,180,254, 60,169, 12,237, 90,128,105,214, +189,139, 57, 71,185,166, 51, 37,123,207,138, 34,232,191, 79, 77,204,222, 50,124,100, 57,225,213, 64,148,154,112,214, 20,244,131, +204,221,211, 58,108, 89,200,220,138,102, 29,205,132, 92,229,106, 80,146,205, 28,178, 34,154, 98,103,143,160,186,108,185,147,166, + 45, 21,170, 55, 53, 65,203,145, 99, 44,141,105,168,216,247, 54,126,115,135, 66,117, 79,174, 58,145,249, 6,194,164,131, 6,111, + 94, 81,160, 70, 88, 58, 79,102,212,193,213,116, 69, 26, 89, 26, 27, 3,217, 59,119,116,205,220, 65, 37,140, 41,161,235, 58, 43, +148, 77, 99,193,120, 35,107,253,100,214,177,232,110,112, 28, 7, 60,255,106,143,208,173,176, 90,123,140,195, 30,167,197,228,175, + 97,198,157, 90, 15, 28, 58,197,157, 42,232,114,160,145,127,219,206,124,225,173,127,210,182,239,222, 70, 64, 90,237,227, 61,215, +141,156,195,126,183,195,171,235,107,252,189,191,255, 95,224,223,253,219,127, 27, 63,251,201,143, 17, 83,198, 59,143,159,224,236, +236, 28, 57, 39, 12,195,157,218,130,138,194,197,195,126,171, 4,174, 85, 7, 22, 65, 26,246,154,221, 13,104,212,234,237, 45,238, + 94,221,225,246,230, 22,195, 48,168, 71,131,193,196, 83, 76,234, 32,231,231,200, 81,111, 8, 64, 42, 19,103, 13, 30,146, 89,166, + 71,115, 90,160, 50,239,237, 12, 48,135,182,148, 18,214,171, 30,239,127,239,251, 90, 92, 37, 3, 88,129, 28, 44, 1,209,233,207, + 54,247,201,202,209,104, 8, 78,154,153,174, 38, 45,155,205, 6,253,106,133,148, 19,158, 61,123,130,243,203,135, 24,118,123, 92, +158,159, 97, 26, 46,145,210,164,134, 50, 49, 1, 73, 37,119, 93, 65,107,136, 49, 37, 70, 23,188,242, 2,166, 73, 39,248,160, 78, + 26,204,243,160, 80,120, 58,193,185, 26, 52,147,179,146,210, 8, 17,193,121,132,205,198, 20, 2,106, 21,157,133,209, 87,181, 67, +210,117, 16,185,121,106,180,103, 47,166,108, 19,179, 65,255,162,249, 18, 41,179, 42, 24, 68,144,179,158,172,190,243,181, 48,151, +144,154, 50, 89, 75, 78,170,255,119, 78,161,114,206,232,200,170, 4,103,192,105, 30,189,152,196,205, 53,237, 53, 11, 64,230, 15, +144, 89, 64,150, 86,199, 34,170, 2,168, 73,105,170,109, 47,150,176,100,168,110,113,226, 35,232,234,101, 18,193,171, 65,240, 64, +238,208, 93, 48,146,191, 64, 16, 65, 14, 14,121, 12,112, 50,168, 18,198, 57, 92, 58,194,179, 71,130,159, 61,122, 6,222,125, 10, +146,107, 16,173,150,242, 51,106, 92, 64,223, 72, 96, 59,241,213, 3, 5, 9,157, 88,182, 45, 6,190,150,123,180, 96,221,191,158, + 78, 59, 75,218,234,195,171, 80,178,151,178,199,182,105,145,164, 78,235, 76,213, 92,116, 46,176, 77,220,166, 84, 95,107,187, 65, +154, 70, 96, 1,184,138, 78,125,179,145,202,172, 71,231,195,105,190,217,235,151,126,119, 97, 45,107,255, 89, 38,106, 33, 13, 99, +161, 54, 73, 74,150,251,140,210, 52, 40,107,223,244,142, 53,248,132,106, 22,124, 70,107,170,211, 30,220, 69,239,190,212,108, 23, +159,119, 1, 41, 73,207,184, 0,109, 72,141, 28,106, 32, 72,109, 42,169,194, 87,205,148,110, 44, 92,111, 38, 16,226, 52, 10,146, + 27,121,154, 20,219,219,150, 7,112,240,177,251,195,137,221,162,117, 75,211,233,237,117, 4,231,213, 37,204,172,102,143,172,104, +237,197,123,180, 68, 66, 28, 7,127, 28, 57,144,153, 79,245, 1,143,160,181,130,245, 62, 96,189,233, 49, 14,251,170,239, 63,212, +161,115, 74,216,156, 95,226,221,139,115,188,186,250,198, 86, 6, 85,142, 81,209,131,215, 62,120,139,167,170,189, 73, 52,214,117, +138, 17,143, 30, 93,226,252,124,141,175,246, 59,220,107, 18,243, 45, 16, 49,162,165, 10, 64,238,181,153,110,169,152,111,205,123, +111,171, 78,189,187,193,199, 49,176,179,130,163,129,221, 95,147,222, 70, 68,152,134, 17, 47, 95,188,192,127,252,159,254,103,248, + 15,255,206,223,193, 39, 31,127, 4, 23, 2,158, 62,126, 23,222, 57, 76,211,136, 87,175,174, 44,224,102,133, 56, 69,196, 56, 97, + 24,246, 58, 97,101, 99,182, 24, 25, 75,192, 24,135, 61, 94, 93,223, 96,123,183,195,126, 24,144, 45, 39,221,123,103, 5, 68, 47, + 67, 74,201,124,209, 81, 19,210, 84,191,173, 86,210, 92, 61,169, 81, 9, 93, 26,158,162,235,158, 98,199,154, 88, 97,125,206, 25, +235,139,115,116,253, 10, 55,183, 55,154,180,214,117, 88,109,122,139, 88,101,244,125, 64, 48,200, 29,100,201,135,118, 63, 77,147, + 78,245, 93, 8, 88,159,109,224, 66, 64,206, 9,143, 30, 92,226,221, 39,207,212, 67, 94, 4,155,245, 10, 79,159, 62,193,221,221, + 29,246,187, 29,200,123,155,108, 89,117,213, 78, 11, 89,204,154, 36,231, 67, 48, 29,122,194,249,249, 25, 4, 14,211,180, 71,113, +201, 8, 33,168, 65, 24,205,119,137,102,157, 59,115, 52,212,159, 9, 34,228,164,207,132,183, 6, 64,204,212,133,160, 60, 3, 22, +181,219,133,153,241, 72, 33,173, 89, 70,125,137,181,141, 49,193, 65, 19,215, 0,181, 99, 37, 23, 84,134,215, 72, 92, 51,171, 12, +208, 59,130,131,162, 4, 57, 49,130, 48,124,232, 76, 95,174, 77, 74,240, 30,137,188,118,226, 2,253, 30,231, 0, 81, 95,255,146, +210,148, 68,211,248, 84,178,230,236,220, 50, 75, 90,167,178,189,204, 37,173, 49, 26,243, 94,101,128,142, 4,157, 35, 36,120,220, + 70,224,108, 59, 98,189, 17,248,245, 5,178, 95, 1, 76,154, 33, 79,130, 40,132, 62,101,188,215, 71,124,241,238, 6,227, 55,239, + 35,140,215, 16,207, 58, 2, 82,163,146,178, 68,188, 55, 61,145,111,122, 94,151, 3, 11, 53,199, 80, 51,210, 54,208,124, 75,100, + 87, 94,214, 1,150,121,226,168, 11,176, 64, 23,230, 22,150,214,143, 44,137,202, 42,138,132, 73, 4,149,146, 85, 45, 67, 69,140, +104,119,160, 66,166,146,193,110,254, 63, 38, 37,115,205, 91,227,198,100, 5, 77,113,103,154, 93,220, 10,140, 85, 26,138,121,146, + 63,152, 58,202,174, 88,100,113,198, 85, 72, 67,202,106,192,254,207,200,105,220,172, 7, 92,105, 56,170,182,252, 56, 60,133,237, + 98, 51,228,232,176,167,198,100,128,186, 14, 43, 48,114, 76,179,112,170, 9,214,176, 68,114,221,129, 51,230, 34,214,172, 33,200, + 44,108,179,232,180, 78, 34,152,138,188,139,168,126, 79,229, 61,208, 92,164,219, 38,138,205, 87,207,163,229, 4,232, 5, 46,220, + 9,231, 60,250, 16, 32,156, 23,210, 2, 1, 26,123, 87,170,252,139,250,239,141, 83,224, 26,198,123,235,143,223,174, 31,164, 33, + 30,202,162,226,233,195,220, 17, 33, 17,153, 26,249, 88, 7,170, 82, 35,194,217,186,199,171, 18, 22, 67,206, 60, 3,176,240,188, +191,247,161, 59, 32,199, 21, 56,165,124, 91,215,117,216,110,111,177,219,222,190, 53, 97,238, 30,208,109,190, 70,116,175,229,253, + 98,194, 63,180,220, 37,188, 70,203, 42,167, 85,111, 2,169,193, 36, 41,197,227, 12, 1,204, 62,243,130,215, 23,244,156, 51,158, + 63,255, 18,255,222,191,255, 31,224, 63,250,187,127, 23,159,127,246, 41,250,126,133,243,243,115,181, 95, 77, 19,182,219, 91, 8, + 43,228,158, 57, 35,198,201, 92,217, 80,155, 36,213,104, 59,164, 56,225,213,171,107, 92,125,243, 18,187,221, 30, 89, 50, 88,114, +245, 58,207,147,121,162,147, 3,156, 84,179, 21, 42,146, 69,158,157,222,150,174,134,106,241, 12, 46,191, 87,135,148, 20,181,144, +171,116,147, 27, 27, 97, 13, 81, 25, 6,129, 23, 86, 78,128, 43,133, 68,170,239,185, 54,137, 26,135,186,221,238,176,223,237,177, + 89,175,176, 90,111,176, 90,175, 52,104,134, 8, 79,159, 62,131,115, 30, 57,198,218, 72,157,111, 86, 8,206,163, 95, 41, 71, 99, + 26,247,106,173, 45,140,206,117,243,186,205,246,194, 49, 38, 92,156,173,241,222,179,167, 72, 8,120,254,252, 57,242,184, 67, 8, +157,250, 48,172, 58,179, 64,101,155,200,245,222, 8,222, 23,230,113,181,168,142, 49, 25,209, 48,163, 35,109,112,224,102,143,130, + 66, 20,204, 57, 67,160,185,235, 57,103,107, 12,244,190, 17,201, 16,231,204,215, 94,175,131,115, 0,123,135, 41, 38, 56,138, 8, + 62, 32,103, 70, 64, 6, 81,103,220, 3, 61, 59,125,240,200, 66,112,200,128,185,214,137, 53,103,129,160,171, 45,231,237,115,229, +202,169, 73, 41,235,239,198,140,194,146, 0,193, 1,112,106,110,227, 40, 67,224,145,152,225, 12,242, 23, 86,166,180, 39,245,124, +239,172,142,220, 77,128,240,136, 11, 97, 92,156, 93, 98,188, 56,199, 56, 4,200,180, 7, 35, 97,200,192, 67, 78,120,246, 14,227, + 23, 15,223, 71,120,254, 41, 8, 91, 8,250,197, 65, 70, 5,217,146,239, 78,242,122, 36,127, 51,110, 86,155,229, 94,184, 73, 21, +217, 94,240,232, 78,147,234, 2, 92, 41, 96, 6,247,240,204, 96, 47,140,224,100, 93,130, 39,133,209, 51,230, 48,249, 67,208,144, +138,155, 87,113,105,179,146,195,162,191,168,146,171,164,200,160,180,176,184,118,210, 16,158,165, 97, 77,238,120,110,153,241, 66, + 11,230,160,107,200,111, 45,140, 33, 45, 99, 93, 26,246,118, 77,140, 35, 77,160,107, 96,121, 87,215, 24,210,120,138, 43,155,160, + 15, 30,107, 34, 56,206, 24,115,198,190, 33, 6, 58,154,139, 15,115, 6, 27, 20, 54, 51,201, 91, 53,252,108,182,226, 76,206, 86, +154, 9,215,226, 46,102,133,171,233, 67,178,240,117,167, 70,242,215,150,159, 92, 39,118,177,255,118, 11, 66, 91,105,166, 10,138, +162,254,206, 25,251,209, 12, 46, 74, 70,114,109, 48, 24,194,168,105, 99,185,209, 62, 87,149, 6,205,133, 93,154,107,168,191,202, + 89,195, 54,211, 64, 43,243, 21,154, 14,200, 57,225,110, 27, 43,169, 78, 14,212, 3, 0, 16,186, 14,251,237, 45,254,252,246, 21, +130,243,182, 14,152,205, 33,124,177,251,189,223,170,173,241,173, 63, 64,180, 14,114,210,143, 52,253,111,232,206,229, 62, 64,128, +238,249,226,137,239,167, 35,202,141,188, 93,203,223,118, 89, 44,112,164, 54,165,167, 53,130,244,218,125, 96,123, 13,190,248,252, +115,252,235,127,227,223,192,223,255, 47,255, 43,188,120,254, 21, 32,192,217,102,131,105,156, 0,160,102,147,111,206,206, 49, 77, + 35,166,113, 4, 27, 91,189, 21, 60,166,172, 38, 33,211, 56,226,213,213, 43,220,222,220, 97, 24,246, 24,134, 1,227, 48, 34,103, +158,253,211, 1,149,171,149,231, 54, 91, 17,179,137, 95,189,220, 39, 45,254,110, 70,237,114,214, 68, 55, 64, 39,252, 24, 53, 40, + 38,103,213,202, 7,175,228,180,104,217,234, 5, 25,112,228,212, 76, 6,106, 82,163, 81,168, 19, 60, 57,116,171, 30,156,245,231, +220,221,222, 98,181, 82,102,187,166,188, 69, 92, 92,156,227,233,147,167, 56,191,188,172,191, 27,245, 96, 86,237,120,191, 94,225, + 74, 4, 57, 77,152, 88,141, 95, 10, 43,126,189,234, 17, 99,196,118,187,195,195,203, 51,124,240,189, 15,224, 92,135,117,215,225, +246,252, 18,175,246,119, 88,123,130,235, 58,115,139,115,152, 82,172,123,107,102,245,223,223,244, 61, 34,151, 93,180, 3,156,199, + 24, 19,200,252,242,157,102,189,150,110, 7, 34, 89,137,134,194,245,172, 39, 43,224, 25,162,166, 60,162,182,187,193, 9,124,232, + 16, 19,131,242,164, 43, 46,141, 87, 67, 20, 51,207, 9,110, 14,164,130, 32,116, 26, 3, 43,137,235,249, 84,216,248,142, 4,161, + 11, 32,167,178,194,108,138, 5, 80,225,217,100,243,179,119,200, 0,156,228,218, 12, 81,206,154, 18, 42, 2, 71, 26,157,235,152, +224,204,193, 47,101,229, 3,144,176,214, 40, 59,183,111,146, 3,223, 76,120,226,174, 17, 30, 4, 48,157, 35,177,162, 20, 83,102, +244, 35,227,105,191,199, 23,239,110,144,174,158, 33,164,159,213, 3,245, 40,128,122,225, 5,241,214, 0,252,219,175, 4,233,120, + 97,123, 24, 38, 67, 39,211, 57,164,133,223,245, 67, 15, 52, 79,166,149, 48, 85,242,176,139, 25, 75, 67, 86,211, 18,199, 85,230, + 38, 36,117,250,214, 41, 80, 13,255,129, 30,226, 61, 28,141,112, 73, 16, 11, 0, 76,212, 90, 14, 87, 15,118,105,166,188,178,151, +117, 71,242,176, 70,171, 71, 12,136, 91, 76,212, 85, 7, 78,179,121, 70,203,166,175,113,172,132, 58,157, 87,119,181, 2,215, 55, +210,173,194, 23,128,119, 56,119, 14,103,186, 96,214, 27, 63,235,244,220,198,184, 58, 48, 56, 50,198, 70,250,118,178, 64,148,162, +198,121,105, 28,211, 20,150,114, 88, 39, 57, 50,106,211,155,254,212,224, 71, 4,202, 9,145, 5, 33,116,102,164, 67, 85, 26, 4, +107,106, 92,241, 24,144,214,143,191,176,235,103, 86,186,235,122, 60, 56,219, 96,127,119,139,152,185,218,173,178,201,233, 92,177, + 15,183,149, 11, 53,186,239,154,249, 38,199, 90,243, 22,210,159,227, 97,231,132,181,138,106,212,107, 49,167, 96,205, 44,209,153, +164,119,175,195, 29,150, 63,150, 14,201, 7,124, 31,147,254, 91,202,216,238,171,221,133,144,121,162,209,159, 73, 94,139, 86,239, +228,163,123,242,247, 30,112,228, 52, 61, 46,206,123,230, 19,157,134, 52,119,119, 19,111,180,144,174,125,246,233,167,248, 43,255, +226,239,226, 31,252,225, 31,225,238,230, 6,195, 56,224,241,227,119,149, 1, 77,192,148, 34,114,102,116, 93,143,148, 19,246,195, + 94,173, 72,157, 3,177, 32,230,140,156, 18,114, 74, 24,167, 17, 41, 69,179,135, 29, 48, 12,218, 0,196,105,170, 68, 54, 17,101, +159, 39,102,139, 73,213,156,242, 49,198, 26, 79,218,175,214,120,252,236, 9, 46,207, 47,225,125,128,239,188, 78,118,182,103,223, +237, 6,196,105,178,132,178,128,204,140,253,126,143, 23, 47,190,193, 55,207,191, 84,142, 4,119,216,239,119,112, 97,165,187,118, + 98,139,128, 21, 99,229, 71,211,132, 19,134,253,136,253,126,135, 52, 69,244,235, 21, 46, 46, 46,208,247, 61, 66,215,225,252,252, + 12, 79,159, 60,197,106,189, 70, 74,169,242, 15, 60, 57,192,169,252,139,140,111, 84, 26,161,149,249,175,147,125, 54, 57,171,187, +221,122,213,227,233,211,103, 8,221,186, 94,143,139,179, 13,246,171, 13, 66,231,225,187,206,216,253,130,205,106,101, 41,109, 12, + 4, 27,200,178,162, 51,190, 11,128, 56, 76, 9,112,200,136, 44, 72,187, 1,155,205, 74,139, 94, 74,245,188,141,133, 9, 47,100, +246,183, 73,239, 81,203,165,200, 44,213,255, 32,167,172, 19,117,206, 8, 78, 77,118, 82, 22,136, 68,172,250,128, 12,175, 13,132, +115, 38, 75,134,250,148, 16, 33,137,131, 19,221,217,123,152,186,192,105,184,140, 24,138, 82, 26, 20, 72, 70,239, 85,167,238, 88, +224,136,193, 12,228, 84,238,216,178,102,211,221,185, 48,170, 4,144, 57,130,132, 45, 55, 3,213,166, 22, 54,204,109, 57,128, 94, + 37,188, 35, 47,176, 58,207,200,253, 26, 57,119,144, 60, 96, 39,192,163, 16,241,236,241, 10,159, 60,252, 53,248, 23, 95, 2, 24, + 64,232,142,106, 38, 53,103, 44, 4, 71, 24, 29,221,135,221,209,155,123,244,227,222,159,170,244,173,245,242,192, 34, 15,228,216, + 4, 50,120, 34,237,140,106, 48, 10, 16, 74,104, 74, 89, 89,185,194, 76,118,213,140, 68,227, 75, 59,211, 40,102, 99,187, 83,131, + 10, 26,161, 10, 51,249,130, 44, 53,136,138, 13,172,141,210,124, 64, 46,155, 51,201, 75, 34,220,146,239, 71, 66,203, 55,222, 48, +228,179,117,166, 78,154,163,177,236,180,173,115,243,173,250, 87, 20,125, 40,181, 93, 10,169,172,105, 14,202,123, 82,226, 96,198, +190, 16, 52, 26,141, 61,181, 59, 81,115,151,114,109, 44,233,137, 76,111,146,153,159,223, 66,204,237, 46,255, 62,133, 36, 91,215, +189,212,107, 91,145,207, 25,110,117,142, 85,112,152,118,119, 72,112, 51,137,178,236,167,133,142, 84,208,116,162, 34, 85,219, 89, +179,100,172,215,166, 56,182, 29,112, 49,155, 72,156, 35,155,227,214, 44,165,245, 75, 94,110,145,151, 76,247, 35,187,216,214, 75, + 94, 26,206,132, 53,152,111,150,190,153,186,130,102, 84, 73,190, 67,163,247,217,133,239,224,194,210,235, 86,114,109,216,238,178, +180,127,107,238,125,241,197,167, 19, 38, 59,197, 20, 73,100,161, 0,105, 15, 4,231, 28,190,250,234, 43,252,224,215, 63,196, 31, +254,195,255, 9,222, 59,188,188,189,193,195,135,239, 32,198, 8, 16,169, 44,108, 28, 16,124,135,148, 38,236,246,123,196, 41, 65, + 48,107,209, 53,199, 60, 97, 24, 7,108,183,123,131,160, 7,164,148,204,201, 44,193, 59,135, 68, 37, 97,171,160, 86,132,253,126, +192,176, 31,112,249,224, 1,222,125,246, 24, 23,151, 23,120,247,221,119,112,249,224, 17,214,235, 21,124, 8,102,156,148,180, 0, +219,189, 63, 78, 26,220,211,175,122,196, 56, 1, 66, 24,166, 9,219,187, 29, 62,255,252,115,124,244,243,159,227,171,207, 63,193, +237,245, 53, 30, 63,123, 31, 9,192, 56,141,134, 2,133, 58, 41,121,239, 17, 83,194,176,223, 67, 4, 56,187, 60,199,195,135, 15, +241,238,227, 39,184,188,188, 68,191, 90,153, 70, 91,201,100,229, 89, 40, 73,109,197, 31, 65,231, 0,194,170,239,113,121,113,102, +126,243,163,194,237, 89, 87, 19,171, 85,135,247,222,123, 15,171,245,185, 37,179, 5,172,215, 27,220,237, 35, 54,155, 21,122, 75, + 87,235,251,174, 90,192,146,239,116,231, 77,176,204,114,189, 95,146,165,204, 17, 4,125,167,130,221,105,136, 54,148,176,109,186, + 74,204, 41, 33,138,154, 0,229,164,113,171, 37,138,130,160, 50, 60,229, 95,152, 58,198,145,229,209, 51,200, 5, 80,112, 74, 98, +118,132,108, 40, 65,103, 57,238, 98,252, 20, 71, 0,103,117, 0,209, 52,186,206, 18,230,242,188, 66,229, 92, 27,137,224,131, 5, +211, 0,146, 53,178,149, 83, 82,211, 34, 16,188,215,243, 61, 11, 1,102,180,195, 80, 30,129, 23,117,139, 99, 67, 61, 29, 17, 50, + 41, 7,137, 56,195,145,224,150, 9,211, 85,194,227,248, 2,235,203, 71,216,173, 47,128,145, 0,153, 16,196,225,131,179,140, 47, +159, 62, 4, 95, 61,133,227, 63,135,184,112,239,162,124,110,208,233, 68, 9,255,246, 39,138,188, 14,158,199,156,117,177,136,165, +186,135,224, 26,184, 48,197, 73,138, 97, 83,213, 48,131,154, 3,186,154,212,176, 26,151,136,131,248, 0, 10, 17, 61,171,206, 57, +177, 78,233,197,192, 70,139,113, 4, 49, 16, 19, 33,219,228,236, 23,172,114,106,124,215, 81,104,111, 90,236, 75, 22,245,145, 13, +118,155, 11, 94, 52,227, 77, 1, 63, 33, 95, 98,123,208,138,164,141, 73, 14,118,197,101, 87,141,133,148,172, 94, 84, 18,100, 78, +216, 87, 24,159, 44,160, 96,246,137,103, 44, 95,195, 18,169,105, 24,239, 38, 69,155, 85, 4, 52,175, 8,160, 25,244,173, 71, 64, +137, 85,229,198,143,158,170, 43, 24, 45,237,191,161,144,220,197,217, 37,222,123,216,225,211,143,111,145,121, 41,129, 88,164,152, + 29, 52, 16,238,232, 58,168,107,211,237, 43,181,119,172, 6, 25,170, 26,109,160, 86,105,214, 37,168, 94,218,213,208,208,205,214, +183, 37, 59,187,124, 38,116, 10,174,110, 16, 33, 62,209,116, 20,242, 76,203, 26, 23,146, 55,219, 59, 25,236,223, 74, 7,209, 32, + 69,223,186,148,202,233,152,218, 67, 10,255,155, 56,249,199,191, 93,222,226,213,156,192,215,239,217, 61,144, 37, 9, 30,137, 4, + 15, 10,250,203,151, 47,177,217,108,240, 71,127,252,143,240,244,233, 83,124,252,209, 71,120,242,244, 9, 0, 65,142,170, 75, 30, +227,136, 16, 58, 76,211,136, 97, 63, 24,107, 90,149, 24, 57, 39,196,105,194,118,187, 69,202, 25,251,221, 14,219,187, 29,166,105, + 68, 28, 39,164,148,145,114, 68, 76, 73,117,217,149,156,165,215,224,238,230, 6,235,205, 25,126,247,175,253, 75,120,246,222, 7, + 0, 8, 49, 14, 56, 91,175,193, 89, 48, 12, 3,210, 52, 41, 75,218,105, 33, 77,201, 32, 90, 78,112,222, 99, 24,246,152,166,201, +172, 95, 19,198,253, 22, 15,206,207,240, 23,126,251,183,209,245, 43,124,249,233, 47,176, 90,111,224,250, 30, 57, 38, 77,160,172, +153,241,132,221,110,135, 97,216,225,242,226, 18,103,151, 15,176,234, 3,126,253,195, 15,241,224,157,199, 72, 49, 85, 19,169, 92, + 9,107, 74,100, 43,207,101, 93, 11,216, 51, 16,188,195,122,189,182,181,129,122,189,167,196,232, 66,192,247, 63,120, 15, 23, 15, + 30, 90, 51, 17, 16,204,141, 78,106,210, 6,176,234, 59,172,215, 27,236,135, 9, 44,162,113,169,222, 67, 56, 97,221,247,112, 93, +103, 70, 61, 25,211,164,122,114,231,128,179,205, 74, 37,122,172, 83,116, 18,221,183,115, 78,246,121,113, 69,116, 88,148, 67,225, + 96,228,192,178,150,165, 96, 28, 3, 70, 48,203, 91,144, 67, 31,156,173, 86,212,179, 93,155,152,255,151,181, 55,127,150, 45,203, +206,131,190,181,135,115, 50,243, 78,111,170,122, 53,119, 87,119,211, 6, 73, 6, 65, 96,169,165,118,132,176,194, 67,203, 70,180, + 32,104,133, 8, 4, 18, 97, 3, 17,216,152,144,195, 13,178, 37, 76, 25,248,171, 0, 7,132, 21, 6, 34,240, 16, 33,219, 40,164, +238,174, 66, 93, 93,195,155,238,187, 67,222,204, 60,103, 15,139, 31,214,218,251,236,147,247,190,251, 94,181, 93, 17, 82,191,170, +119,135,204,147,231,236,181,214,183,190, 65, 78,170, 50,161, 15,161, 52, 11,194,214, 39,202,213, 97,179,132, 46,149,179, 95, 52, +231,164,231,151, 56, 93, 22, 31,250,194,148,175,228,108,146,226,205, 89,210,236,188, 53, 66, 15, 83,212,162,152, 88, 37, 78,200, + 25,160,156,225, 28, 0,178,216,177,193,243,171,140,215,204, 25,142, 79, 44, 54,230, 16, 24, 12, 70, 4, 28, 51,227,222,221,140, + 71,199,111,162, 59,253, 12, 48, 73,193,108,126, 97, 97,159, 71,173,222, 22,143,124,251,241,242,194,191, 34,204,204,207,246,221, + 93,170,163, 97,205,174, 32, 56,206, 81,101, 26, 40,163, 42,184,200,217, 24,136,122,112, 19,149,160,143, 98,224,146,145,211, 86, +208,111,157,216, 12, 41,153, 37,151, 6,128,102, 36, 51, 59,121,210, 76, 6, 2,146,233, 83, 39,215, 73,235, 94, 72,107, 60, 21, +204, 74,240,161, 57,249,140, 74,193,147, 75,147, 4, 29, 23, 38, 38, 53,123,114,158, 79,143,133,224,151,203, 46,189, 49, 97,160, +134, 84,100,120,218,245,111, 19,224, 21,113, 72,181, 64, 76,175,131,103,100, 62,133, 79,136,247,102,209,137,165,222, 22,211,242, + 62, 21,244, 65,192,132,106,148,198,101, 31,230,153,111, 47, 39,178,215,112,254, 4, 31, 95, 18, 50,217, 26,122, 95,228,120,166, +129,118,203,207, 45,102, 58,169,153,126, 51, 77, 13, 69,113,124, 99, 46, 33, 63,229,117,183,133,189, 37,245, 55, 83,182, 78, 48, +172, 68,183, 18, 94, 81,148,177, 51, 66, 88,105,238,152, 27,239,255,189,169,191,225, 46, 84,207,255, 87, 44,198,101, 74, 47,146, +197,114,207,127,161, 32,245, 87,168,179,251, 73,166, 55, 7, 45, 49,230,134, 67,188,215,245,223,226, 96, 85, 85, 24, 55,248,182, + 95,251, 54,106, 60,172,111, 38, 33,146, 49, 56, 59, 59, 67,138, 17,191,251,193,223,197, 79,254,228, 79,225, 15,255,240, 15,112, +124,116, 34, 7,170, 78,105, 33, 69,116, 93,135,237,176,195,102,179, 69, 8,163,132,168,140, 90,176, 99,196, 48,200,174, 60,198, +132, 97,220, 33,166,128, 20, 19,174,214, 27,172,175,214,106, 89,154, 52,119,123,114,104,219, 14, 59,220,189,123, 15, 63,247, 11, +223,196,151,222,127, 31,167, 79,159,225,209,103,159, 99,216, 13,216,174,165, 73,176, 26,107,154, 98, 66,215,119, 34,147, 83,179, + 25,103, 29,198, 97,196,213,230, 74,109,113,147, 18,220,118,146, 16,183,221,226,222,221,187,216,110,174,240,236,217, 83,172, 14, +143,225,188, 68,195,142, 42,223,218, 92, 93,129, 83,194,221,251,247,113,116,114,130,206, 59,188,243,206,219,120,240,250, 67,140, +227, 8,231,140,146, 16,133, 65,222,117,157, 92,191,164, 76,125,149,244, 17, 0,178, 82,124,201, 24,116, 32, 28, 30, 28,225, 50, + 51,114,138, 56, 58, 88,225,222,189,187, 56, 62, 62,150,103, 66, 37,117, 94,109,106, 11,185,208, 26,145,206,133,152,224,189, 21, + 27, 91,253,250, 24,101,205,225,213, 91,222, 26,135,148,132,251,226,172, 56,174, 57,107,148,179,144, 37,159, 62, 39, 36,102,217, +145,239, 53,181,142, 8,214, 57,217,169,103, 86,212, 48,214, 4, 60,178,174, 38,211,201,227, 43, 8,173, 85,130,157, 68,221,102, + 68,214,236,144,156, 69,215,238, 58,140, 99,128, 67,130,245, 14, 68, 86,211,224,128,196, 6,224, 44,103,113,100,144,149, 21,164, +233, 28,114, 22, 68, 35,198, 18,222, 82, 26, 38,130,101, 6, 57,131, 4, 3, 74,169,102, 25, 25, 83,252,227, 89,255, 93, 45,184, +117,181,201, 22, 88, 71, 3,186,136,120, 64,207,176, 56, 36, 12,221, 10, 33, 50, 86, 41,225,237, 85,192,211, 7,247,144,207, 94, +131,201, 31,171,126,254,118, 39,185,154,104, 88,162,165,111, 35,207,252, 88, 71,202,228, 43, 79, 51, 86, 86, 75,128,159,204,213, +156,132,184, 40,179, 93,217,165, 92, 83,210,244,192,214, 9,215, 20,192,149,117,234,102, 77,110, 51,128, 87,242, 6,140, 16,186, +130,194,218,213, 86,150, 25,108, 38,213,185, 64,109,168,214,132,211,100, 88, 36,111,168,240,117,198,164, 59, 47,110,110, 37,195, + 87, 30,104,204,163, 80,129, 25, 49,109,158, 24, 94, 10,190,234,189, 9,123,140,227,178, 67, 39,141,145, 36,144, 17, 6,122,249, +154,180,151, 87,205, 84,184, 6, 60,143, 64,173,124, 67, 69, 8,154,162, 92, 39, 84,222, 71, 6, 24, 35, 79,254,237, 92, 35, 91, +231, 83,234, 77, 77, 2,239,237,170, 99, 42, 16,115,174, 55,221,194, 24, 36,142, 24, 51,195,106, 23,204,141,205,102,181,157,165, +166, 88, 54,110, 71, 89, 93, 2, 77, 3,117, 83, 27, 19,139,185,189,109, 21, 85,228, 60,133,153, 48, 55,171,148, 34, 69,164,122, +111,100,158,155,150,182, 13,194,190,118,158, 85,159,205,175,100,194, 54, 57, 39,178,100, 12, 79,159,216,143,241,192,221,180, 75, +231,198,177,149,248,165,116,183, 25,227,189,141,132,224, 87,241,215,219,139,192,173, 9, 95, 55,120,228,211, 45, 13, 1,145,193, +197,249, 57,198,113,196,223,252,239,126, 27,223,252,230,159,198,247,254,232, 15,177, 92, 46,113,112,120,136,113, 24, 53, 84, 69, + 96,220,245,122,139,205,118, 35,198, 45,163, 16,215, 66, 24,149,185, 44, 33, 30, 21,133,210,194,180, 75, 59,217,187,115,130, 49, + 14,137,131, 28,184, 76, 8, 41, 98,187,221,225,232, 96,133,159,250, 55,254,117,188,245,206, 59,184,186, 88,227,217,211, 83,145, +144,121,129,249,119,187,157, 78,151,114, 88,111,135,157, 76,107,154, 91,238,156,195,102,179,195, 48,140, 0, 51,134, 49, 96, 24, +118, 90,108,146,100,178,199,136,123,247,239, 35,134, 17,227,110, 39, 81,175,219, 45,144, 19,172,247,240,253, 2,247,238,221,197, +106,117, 0,107, 13,222,125,247, 93,220,127,237, 53,228,156,208,119, 29,140,181,149,125,191, 88,173, 96,172,197,102,179,197,194, + 89, 13, 57,146,189,113, 12, 81,206, 77, 35,222,236,228, 13, 86, 86,246,232,206, 0,119,239,222,193,225,225,145,164,171, 25,130, +245, 30,224,140,213,106,137,139,171, 17,195,110,131,195,131, 37,250,126, 33,108,115, 0,139,229, 18, 68, 6,187,113, 64, 78,162, +185,103,146,137,152,192, 53, 61,206,123,135, 97, 39,159, 25, 25,177, 87, 45, 74, 8,217,229, 75,209, 46,171, 24, 34,198,162,115, + 53,167,157, 85, 10, 85,120, 73,166, 90,220,106,248,148, 22,214,156,155,103,179,196,163,150, 80, 23, 75, 32,231,196,255,157, 51, +156, 33, 48,172, 76,236, 26,113,155, 73, 97,122,200,191,151,168, 86, 34, 81, 76, 49, 51,156, 97,184,222, 35, 37,113, 22,148, 81, + 10,170,187,159, 38,120,106,240,199,226, 95, 96,116,152,203,100, 17, 83,134, 97,113, 60, 92, 56, 96,203, 30,103, 87,192,125,247, + 28, 88, 57, 12, 88, 33,166, 13,238,217,136,123,247, 61,158, 60,122, 11,221,249,231, 32,147,192,112,183,122, 57,204, 76,157,155, + 16,175,107, 4,154, 31, 99,175,142,107,136,111, 33,129,235,234, 76, 3,204, 90,251, 89, 23,114,150,204, 89,157,192, 82,179,235, +141, 37,191,188, 73, 53, 51, 58, 9,103,245, 52,246, 70, 72,118, 86, 75,174,177, 25, 29,139,141,108, 84,205,251,200, 22,201,176, + 50,175, 39,134,122,106, 29,223,138,158, 93,181,221,212, 76, 86, 98,123, 40,123,126, 83, 11,156, 22, 89,221,229,183,254,238,243, + 2, 45,172,242, 34, 89, 35, 8,155,223, 52,157, 14, 23,114, 89,115,244,149, 27,162,236,123,139,196,205,214, 72,181, 73, 22,212, + 98,174,212,240,204,103,251,223,102,175,110,103,217,224,104, 86, 15,123, 97, 51,229,247,235,186,129,155,105,126,150,188,118, 13, + 93, 80,137,155,126, 6, 45,196,221, 27, 66,200, 6, 67,137,157,108, 37, 99,224,153,149,232,100,247,202,141,218, 97,223, 7,191, +164,226, 97,143, 63,160, 43,146, 61, 61,122, 46,198, 32,149, 68,200,179, 52, 59,236, 21,114,102,190, 30,111,136,198,230,114, 70, +174,187,233, 1,105, 8, 97, 76,179, 41,154,255, 37, 38,178,205, 54, 33, 55,228,216, 23, 84, 1, 68, 47,225,162,183, 13,234, 11, +187,137,235,134, 51,197, 68, 73,181,172,124, 27,229,190, 49,169, 34, 99,112,126,118,134, 97,216,225,111,124,247,183,241, 75,127, +241, 47,225,251,223,255, 35,228, 28,113,116,244,154, 66,222, 91,200, 26, 51, 98,183,219,226,217,211, 83,177, 22,142, 1,219,194, + 94,143,161, 22,129,130, 75, 25,107,192,163,222,203,214,192,123, 15,239, 29,118, 67,168, 6, 70, 76,164, 19,157,199,219,111,191, +131,215, 30, 62,192,241,241, 9, 62, 57,255, 17,134, 97,135,197, 98,161, 16,187, 48,222, 75,180,103, 78, 25,219,157,152,136, 56, +103,212, 29,110,196,229,229, 90, 83,254,184,174, 20, 66, 28, 49,142,131,172,125, 72,154,214,163,147, 19,108, 46,215, 50,189,198, +132,229,106,129,187,247, 31,224,232,240, 8,198, 73,168,209, 59,239,188,139,123,247, 31,200, 78,219, 89,248,206, 35, 4,129,178, +239,222, 57,129,247, 61, 46, 46, 46,167, 53, 64,158, 98, 71,173,153,100, 92,206, 59,120,221,193,119,206,161,239, 60, 58, 13,126, +241, 53,131,221,160,239,122, 24,235,241,252,252, 49,194,110, 64,127,184,210,247,204,232, 59,139,206,123, 89,115,198,140,133,247, + 32,227, 48, 14,131, 50,207,149,188,154, 25,227, 24,106,134,193, 56, 70, 12,195, 32, 5,144,132, 88,136, 60,233,192,189,243, 53, +101,173,152,207,148,194,111, 73,236,113,185, 14,123, 42,125,206, 9,214, 1,198, 72, 26, 27,229,172,198, 66, 74, 62,118,226,188, + 71, 78,188,247,115, 76, 18,209,106,157, 62,211, 58, 56,101, 49, 13,179,198,130,172, 85,139, 90, 25, 10,115, 78, 42,211,149,189, + 61, 1, 72,198, 32, 69, 2,114,212,125,188,160, 5,133, 99, 43,107, 4, 35, 59,116,211, 32,132,152,103, 29, 27, 34,116,134,112, +149, 13,252,101,196,177,125,142,220, 63,192, 56, 46,176, 74, 91,188,185, 26,112,250,224, 30,248,242, 53, 32,127, 6, 24,247,194, +167,113,174, 85,153,138,109,187,115,255, 34,133,253, 54, 45, 46, 53, 28,152,249,217,202,179,129,192,137, 17,191, 20,172, 88, 83, +216,168, 66,227, 96, 66,210,137,209, 19, 64,153,106,161,153,180,180,166, 78, 90, 4,249,128, 60,141, 48,129,177, 99, 2,187, 99, +216,131,128, 59, 97,141,221, 54,227,170,216,155, 54, 94,226,132,121,234, 22,205, 32, 73,106, 76, 0, 52, 93,136, 76, 37,215,149, + 93,152,120, 62,243,236,231,181,246,171,212, 4,207,164, 61, 66,150, 45, 83,187,158,202,142, 10, 73, 76, 73,131,237, 62, 95,205, + 81,234,244,156,209,248,205,210,172,136,181, 94,233,134, 90,169,151,238,204, 53, 53,104,159,173,108, 11,138, 13,141, 0, 0, 32, + 0, 73, 68, 65, 84,154,244, 39, 91, 58,232,218,112,208, 12,162,110,237, 11,107,176,133,190,121, 75,147, 21,170,101,198, 69, 12, + 2, 85, 26,170, 19, 91,249,181, 70, 87, 13, 51,123, 95, 76,201,103,173,213,109,110, 26,175, 76,220,242, 50,107, 35, 80,252, 14, +136,184,113, 0,203, 51,210, 92, 77,118,187,133,248,177, 63,173, 51, 55, 52,246,150, 29,202,123,205,206,222,138,162,237,174,102, + 44,252,198,198,182, 52, 30, 95,120, 74,167,185, 46,189, 93,146, 51,163,198,189,230,234,189,205, 55,144,228,246,203,239,205, 39, +192, 11,141,100,249,230, 86,133,102,252,250,233, 65, 51,198,226,244,244, 25, 98,140,248,155,191,253,183,241, 23,190,245, 45,124, +248,131,239, 99, 24,118, 56, 62, 58, 65,140, 9,187,221,149, 58, 47,202,238,251,236,249, 57, 78, 79, 79,209, 57, 89, 18, 85, 11, + 81, 53, 64, 17,171, 85, 33,154, 49,203,212,154, 57,163, 95, 44, 96,189,199,184,219, 33,134, 17, 45, 77,147,192, 56, 58, 62,193, +235, 15, 31,226,206,201, 29, 88, 34,236,134, 1,171,229, 10, 49,138,164, 44,168, 35, 91, 89, 3,164,152, 16,134, 1,166,235, 49, +166, 36,114, 58,230, 42,121, 35, 2,124,231,164, 40,230, 92,109, 77,101,114, 77,232,188, 67,232, 58,144, 9, 56, 57,121,136,163, +147, 19, 9,116, 97, 70,138, 1,175,191,241, 16,119,239,221, 23, 66,159, 53,232, 22, 29,140,145,212,182,174,243,112, 94, 10, 86, +215,123, 24,125, 93,142, 80,125,230,125,231, 36, 43, 62, 68,157, 64, 73, 76,107,150, 11,225, 21, 89, 35,202, 20,231, 48,142,163, + 54, 3, 78,220,217, 88,126,174,120,213, 68, 44,122,143, 69,191, 64, 38,131, 16,118, 88,116,242, 59,131,218,215,146,242, 10,168, +105,250, 50, 3,195,102, 7,112,130, 85,243, 27,142,186, 75, 87,210,107,231, 5,121, 24, 67,172, 59,111,107, 12,114, 38, 40,223, +177, 54,244, 41, 79, 46,125, 25,208,164, 53,158,177, 85, 89,221,104,138, 55,125,226,134, 43,164, 90,111,210,102,167, 54, 16,156, + 97,173, 65, 54, 6, 28,115,181,231, 46, 13, 64, 74, 25, 41, 36, 24, 72,128, 76,164,166, 54, 53, 3, 8, 65,244,254, 32,131,104, +173, 32,131, 72,186, 22, 16,227, 46, 3,171,242, 56,113,163, 51,148,113,145, 29,232, 34,224,232,248, 25,168,191,143, 16, 86,184, +135, 45,142,239, 25,156, 61,122, 3,126,253, 24, 48, 17,109,208, 11,110, 65, 72, 91,237, 56, 17, 79, 17,171,252, 74,228,154, 87, +146,176,214,179,142,104, 79,253, 42,127,112, 80,183,159, 82, 8,140,118,134, 50,212,152, 10, 79,155,134,168, 96,180,219,202, 25, +136,152, 8, 43,150, 74, 58, 98,153, 96, 69,222, 69,233, 2,121, 11,236, 50, 33,114,123,144,149,130, 57,105,188, 11, 4, 47,208, +187,217,131, 91,169, 33, 55, 53,122,235, 61, 15,104,185,241,180,201,168, 70, 49,172, 26,199,201,141,174,114, 54,148,137,105,180, + 40, 90,154,210,218,202,251,176, 96, 69, 50,184, 22,162, 92, 9, 3, 42, 99, 83, 70,186,105,141, 90,154,207,195, 26,113,187, 75, + 89, 72, 54, 81, 59, 12,179, 55,201,151, 21,131,216, 66,202,207,163, 74, 68,156,131,179,134,246, 81,233,146,106,133, 38,179,125, + 58,212,219,242, 81, 9, 99,205,180,156,219,215,130,169,193,186, 9,223,206,104,221,255,230, 51, 38,215,150, 50,215,223, 42,144, + 24,213, 53,118,235,245,190, 79,216,219, 47,238,204,220,212,124,158,237,175,246, 45,153,105,255, 62,167,102,239,196,243, 7,176, +252, 78,167,216,127,248,113, 7,245,189,144,180,182,176,166,156,176, 58, 60,128, 49, 2,115, 79,164,150,246,138,222,168, 22,191, +249, 8,105, 63, 11,190, 81, 77, 59,255, 57,109,115, 89, 36,132,214,224,217,179,103,232,124,135,223,253,224,127,196,207,125,243, +231,241,225, 71, 63,192,184, 27,144, 83,198,102,187, 81, 95, 4,134,179, 14,139,254, 0, 79,158, 60,194,211, 39, 79,224,212,173, + 45, 38,113, 80, 75, 49,194,117,122, 8,199,132,174,183,240,222, 34, 69,192, 90, 47,159,247,110, 64,223,119,122, 63, 48, 98, 74, +162, 17,207, 9, 93,183,192,193,209, 17, 34,103, 44, 87, 75, 73, 78,139, 1,214, 89,129,216, 33,211,220, 38,110,177,221,108,145, + 98,172,186,234,237,118,163, 18, 44,129,125,199, 16,116,202, 99, 96,148,235, 84,108,101,219,107, 97,140, 65,191,232,177, 52, 11, +156, 28, 31, 35,107, 18, 27,152,113,124,120,136, 7,175, 63,108, 32,107,217, 23, 27, 7, 28, 28, 30,169,193,139,220, 41,157,239, +224, 93, 70,140,162, 2,170,124,145,242, 44, 27, 41, 42,206,137,175, 59, 67, 10,176,181, 26, 43,155, 19, 86,203, 37, 58,239,208, +117, 29,194,110, 68,231, 44,250,147, 59, 72, 26, 15,219,119, 11,128, 8,195, 56,194, 90,130,115,157,132,219,176,129,233, 60,134, +221, 32, 59,116, 34, 24,206,176,222, 99, 24, 71,244,157,133,115,189,184,213,165,140, 97, 24,145,194, 8,130,129,119,226,233,144, + 99,172,207,185, 36,236,101, 36,101,199,195, 88,132, 33,232, 20, 47,127,111,173,120,213, 11,250, 36,214,206, 57,101,201,191, 40, +171, 70,171,121,237,234,225,110,141,236,208,133, 36, 8, 16,217,202,149,201, 73,238, 25,235, 8,198, 78,142,113, 49, 50,192,210, + 80,145,161,106, 34,100, 8, 32,107, 64,214, 32,100,134,201,218, 52, 41, 31,200, 48,195, 26, 6, 89, 66, 98,229, 0, 64,152,253, + 89,163, 94, 73, 37,189,142, 8,129, 12,158,108, 9,148,214, 88,221, 3,118,238, 1,108,244,120, 99, 21,113,126,255, 1,242,213, +125,152,252,248,133,211, 58,223,192,136,175,230, 94,133, 79, 67, 37, 93,148, 94, 90,216, 95, 58,200,243, 13, 40, 65, 89,231,103, + 65,203,165,168, 39, 45,120,152,147,110,202,108,232, 90, 7,170,118, 66,211,147, 51,137, 99, 13,146, 33, 80, 78, 32,102, 68,102, +140, 89,245,213,121, 68,138, 6,107,154,138, 63,148, 61, 42, 4,187,172,164, 56,177,165, 5, 3, 73,188, 83, 27,217, 17,102,221, +189,153, 49,163,105,239, 32,231,250,247, 73,101, 15,164,162,247, 66,123, 48, 52,135, 77,106, 65,203, 92,199,173,208, 76,238,115, +138,194,190, 49,127,107,120,147,145, 26,121, 75,203,191, 74,105, 90,160, 23, 7, 52, 82,119,184,201,117,109,218,191, 23,187,216, + 92, 28,228,234, 39, 50,151,146,149,249,108, 66, 41,132,147,208, 30,237,220, 54, 15, 45,220, 14, 49,118, 40, 94,215,133, 41, 77, +234,183, 92, 38,116,154, 17,252,166, 48,158,130, 48,240,158,221,168, 72,107, 90, 9,155,153,140,111,180,129, 48,234,216,150, 57, +207, 32,255, 18,102,209, 58,159, 1,123, 5,125, 15, 90,199, 11,210,233,166,169,153,167,187,100,182,159,215,204,131,220, 72, 5, +127, 28, 93,122,195,187,107,126,180, 52,115,214, 98,183,221,106, 4,166,153, 53, 51, 55,177,224,111,123,172,175,217, 12,239,193, +123, 55,171,219, 27,255, 5, 53, 62,185, 56,191,128,181, 6,191,251,193, 7,248,217,111,252, 60,190,255,253, 63, 66, 80,247, 55, + 99,172, 4,134, 24,131,229, 98,169, 69, 45, 97,216,238, 4,241,241, 29, 44, 17, 58,120,108, 54, 27,144,119,240, 66, 47, 70,136, + 82, 84,141,181, 24,153, 97,144, 97, 64,186, 27,119, 0,247,216,238, 6, 77, 42,179,240,112, 48,171, 21, 86,171, 21,238,222,187, +131,213,225, 17, 78,159, 61, 21,243, 38,229,221, 92,237, 6, 92, 93, 94, 97,187,217, 32,197,136,144, 82,163,111,151, 59, 49,168, +113,140,252,159,166,119,177, 52, 84, 41, 39, 97,124,235,253,222,119, 30, 33, 16,172,205,112,206, 33,196, 32,239,145, 39, 47,139, + 48, 12,232,151, 43,133,116, 51,198, 33,160,235, 60,134, 97, 68,214,176,153,190,235, 16, 83, 82,215, 60, 97, 74,103,157,118,140, +238,178,147, 78,237,162,207, 54, 8,227,136,190,239, 84,194,101,225,188,131,179, 6,171,213, 18,153, 44,182,167,103,224, 20,212, + 83,159,145, 82,128,181,194,123,242,150,224,252, 82,118,205, 86,150,152,227, 24,224,156,236,249, 83, 12, 24, 71,105, 54,250,222, +195, 25, 57, 83,115,214,157,182,119, 32,146, 63,199, 32,161, 52, 18,167,154,165, 65, 75, 9,136,106,215,155, 13,144,162,160,169, +202,133,130,238,192,171,187, 1,147,114, 36, 8,100, 44,188, 70,222, 18, 89,253,140, 98,189,174,208, 85, 44, 32,133,157, 89,206, +122,182, 70, 86, 10, 33,193,153, 8,178, 94,139, 55, 33, 25,163, 19, 55, 80,244,118,157, 37,192,245,136, 57,195,197, 84, 73,213, +101,136, 72,153,133,112, 71, 89,201,191, 98, 29, 46,231,152, 16, 51, 13, 73,195, 18, 51,100, 71, 79,192, 69,112,232,174,118,232, +142, 47, 1,119,140,215, 29,225,179,215, 12,206,159,190, 5,187,121, 38,163, 92,181,138,189,185, 16,243,117, 11,146,201, 52,134, + 26,206,215, 23, 37,229,242,203,135,248,234,143, 70,128,203,139, 19,120,222,226,112,151, 48,236, 12,118,122,248,115, 49, 13, 81, +187,216, 66,214, 42,187,223, 68, 90,200,179, 65, 50, 12,239,100,186, 46,249,198,177, 68,183,242, 20,206,210,146,208, 88, 77, 48, +140, 78,234,150, 4, 18, 73, 25, 32,119, 0,179,180, 56,204,107,140, 3, 99,139,105,103, 47,182,207,226, 83,156,200,195, 58,212, + 8,213, 98, 49,107,181,236,197, 25,137, 66,119, 49, 25, 48,214,214,180, 49,230, 61,235,208,102,186, 71, 3,201, 23,233,157,157, +153,192, 76,214,185, 83,206,251,228,219, 94,160,109,110,224,236,144,247, 83,212, 38,200,217,160, 53, 20,144, 46,126, 84,180,132, +243, 4,215, 19, 55,156,128,210, 76, 24,245,142,103, 52,100, 48, 52,185,236,243,123,105, 50, 25, 98, 56,223, 3,141,165,109,133, +215,169,133,220,233,218,132,110, 10,137, 17,115,217,228,244, 61,220, 52, 38,185,201, 26, 23, 40,205, 16, 77,225, 56,245,103,152, + 10,197,231,198, 14,152,104,142, 22, 76,190,204,147, 75, 29,191, 76, 47, 66,123,166, 66, 77,195,144,152, 95,170,134,123,169, 90, +142, 94,240,128, 3, 26, 20, 50,223,169,211,141,185,108,116, 59, 28,112, 19, 52,113, 93,136,127,189,177,105,126,122, 24, 3, 54, +155, 13,254,198,119,191,139,159,251,230, 55,241,225, 15,126,128,227,227, 19, 16, 24,151,235, 53,200, 88, 44,150, 11,172, 22, 75, +100,102, 92, 94, 92,128,136,176, 88, 45, 97,141, 69,140, 1,118,177, 64, 28,130, 6,120, 72,115,215,245,157,120,106,135,132,113, + 28, 42,219, 90, 72,116,242,181,214,202,212, 70,100,170,121,208,193,234, 0,111,188,241, 16, 95,254,202,251, 51, 88,122,125,126, +129,221,102,139,245,197, 26,231,231, 23,130, 8, 56,217,161,143, 99,192, 48,198, 42,105, 27, 85, 47, 78, 68,112,206, 85,135,179, +201, 20,170,144, 87,101,114, 23,239, 12, 89,107,133, 0, 56, 71,234,163, 14,236,134, 17,159,124,242, 9,238,223,191,143,187,247, +239, 99,209,247, 2,103, 15, 1,125, 47,220, 0, 82, 4, 64, 26, 15, 11,227,202, 51,152,107,179,202, 42, 45,201, 73,224, 98, 99, + 45,236, 98, 1,171, 40, 1, 17, 97, 28, 71,137, 6,238, 59,108,199,140,221,118,163, 97, 51,130,104, 4,157,234, 37, 7, 94,210, +234,198, 16,144, 99,130,115, 78,175, 49, 99,183, 27,145, 82, 64,231,172,132,200,140,220,200,213, 24,169,201,119,207,148,213, 7, + 94,152,235,177, 73,168,204, 89,162, 85, 37,184, 37,235,117, 34,241, 62,215,231, 83,140,105,228,201,239,189, 3,145,228, 83, 24, +103, 69,179,158, 4, 46,143,100, 49,198, 8,230, 88, 83,213,196,172,140, 53,189, 78,124,221, 51,137,131,104,202,178,123,207, 25, +112,148,100, 29,161,195,138,113,226, 17,111,148,148,156, 50,224, 76, 6,172,172, 88,192, 9,145, 13,160, 70, 55, 41,203,128, 85, + 66,190, 12, 17,140,115,122,254, 37,153,164,197,141, 24,189, 3, 98,182,184,216,101, 28,217, 13,236,210,225,200,247,120,235, 30, +225,252,193, 91,224,143, 63, 1,225, 9, 24,139, 27, 79,130,219,226, 93, 38,107, 87,170,126, 38,251,230, 53,255, 50,254,105, 55, +126,206, 40,209,160, 51,114,113,183,185, 40, 36, 81,115,194,161,157, 82,108, 8,100,200,114,193, 18, 39,133,238,243,148,190,214, + 24,139,112, 51,221, 48, 97,138,231,156,193,187,250,239,156, 0, 54,136, 57,162, 11, 18,193, 24,139,184, 95, 3, 84, 76, 78,200, +116, 8,123,178,196, 49,159, 35,110, 25,177,229, 18,231,140, 12,163,222,232,168,110,106,224, 4,182, 43,248,165,129, 11, 91,140, +105,178,252, 51, 44,223, 83, 81,130,134,205, 93,155,130,134,112,134,134,188, 70, 51,129, 65,201, 41,111,132, 73,245,242,145,186, + 29,177,194,106, 83, 34, 92,129,162, 36,205,110,242,111, 55, 74, 34, 98, 8,225,173, 70,176, 54,186,201,202, 59,200,215,253,240, +169, 38,192, 97,150,153, 77,205, 2, 36,166,136,147,123,175, 97,101, 19, 62,253,252,145,228, 70, 43,153,136, 64, 32,107,170,174, +188,157, 64, 51, 53, 78,112,152,204, 95,140,162, 4,117,199, 95,229,130,154,164,134, 61, 78, 65,123,141, 48,183,208,157, 14,101, + 37,202,128, 97,153,106,147,133, 25, 83,254, 37, 1, 46, 52,201, 21,247,191,254,139,228,181,240, 43,116,216,180,103, 65,203,229, +243,191,198, 76,191,169,172,243, 75,200,238, 55, 44,237, 49, 15,221,225, 57, 61,112,214, 0, 16, 12, 30, 63,249, 12,127,254, 91, +223,194, 47,127,251, 87,240,163,143, 63,198,225,225, 49,150,139, 5,206,207,207, 96,172,236,125, 59,231, 49, 12, 3, 54,155, 13, +146,234,148, 15, 86, 7,184,115,231, 46, 62,127,244,121,221,201, 59,239,229,239,179, 76,203, 34,107, 83,255,238, 28,176,219,137, +107,220,110, 24,128,164, 92, 6,202,210,176,133, 88,253,225, 87, 7, 43, 24, 50, 24,182, 91, 28, 29, 30, 34,167,140,103, 79,158, + 97,125,177, 22,217, 92,148,184,213, 28, 18, 76, 50, 24, 6, 49,141, 49,206, 85,252,174,160, 95, 69, 14, 70,202, 1, 74, 41, 87, + 11,227, 66, 60, 43,242, 40, 33,116, 57, 32,169,125,171,106,177, 99,202,120,244,248, 9,114, 74,120,235,157,119,209,247, 30,214, + 58,244,125,135,190,239, 37, 59, 30, 6,189,179, 8, 24,225,187,197, 68,158, 85, 99, 28, 38,209,176, 71,147,164, 8,235,245,234, + 59,135,126,185,196, 48,142, 48,198,192, 59,143, 24, 69, 78,135,156,177, 90, 29, 98, 59,142, 8, 97,128,239, 60,114, 38,120, 67, + 48, 78,226,103, 59,239, 49,176, 65, 76,161,222,215,206, 89, 56,181,225,222,108,118, 32, 36, 88,231,171, 2,192,146,129, 49, 84, + 45,116,165,233,200, 98,236, 66, 12,211,117, 64,136, 18,224, 69, 6,222,136, 22,188, 36,228, 69,150,120, 98, 83,188, 40,136,102, + 92,151,148, 89,210,219,200, 86, 52, 8,122,110, 24, 42,200,165, 64,233,220,202, 57,181,200, 27,146,251,169, 72,227,198,200, 48, +105,132,179, 70,161,111, 97,221,103,136,139, 39,177,240, 35,132,131,144, 32,126, 54, 81,228,209, 49,193, 27, 6,188,215,236,152, +140,156,169, 18,232,160,105,117, 49, 9,199,197, 35,195, 57,131, 13, 59,240, 85,196, 1,206,225,112,130, 55,123,224, 71,111, 44, +113,249,244, 29,116,155,167, 32,155, 53,216,101,110,174,252, 42, 3,117,203,153,163,150, 8,254,133, 98,149,111,250,218,235,175, +197, 97,119,137,112,150,241,140,167, 40,206, 84, 14, 23,221,107, 23, 15, 94, 2, 33,234, 53,177,152,166, 30,112, 68,138,192, 70, +253,221,139,246,180,212,239,132,214,122, 83,118,211,185, 68,165, 54, 78,107,201, 30,195,245, 9,171,184,197, 56, 16,214, 32, 52, +105,129, 58,201,102, 48, 60,176, 58,192,125,186,192,197, 46,227,121,214,184, 57,178,128, 81, 34, 27,231, 74,144, 16, 72,153, 1, +187,196,242,200, 96,121,117,133,199,107, 2,155, 86,179,140,185, 94, 89, 73,106,204, 34, 97,179,202,108, 76,117, 74,148,162,100, +137,166, 9,176,154,202,204,183,215,101, 82, 54,229,123, 20,154,203,133,108,119,109,183,172,150,177,218, 92, 12, 57, 79, 6, 64, + 10,103,182,206,126,173,255,122,241, 1,176, 52,201,211,248, 90, 0,206, 4,215,116,206, 97,115,254, 28, 59,101,167,154, 10,103, +203,142,171, 50,227, 83,154,201,205,168,245,142,203,211,207,227,150,137,217, 16, 25, 19,207,229,110,251,242,187,246, 86,173,228, + 62,204,107, 23,241,116, 79,237,187,187,190, 80,205, 70,123,255,189,176, 83,249,213,178,196,219,127,202, 53, 48,183, 5,189,240, +117,246,251,196,145,225,219,248, 47,175, 78,141,229,155, 91,145, 27,237, 42,245,131, 41,124,130,237,176,193,189,187,119,241,157, + 95,253, 53,108, 54, 27,196, 24,113,116,212,225,106,179,198, 16, 70, 28,172,100,247,191,221,170,129, 11, 32, 59,108, 34, 88,103, +113,255,193,125,108,182, 27,108,174,174, 16, 57, 42,220, 42,123,214, 24,163,220,215, 90, 44,162, 26,178,236,182, 3,214, 23,107, +145,219,232,100, 71,200,136, 33,193, 88,194, 24, 6, 60, 63,123,142,119,134, 1,236, 61,126,240,225,255,135, 31,253,240, 19,156, + 63, 63,195,118,183,171,141,109,214, 0, 18,102, 32,134, 8,223, 57,140, 33,170,183,188, 16, 74,161, 12,112,210,115,192,152,226, +145, 32,214,175, 49,230,249,133, 82,185,150,181, 78, 61,221, 19,188,119, 74,152, 4, 30, 63,121,138,229,114,133, 7,175,191,142, +190, 23,141,124,136, 17, 93,231,209,119,189, 52,154,142, 36,120,133, 25,139,229, 10,235,171, 45, 98, 88,163,235,186, 74,102,117, +222,195,119, 14,119, 78, 78, 96,188, 69,138, 9,222, 58,120,239,148, 36,215,225,234,106, 3, 32, 97,177, 92, 96, 23, 37,191,220, + 59, 33,232,229,156,193, 37,191,156, 8,203, 69,143,245, 85,212,189, 53, 33, 27,194, 48,102,196, 24,128, 44,138,159, 52,142, 24, + 67, 20,249,154,147,115, 76, 26,116, 89,135,112, 78, 72,156,225,173, 76,190, 68, 12,227,164, 73,115,198,106, 96,140, 1,147,129, + 3, 97, 80,107, 89,215,117,200,170, 64, 40,104, 69,142, 73, 28,229,220, 68,172,149, 0, 54, 11, 75, 92,243,210,235,186, 78,159, +197,162,113, 47,196, 55, 89,171,136,126, 61,115, 22, 61,189,209,247, 72,178, 71, 71, 74,232, 28, 16,225, 64,144, 66,206,208,236, + 0, 6,216, 24, 48,101,112,202,138, 16,106,254, 0, 39,120, 11, 56,103, 17,225,192, 41,194, 33, 35, 91, 43,103, 88,142,136, 36, +171,128,173, 27,112,104, 8,239,222,177,248,231,175,189,141,252,199, 31,195,240, 19, 16, 45,103,228, 55,190,133, 21,207, 47, 40, +236,204,165, 33,226,151,147,231,152, 94,225,144,155,255, 39,251, 19, 95,123,239,131, 16, 70,145, 37, 49,102, 90,111,162, 2,177, + 78,158,218,121,182,251,203, 85,239,189,223,113,100, 66,253,239,108,230,240,249,254,239,168,193, 36,110, 1,215, 51, 14, 56, 34, + 36,249, 62, 51,243,207, 32, 16, 89, 24,218,129,174,206,112,113,149,177, 43, 68,168,204,136,254, 62, 14,239,117,184,203, 3, 54, +246, 14, 86, 43,134,143, 17, 17, 70, 38,207,180,197,184,221, 98, 27,168, 26,153,114,133,236, 9,142,154,157,118,153,210, 27,253, +244, 53,127,245,150,236, 72,166,146,253, 74,209, 43,108,247, 34,183, 32,204,125,238,247, 77,104,102, 4,182, 90,160,185,217,251, + 55, 5,119,239,179,110,117,254, 25,197,122,119, 14, 73,243,222,239, 42, 19,116, 49,167, 48,198,168,247,188,174, 91,154, 7,177, + 68, 50,238,235,236,235,141,221,238,255,247, 76, 45,184,106,150,105, 6,165,243, 30, 11,253,166, 74,199,141, 36,204,182,123, 11, +106,244,241, 85,186,210, 72,181,104,143,241,215,242,203,248, 85,231,243, 61,179, 32, 53, 5,185, 81,159,142,198, 7,134, 94,204, +113,251,177, 1,254,125, 35,249, 87,109, 0,104, 98,251, 19, 17,158, 62,121,138,191,240, 75,127, 17,255,222,183,127, 5,159,125, +250,121, 77,200,138, 57,161,239,123, 32,171,132,173, 24, 65,169, 5,180,179, 86, 11, 8,176, 90, 29,192, 88,167,174,109, 25,222, +117, 8, 49, 97, 55,142, 72, 49, 32,196,128, 48, 70,132, 49, 96,183, 27,112,121,113,137,113,216,193, 88, 41, 38,219,221, 14, 41, +102,221,101, 11, 43, 28, 12, 44, 87, 43, 60,125,250, 4, 31,254,224, 67,156, 63, 63,195,102,187,145,248,208,204, 24,131,120,206, + 23,141,181,239, 28, 66, 20,247, 52,210,207, 6,141,207,129,209,169, 59, 39, 9,104,169,249,220,121,146, 85, 90, 35,210,171,130, +164, 37,157,214,173,177, 53, 13, 45,166,132, 24, 70, 28, 29, 29,193,185, 78, 76, 92, 82,196,178,239,225,187,190, 50,234,141,194, +254,198, 90, 68,141, 34,117,206, 33,140, 35,188,247,112,206, 73,192, 75,223, 87,148, 96,185, 88, 96,177, 88,193, 90,139, 97,140, + 56,123,126, 42,246,173, 65,156,249,156,151,162,239,156,151,221,188, 53, 18,174, 18, 34, 66,138, 24, 7, 41,204, 80,206, 66, 74, +141, 75,159, 42, 1,202,202, 67,154,157,164, 36, 62,174,254, 24,214,217, 42, 59, 11,138,184,148, 64, 37, 5,100,235,144, 82,244, +231,176,170, 55, 47,138,156,130, 34,130,181,201, 51,202,183,202,211,181,182,106, 80,195,220,160,136,166,162, 27,164,176,122,249, +122, 89, 87, 24, 25, 75,180,216, 23,164,197, 26, 6,145,133, 53,162, 65,151,247, 33,114, 54, 11,134,117, 6, 67, 54,136, 99, 16, + 56, 30,114, 63,192, 24, 37,176,105, 82,159,149, 70, 53,195,106, 16, 18, 16,217, 32,198, 12,147, 71,116, 6, 56, 94, 88,156,118, + 7, 88,159, 57,184,237,103,128,203,168,137,229,213, 65,147, 94,249, 81, 39,180,235, 87, 82,169, 26, 93,211,188, 95, 63, 11,249, +214,131,161,124, 89,223,247,176, 63,241,181,119, 62,136,195, 88,217,139,185,129, 24,147, 90, 75, 86,146, 4,113,157, 76,145, 19, + 40,102,132,100,177,171, 38, 45,109, 24,203,190,171,248, 84,136,120,150,149, 93, 96,114,128,242, 14,105,136,216, 36,249, 65,229, +235,205, 62,132, 81,114,218,213,217, 12,245,247, 37,152, 52, 34,133,140,129, 28,122, 27,193, 33, 97,204, 2, 61,137,227,157, 16, +217,102,218,114,162,249,126,154,230,103, 63,191,104, 18,226,150,229, 95, 71,213,234,144,102,201,192, 27,139, 78,245,105,133, 24, +200,250,218, 77, 35,121,175,196,186,230, 26,229, 98,224,211,222, 12, 69, 2, 72,243,226, 60,237,203,105, 38,152,158, 72,109,183, + 64,205, 5, 30,171,178, 51,204,137,100, 57,205,120, 29,173,165, 43,183, 70, 58,123,251,229, 25,220,188, 23,255,107,136, 94, 10, + 58,241, 62,243,189,236,206, 27,167, 58,236,201,214, 12,209,124, 88, 46,239,139,219,152,182, 47, 46, 22, 29,199, 17,239,190,247, + 37,220,189,115,130,211,211,103,181,145,104, 33,247,253,198,250,165,228,186,153,172,235, 38, 64, 15,123,176,124, 33, 6,208, 43, + 47, 14, 90, 37, 65,202, 25, 57,101,252,250,111,252, 6,222,126,231,109,156, 93,156, 55, 80,134, 60,255, 97, 12,141, 92, 81,224, + 90,107, 13, 98, 76,120,246,244, 25,158,159,157,129,153,113,116,116,136,123,247,238, 33,197,132,231,103,103,194,113, 73,161,106, +139, 67,212, 92,245,237, 14,195,176, 21, 51,152, 33,168,124, 42, 33,102,157, 50,141, 81, 54, 53,227,236,236, 12,167,167,103,216, +237,118, 24,195, 78,159,113,125,102,179,200,216,164,217,212, 44,237, 40,154,106,227, 68,195, 93, 10, 23,152, 97,156,236,238,119, + 10,211,151,233,209, 90, 43, 59, 88, 98,120, 39, 5, 19,200,162,219, 38,160,235,188,230,190,163,230,178,143, 33, 74,168, 75,215, +193, 57,135,190,239, 65,134,224,140, 65,215,247, 72, 49, 98,209,245,112,174,171,161, 41,206, 58, 37, 95, 50,150,203, 37,124, 39, +150,173,197, 97,206, 26,217,205, 91,103, 17, 98,198, 39,159,126,138, 56,110,225,187, 30, 49, 8, 34,177, 90, 46, 96, 92,135,113, + 24,176, 84,207,251,113,220, 33,170,108, 14,224,202, 15, 64,185, 78, 41,169,149,179,198,169,210, 20, 89, 44, 22,177, 9, 73,211, +221, 88,215, 42,204,185, 66, 95,210,160,155,170, 4,152,220, 32, 49,249, 70,168, 44, 53,107,250, 94, 98, 18, 52, 7,168,197,187, +220,115, 37,213,205,212, 67,171,209,157, 52, 19, 59,233,158, 60,169,100,177,144,239,234, 57,167,223,231, 72, 27, 56, 50,152,162, +136, 88,217,242, 73,173, 98,229,122, 88,203, 96,114,240,196,112,222, 0,198, 43,139, 63,195, 34,235,106,145,164,150,137,173, 34, + 8,140, 8, 69, 82, 83,192, 1, 50, 14, 15, 51, 30,185,251,136,103, 12, 59, 62,134, 98,248,115, 46,205, 23, 12,129,162,189,195, +123,170, 65,244, 5,167, 1,154,253,169,235,123,216,175,127,229,157, 15,118,195, 0, 78, 89, 44,249, 50, 16,117, 39,109,102,188, +239,169,216,165, 60, 34,229, 37,198,163, 55,224, 94, 3,254,132,207,112, 49,227, 42, 17,246,228,131, 51, 86, 88,217,183, 82,195, +160, 54,212, 58,144,145,122,195,151,221,113, 41,234,101, 67, 72,117, 45,144,203,206,172, 50,217, 9,196, 35,198, 33, 97, 96,192, +196, 29,182, 67, 22,137, 82,245,152, 23, 59, 69,163,127, 54,197,112,102,111,234, 77,154,157,203,173, 75, 7,239,245, 82,165,192, + 18,237, 73,210,228,195,113, 5,146,111, 26,132, 9,130,158, 10,186, 37,163,112, 51,166,152,196,102,226,221,207,226,182,123, 8, + 71,221, 87, 55,240,251,172,224, 19,221,172,111,214, 23, 86,204, 99,166, 21, 66,195, 15,208,201,134,148, 32, 83,183,178,181, 48, + 78,215,113,134, 64,204, 18,209,168,233, 80,139, 51,224, 92, 86,215, 22,248,107,197,178,133,175,153,103,157, 43, 55, 1, 64, 21, + 43,170,154,243,235,247,162,249, 2, 59,244, 23,193,239, 91, 13, 47, 33, 67, 55,180,224,215,133,171,116,107,193,221,103,174, 19, +232, 70,217,204, 94, 62, 95,245,135,124, 69, 54,128,154,204, 60, 63, 61,197,187,239,189,139, 95,251,143,254, 99,108,183, 59, 97, +164,119, 30, 33, 6, 60,126,244, 8,219,237, 6, 7,135,135,149, 64, 38, 12,244, 92,225,239,139,203, 75, 60,121,252, 8,214,138, +117,169,247, 30, 7,171, 67,108,182, 27,196, 56,136, 76,172,239,209, 43, 75,252,242, 98,141, 49,140, 24,135, 65,120, 36, 58,205, +150, 32,150,242,186, 68,182, 36,228,183, 16, 2,194, 56, 34, 40,129, 44, 37,133,222, 53,201, 80,118,172, 18,226,145,115, 66,223, +123,120,223, 11,124,174,187,108, 49,164,113, 24,199, 88,139,124,113,181,180,122, 32, 75,129,117, 58,217,231,230,217, 21,215,196, +114, 95, 58, 43,208,252,102,179,197,110,216, 32,133,168,147,167,129,177,242,154, 39,255,247,140, 48, 6, 45,174, 25, 41, 69,172, + 22, 11,153,158,220, 84,204, 37, 3,221, 84,105,231,249,229, 37,158, 61,121,162, 58,107, 33,171, 25, 35,168, 80, 74,242, 57, 88, +107, 48, 4, 49,149,241,206,195, 24,171, 69, 85,174,209, 24,130,186,237,229,154, 57,239, 69,127, 38,174,123, 90, 96,135, 65,136, +107,204, 98, 38,100, 84,254, 43,206,113, 86,153,245, 4, 34,167,233,111, 66,146, 35, 69, 51, 50,207,179, 27,138,124,175, 34,113, +237,254, 92, 17,204,226, 52,103,202,239,104,221,203, 21, 85,129,242, 24, 12, 4, 65, 17, 68,140, 38,131, 26,107,193,176, 26,150, + 35, 70, 58, 5,149, 41, 43,142, 12, 2,107, 35,229, 12, 96,157, 7, 96,148,237,110,166,232, 82, 13,133,145,192, 24, 69, 19,160, + 74, 13,121,145, 72,204, 24, 98,198,110, 76,184,155,119,232, 78, 24,143,241, 26,248,249, 22, 38, 63,215,117,130,153, 65,116, 68, +179,197,215, 45, 69,250,250,177,193, 45, 66,123,109, 90,167,151,254,156,186, 78,237,122,216,159,252,234,219, 31,140,195, 32,242, + 9, 54,146,130, 83,164, 78,205,137, 90,161,106,206,224,100,144, 14,222,199,240,165, 14, 63,121,247, 20, 95,191, 76,248,112,195, + 24, 10, 51, 30,152, 77,191, 76, 83, 87, 38, 33, 1, 84, 93,220,186, 2, 1, 55,197,142, 20, 21,160, 44,129, 41, 65,242,128,196, +219, 93, 39,175, 92, 39,228,189,196,182, 10,151,155, 6,154, 45,141,129,108,153,103,238,103, 77, 38,123,241,149, 55, 13,149,153, +107,171,113,211, 69,156, 87,220,114, 40, 56, 66,125,141, 69,198,149, 48,119, 77,115,181, 56,106, 42,146,178,193,103,150,169,251, + 48, 52, 79,176,188,221, 91,223, 22, 63, 1,218,163, 97,240,181, 98, 62,239, 83,202,123, 32,174, 86, 51,179, 90, 97,218,247, 79, +211, 74, 6,134,196,163,153,105,150,201, 70,160,217,100,250,226,200, 89,190,102, 46, 99,154,175,173, 17,180,229,221, 80, 19, 27, + 78,251, 58,142,121, 66,217, 76,254, 70,237,178,103, 94, 23, 95,181,184,179,178,245,119,187, 29,118,187, 93,133, 51,111, 42,170, +212,120, 49,123,231, 85,139, 29, 91, 69,255,181,223,251,210,135,159,113, 93,162, 49,211,210,221,178,220,215,206, 57,140, 1,159, +127,254, 57,190,243,157, 95,197, 55,126,254,155,120,252,248,177,154,197, 88,172,175, 46,176,221,108,112,126,113, 33,210, 59, 3, +120,133,154, 89,181,200, 70,225,247,113,216,225,206,201, 29, 44,151, 75,108,183, 59,128, 8,157,247,184,188,188, 68,215,117,224, +156,177,217,136,235,220,229,229, 26,227, 48, 34,196, 8,239, 28,250, 69, 15, 67, 34,123, 43,147, 49, 64,232, 58, 95,159,157, 49, +140,250,247, 42, 69,211,174,205, 59,167,140,237,140, 16,146,106,194, 1,231, 58,248,174,155,238,117,205, 73,151,232,213,164, 33, + 51, 50,205, 90,109, 32,178,190, 47, 97,226,167,106,133, 10, 24,101,132, 27, 53,209, 17,119,184,194,166,143, 49, 99,183, 27, 37, +113,110,148, 53,195,110, 55, 8,242, 16, 3, 6,109, 74,118,195, 0,206, 9,135,135, 7, 88,173, 86,112,206,131, 33,153, 12,214, +154,234, 17, 79, 0,198,144,241,228,241, 99,228, 52,130,180,168, 26, 99,144, 51, 99, 24, 6, 16,103,244, 93,223,196, 38,147, 90, + 64, 71,132, 16,165,152,199,160,211,176, 32,151, 99, 8, 26,162, 68,122,253,184, 54, 55,146,178, 23,213,152,101,178, 40, 22, 39, + 55,145, 10, 18, 19,188, 70,160,102,101,185, 23, 59,239, 49, 68, 49,177, 65,163,182,129, 56,226, 65, 67, 86,140,238,201, 11,140, +110,173, 21, 89, 89, 46,134, 44,102,118,155,146,145, 34,155, 99,128, 53,172, 58,119, 77,187, 83,159,123,217, 97,103,181,157,133, +254,110, 97,202, 27,102, 56, 39,197,152,213,112,203,121, 21, 83, 42, 10, 33,126,240, 25,214, 48,216, 56,196, 40,104,115,113,158, +179, 52,201,120,193, 18,110,102,172,193, 8,135,205,142,113, 20, 54,232, 14, 19,206,236, 61,228,117,132, 77, 23,210,216,151,247, +194,170,128, 34,254,177,198, 6,186, 70,201,121,245, 19,170,253,141, 93,215,195,254,196,215,222,253, 96, 28, 54,200,217, 3,221, +107, 24,239, 69, 60, 92,140,184, 55, 0, 79,147,122,203, 98,202, 55,143,121, 68,118,111, 99,120,247, 30,190,250,224,251,248,153, + 79,174,240,127,125, 74,248, 40,147,232,217, 91,253, 55,209,108, 79, 80, 38,220, 98,218,226,245,235, 98, 83,160,139,141,107,134, + 1,249, 14, 71, 29,112,136,140,144,117,202, 39, 3, 56, 11,103, 50,136, 61,176, 88,225,192, 7,228,144, 17,120, 14,201,206,247, +191, 19,188, 93, 38, 82, 57,248, 77,117, 60, 67,181,155,149, 15,135,247,226, 48,247,229, 69,133,209, 95, 38, 86, 91, 12,111,244, +117,138,225, 65, 18,147, 25,210,223, 3,154, 13, 90, 5,134, 42,123,163, 10, 31,171, 52, 47, 21,123,220,166, 49,106, 87, 2,118, +182,118,161,198,175, 31,117,157, 82,247,238, 77,140,172, 33, 51,197,116, 98, 10,116,161,189, 9,121, 10, 92,153,195,235, 37,241, + 46, 99, 30,141,187, 31,171,199, 55, 48, 68,233, 6,136,125, 95,147,110, 72,249,242,140,153,156,178,250, 28,211,237,252,208,118, +235,204,252,226,157,253, 23,121,252,140, 30,246, 47,134,185,219,134,161,177,185,189,230, 18,201,215,174, 40,237,197,224,222, 40, + 99,155,121,182,211,237, 15,121,147, 26,197, 57,227,233,211,167,248,203,127,249,175,224,215,255,211,255, 12, 79, 79,159,226,232, +240, 16, 0, 97,189,190,168,197,169,152,185,156,159,157, 99,187,221, 2,160, 73, 83,237, 28,188,243, 98,109,234, 59,228,148,240, +236,217, 83, 92, 94,174, 53,190, 84,246,157,155,205, 6,231,231, 23,184, 92, 95, 97, 28, 6, 12,195, 88,189,194, 55, 27, 73,107, +243,206, 85,125,180, 49, 6,198,217,154, 47, 62, 12,131,152,207, 40,215,131,136,100,215,111, 8, 67, 24, 43, 50, 39, 48,183, 17, + 25,157, 94, 26,103,109, 45, 2,153,179, 22,219, 88, 85, 0,164, 49,175, 33, 68,181, 78,144,224, 19, 64,116,237,133,157,221,198, +153,150, 78, 82, 76, 95, 36, 26,212, 26,131, 16,165,144,131, 89,118,224, 57, 85,191,247,148, 18, 22,189,199,189,251,247,213, 79, +157,209,119,157,104,243,173,232,187, 57, 75, 56,205,229,122,131,167, 79, 30, 9,164,172,178, 46,239,188,162, 10,132,126,177,148, +253,180, 66,235,211, 26, 37, 33,164,132,172, 82,181, 82,232, 83,148,255, 46,211,185, 60, 83, 33, 37,109, 0, 34, 56,199,170, 53, + 79,172,242, 51, 35,186,114,112,214, 64, 25, 65, 48, 98,102,140, 97, 4,169,159,124,204, 16,114,153,179, 18,140,196, 73,136,143, +214,168,129, 25,107,145,148, 81,171, 20,106,103, 1, 99, 61,230, 62,161, 60,227, 15, 37,150,157,189, 37, 33, 83,178, 66,225,165, +113, 22,231, 95,201,251, 8, 33,195, 34, 86, 59, 94,214, 76,137,105,181,167, 33, 97,169,192,254, 70, 57, 4,170, 89, 87, 57,156, +179, 22,100, 61, 50, 83, 77,212, 43,104,162, 45, 48,191,234,217, 83, 98,220, 49, 17,203, 35,131,179,238, 62,226, 37, 96,226,115, +133,137,219,224, 50,170,107,210, 31, 91,158, 86,237,190,249, 21,207,167,233,220,238,187, 30,246, 95,251,218, 91, 31,236,182, 35, +216,222, 69, 60, 54, 56, 92, 94,224,157, 45,227,108, 75, 56, 7,193, 21, 91, 19,189,248,158, 44,128, 17,216, 62,129,121, 58,226, +147,231, 22,159,176,129,181, 42,195,210, 98,206,104, 73,110, 84,167,172, 50, 9,187, 2,199, 23, 75, 21, 38,176, 91,194,118, 25, + 29,203,222, 39, 67,178,222, 61,103, 12,153,170, 6,157,201,192, 80, 6,165,128,144, 68, 30, 83,227,180,155,230, 96, 70,176,187, +246, 58,218,162, 39, 83,178,109,137, 85,149, 48,151,193, 53,130,122,210,219,211,222, 36, 93, 66, 80, 76, 3,217, 39, 48, 88, 15, + 1,230,180,183,155,167,185,236, 24,147,211, 93,141, 40,165, 9,125,104,119,174,212,196,195, 86,104,184,204,180, 13,196, 77, 77, + 52, 41, 55, 30,106, 85, 87, 79, 60,243, 97,161, 27, 10,101,187,147,111, 11,166,209, 38, 38,227,246,232,211, 34, 93, 51, 55, 77, +181, 55,222,208, 13,171,190, 54, 90,172,210, 66,105,148, 80,114,232,247, 96,122,218,223,233,191, 96, 31,117,179,141,234,205,175, +233, 54, 9, 91,171,220,104, 53,168,183,125,127,219, 42, 82,171,101,125, 33,183,142, 39, 4,130,246, 4,241,183,244,237, 19,170, + 65,120,252,232, 49,126,246,103,126, 22,191,253, 59,191,139,205,110,139,206,123, 28,159,220, 65, 74, 9,207,158, 62, 21, 27,214, + 49,194,123,143,156, 51,182,187, 1,151,235, 53, 46, 47, 47,112,231,206, 29,156, 28, 31, 97, 24,196,219,189,235, 58,140,227,128, +179,243,231, 88,175, 55,149,160, 5, 0, 41, 68,153,210,159,157, 34,134,128,174,115, 26, 0, 98,165,113, 24, 6,217, 41,235, 52, +153,121, 90,147, 48, 50,198, 48,130, 21,110,103,117, 3,178, 86,194, 56,182,219, 29, 82,146,131, 60,115, 70,138, 25,206, 89,244, + 93, 55, 11,178,177,226,108, 82,157,238, 74,226, 88,106,236,121, 83, 78, 21, 10,159,216,241, 84,243,224,203,207,115,206, 78, 77, + 28,203,196,105,213,227,220,104, 88,139,184,172,105, 67, 64,140,152, 50, 58,107,240,230,155,111,162, 95, 44,101,199,109,141,158, + 1,220,108, 77,196, 1,237,236,236, 28,219,171, 75, 56,239, 43, 66,215, 45,122, 93, 1,200, 19, 24,194,136,164,144, 63,169,155, +159,144, 4, 7, 49,138, 73, 42, 39, 76,218, 88,160, 88, 72,139, 79,124, 74, 81,119,232,226,254,198,156,171,225, 84,212,194,103, +157, 3,242, 52,124,101, 13, 59,202,186, 71, 51, 68,240,222, 2,100, 43,210, 97, 12,193,169, 46,190, 26,203,104, 51, 94,210,209, + 66,146, 93,183, 33,163,114, 65, 51, 35,208, 74, 35,192, 48,198,129,217,136, 95,137, 53,123, 58, 82,141,101, 37, 73,231, 51,148, +225,157,149,196, 55, 40, 84,223, 76,255, 69,145, 83,206, 55, 75, 89, 72,114,153, 42, 71,195, 32, 11,122,206, 4,103, 4,137, 50, +122,125,141,102, 18,196, 12,228,152, 97, 33, 42,141,192, 22,135, 57, 97,113,192, 56,243,119,145,214,128,141,103,162,191,191, 41, +197,129,232, 11, 79,237, 19,242,202,205,120,208,238, 84,233,197,231, 25,203, 78,221, 25, 13, 99, 73,121,135,188, 27,225, 54, 9, + 79,174, 8,159, 37,192, 22, 12, 88,242,240,176, 48, 9,125,202,216,166, 1,188,206, 56, 77, 14,143,189,193,194, 10, 31,208,226, +134, 21, 52,205,201, 87, 89, 33, 31,195, 64,224,134,248, 6, 70, 74, 35, 12,101,152, 44, 5,135,210,136,171, 72, 56, 87,251, 89, +203,226, 16, 71,105, 68,164, 14,180,236,113,200, 27,140, 67, 70,104,118,189, 86,127, 71,158, 21, 59,136,219, 91, 37, 4,170,148, +162, 4, 21,148, 92,247, 25,149, 89,136, 22,206,137,113, 77, 72,141,244,140,230, 81,176,173,108,169,104, 98, 83, 78, 48,253, 17, +142,151,140,245,217, 57, 6,150,160,136, 50,112,217,198,168, 38, 53, 70, 55,164,186,244,145, 27,119,236,242,187,136,107,161, 45, +217,237,243,106,198, 66, 34, 68,172, 0, 0, 32, 0, 73, 68, 65, 84,141,135,187, 92, 11,102,190, 6,241,114,221, 69, 81, 77,151, +106, 19,227,102, 90,241,253, 48, 80, 37,240,181,251,255,138, 20,112,158, 61, 92,222, 90,120, 67,216,198,116, 13,102,226, 23, 22, +193,146,177, 76,115, 61,251,204, 53,110,242,186, 39,141, 11,110, 67,118,218, 56, 92,162, 41,239,248, 69,197,243,166,194,254, 50, + 77,250, 13, 91,132, 87, 48,169,161,253,214,238,246,224,150,246,195,125, 21, 23,170,178,162,209,159, 42,187,105,198,175,252, 7, +255, 62, 96, 8,222,119,112,206, 99, 24, 2, 58,223,193, 90,135,225,242, 82, 34, 43,115,210,233, 88,152,199,222, 26,156,159,158, +234, 4, 43,112,170, 76,198,140,139,139, 51, 57, 68,188,199,152,162, 24,204,140, 35,206,207,206, 17,198, 17, 41, 69, 16,201,196, +151, 82, 64, 24, 70,113,115,243, 29,114,138, 2, 41, 51, 11,113, 43, 38,137, 43,165, 98,157,202, 53,214, 87,166, 96,217,235, 23, +169,217, 56, 6,116,125,143,197, 98, 89,179,194, 25, 19,108, 93, 98, 84,131,122,157, 23,118, 58, 50,171,135, 57, 99,185,232,116, +170,142,176,206, 40,178, 75,245, 18,123, 39, 19, 43,106, 84,176,176,201,115,150,223,211,249,165, 72,235, 52,153, 46,198,136, 16, + 3, 14, 87, 75,188,254,240,109,244,139, 21,118,131, 92,135,190,243,218,100,168,145,140,106,235,119, 87, 59, 92,173,207, 97,157, +236,189,193, 50, 29,142, 99,192, 56,238, 64, 44,174,119,222,139,116,175,236,202,167,117,155, 92,159,168,215, 15,234,163,158, 70, + 77,109,203,146,113,159,147,228,123,148, 96, 22, 9,159,145, 45,116,167,254,248,172,205, 71, 74, 89,221,247,196, 41,212,104,231, + 26, 99, 70,103,178, 42, 10, 8,206, 25, 69,251, 12, 56,201,132,205,186, 63,119,162,199, 21, 73,156,183, 72,129, 65, 41,192,194, + 79,195,133, 49,234,245, 81,144,185, 12,239, 13,114,242,200, 49,194, 56,131,172,124, 0, 57,157, 5,181,233,188, 69,102, 7, 70, +170, 78,149,168,140,250,140,206, 2,201,247, 24,135,136, 20, 89, 16, 17, 43,201,128, 60,237,121, 17, 51,129, 18,195,154,164, 92, + 2,131,200, 25,208,255, 54,194,130, 67,198,194, 6, 24,223, 35,193, 32, 37, 96,151, 2, 94, 55, 17,233,161,195, 71,252, 62,242, +199, 1, 38, 61, 2,108,127,243,153,178,239,253,254,133,203,123, 99,116,134,201, 8,109,158, 69, 61,255,199,101,157,126,252,120, + 1, 62, 35,156,102, 73, 84,243,149, 85,100, 65,222,162,243, 25, 71,153, 65,137,177, 99, 49,224,119, 6,232, 40,131,179, 17, 73, + 85,177,169,211, 98,147,234,185,212,228,176,171,141,106,108,118,188,172, 81,171,148, 71,196,209, 32,106,156,106,177,148, 45,178, +186,204, 77,182, 58, 8,100, 59, 44,220, 0, 10, 2,207, 3,242, 33, 6, 50,112,214, 73, 7,152, 18,130, 54, 17,208,236,118,178, + 4,171,114, 11,106, 2, 2, 50,151,137,190,152,208,136, 17,131,181, 70,180,248,152,244,209, 21,146,110, 8,133,104,228, 87,197, + 77, 45, 15,107, 92, 4,209, 93, 82,149, 97,105,164,108,121,111,153,225, 12,193, 48, 35,228,140,108, 38,195,150,216, 88,180, 86, +139, 93, 61,240, 91,185, 97,158,115, 18,235, 52, 95,230,192,180,103, 77, 74,109, 24, 10, 55,179, 34,205,111, 24,158, 21, 35,158, + 28, 20,184, 56, 3, 50,198,113, 0,145,133,243,118,198, 47,200,153,103,210, 57,190, 93,210, 61,175,101,152, 2,107,172,177,234, + 77,157,102,133,214, 26,211,196, 18, 78,218,125, 96,114,224,163, 23,144, 29, 95,229,117,188,146,114,124,223, 22,191,121,206, 94, +220, 20,236,155, 30,223,174, 98,227,253,132,183,219,138, 59, 77,156, 2, 67,132, 71,159,127,142,127,231, 23,127, 17,255,214,159, +250, 83, 24, 67,130,181,190,186,152, 93,174, 47,177, 88, 44, 4,162,141, 65, 10,164, 21,120,157, 7,217,241, 62,125,118,138,139, +171, 45,190,252,254,151, 4,150,205, 66, 10,155,224, 9,198, 56,238,176,185,218, 98,216,238,132, 4,199, 50, 17, 14,105,212,100, + 47, 65,211, 68, 34, 38, 12,108,129,203, 13,152, 28,134, 16,234, 46,148,140,133,133,176,221,173,179, 8, 99,128, 49,162,243,102, + 72, 97, 13, 99,196,209,209, 33, 14, 15, 15,112,118,118, 38,211,179, 78,234, 67,144,172,246,210, 28, 26, 50, 53,201, 48,229,140, + 24,138,182,158,148,236, 40,127,182,222,104,158, 69,214,251, 77,149, 53,137,107,147, 83, 98,140, 1,129,223,129, 17,198, 57,108, +174,182,240, 62, 98,177,232,113,255,222, 61, 28, 30, 29, 99, 80,141,191,119,162,203, 47, 97, 40,226, 27, 47, 38, 45,187, 97,167, +104, 66, 67,210, 77, 73, 19,212,104, 98,203,147,129,211,181,130, 52, 37, 73,174, 93,215,227,252,252, 2,200, 73,178,228,179,160, + 29,169,176,210, 53,129, 46, 51, 99, 12, 73,108,128, 21, 82,146,244, 51, 93,222, 25, 53,203,225, 56,201, 79,173, 22,186, 24, 36, +155,156,128,221, 24, 38,178,177,177, 53, 21,174, 16, 41, 89,209, 1, 88,139, 24, 51,172, 1,156,177,128,117,224, 28,235,121, 91, + 9,175, 6,176, 44, 62, 40,148, 50,156, 35, 36,178, 69,133, 86,221,216,202,153,228, 12,129,201, 34,197,140,156, 0,147, 18,200, + 42,251, 62,101, 49,151,177, 36,245,168,146,248,178, 28,180, 86, 62,183,206, 18, 18, 92,141,158,205, 40, 4,189,168,251,113,141, +221,102,134,119, 25,214,247, 96,242,176,156, 97, 28,192,240,216,129,240, 22, 39,140,111, 56,124, 50,126, 21,248,108, 0,241, 57, + 64,221,139, 75,243, 77,197,248, 85,124,103,168, 13, 79,219, 83,129, 85,185, 13,207,200,211,206,150,138, 0,217, 39,117, 84, 38, +163, 98,241,106,145,145,177,224, 12, 36, 96, 83, 2, 67, 96, 42,147,157,117,239, 27,180,149,136,104, 93,115,116, 39,165, 59,156, +178,219, 29, 27, 66,214,196,109, 39,100,163, 38, 45, 69,130, 2, 11,246, 30, 61, 70,196,200,146,252, 67, 0,120, 64,186,220,225, + 41,140,102, 54, 51, 64, 94, 10, 75,220, 96,179, 73, 72,222,227,200,201,132, 15,226, 58,181, 91,107,225,114, 70,136, 83, 76,106, +226,234, 69, 49, 3, 70,145, 71, 12, 91,158,246,222,152,236, 92, 9, 19,131,158,247, 32,211,210, 95, 34, 39,140, 89,229, 49,152, +199,153, 38, 22,189,229,193,114,137,183,238,244, 56, 52, 25,143,206,214,248,228, 42, 2,198, 84, 37, 64,153,168, 91,200,215,170, + 46,222,233,103, 58,166,172,211,179,102,158,235,238,177, 77,119,203,179, 27, 77, 83,212,120,158,184,150,184, 13,142,189,129, 32, +216,240, 15,178, 58, 73,189,249,230,187, 24,119,151,120,126,118, 14, 82,171, 77, 3,160,211, 93, 93, 72,218,140, 20, 98, 96,179, +219,167, 91,138,189, 76, 89,211,110,189,210,122,202,251,111,230,220,226, 88,151, 42,225,113, 74,247,123, 85, 93, 55,223,212, 89, +220,246,157, 13, 18,112,173,214, 50,223,210, 62,180,168,193, 11, 92,224, 53, 96,227,252,236, 76, 92,196,250, 14,199, 71,199,122, +152,242,220,162,234,134, 99,196, 24,131,199,143, 62,195, 87,190,250, 85,252,151,127,245,175, 97,181, 58,198, 48, 72,238,185, 49, + 6,155,205, 6,219,205, 21,172,147, 60,240,245,250, 10,199, 39,135,176,150, 16, 2, 87,253, 50, 89,139,237,110,131,211,211, 83, +188,118,255,181, 26,226, 65,100, 36, 69, 77,245,210,219,205, 22,163,146,198, 88,139,120,201,247, 46,135, 77,215, 21,127,248, 4, +239, 28,162, 22, 58,178, 18, 65,234, 53,249,141,213, 0,164, 88,165, 10, 89,205, 98, 24,130,238,195, 25,222,137,247,186, 49, 6, + 73,211,189, 82, 76, 85,206,196,202, 24, 79, 81,119,232, 80,216,213, 26,244,125, 87, 33,218,178, 14, 40,247, 87,201,102, 7,237, + 37,231,105,110,123,225,147, 20,214,123, 71,132,152, 12,250,222,227,181,251,247,112,124,114, 7, 49, 68,221,205,219,170, 49,207, + 57,107,160,139, 54,235, 57,227,106,125,169, 4, 54,225, 0, 88, 43,103, 89, 78, 89, 27, 39,101,237,171,197,110, 84,142,129, 49, + 6, 41, 68,140, 26,240, 18, 50, 48,108, 55,147, 20, 57, 37, 4,149,164, 21,255,123, 82,253, 54,212,200, 42,229, 92,147,215, 72, +147, 47,189,181,178, 42,225,172,228,198, 18,159,154, 20,178,151,157,122,239, 45, 64, 14,227, 24,192, 57,194,123, 43, 13,126,226, +218,204,167,196,138,174, 72, 3, 16,217,136,116,204,104,227,164, 97, 55,229, 62,102,229, 80,180, 73,142, 73,246, 48,138,196, 24, +109, 14, 51,144, 19, 50, 24, 99, 2, 40, 69,241,217, 7,129,163,190, 39,206,176, 96,144, 34, 48,202,145, 19, 87, 81,125,182,170, +110, 62, 9, 74,192,100, 96, 25,200, 86, 62,207, 14, 65, 26, 61,146,156,251,164,250, 60, 71, 89, 20, 5,108,240,186, 75, 56,189, +183,192,238,236, 33,236,246,162, 20,154, 23,158, 41, 51, 95, 19,166,151, 20,118,158,147,167,246,148, 53,251,120, 95,203, 84,112, +220,120,153, 27, 22,203, 85, 86,253,119,113,139, 67, 48,216,229, 73,252, 31,152,234,132,152, 10,156,222, 20,141,150,196,149, 49, + 57,129,181,199, 88,141, 13, 45, 44,117,158,152,232, 78,181,241, 1, 64,228, 4, 14,140,145,248,230,137,206, 88,144, 99,152,148, + 17, 83, 70, 90, 30,227, 75,175, 63,192,189, 21,131,207, 62,197, 15, 30, 49, 46,141,146,216,136, 96, 17,145,134,136,168, 69,129, + 56, 33,153, 30,139,222,192,132, 29,118, 81, 58, 87,106,101,111, 84, 17,158,137, 17, 95,156,227,184,101,215, 55,233,182, 90,125, +173, 53,160,220,196,192, 52,118,175,156, 69, 19,249,240,181,187,248,169,215, 87,240, 57,224,193,202,130,126,116,134, 31,110, 83, + 13, 82, 40,123,168,164, 89,199, 86, 81,132,196, 4,103, 0,195,210, 61,151,157, 93,209,166, 38,190, 89,113, 85, 83,187,244,115, +172,132, 61,158,123,163, 23,176, 38,237, 19,223, 10, 9, 47,103, 36, 6,222,123,255,125,156, 63,250, 99, 60,122,252, 12,139,165, +171,205, 1,211, 20, 96,210, 58,186,205, 12,189,136,102, 78,117,197, 56,195,168,107, 79,133,223,185,189,133, 77, 37, 51, 18,243, + 20, 41, 94,120, 18, 53, 95,126, 90, 43,188,108,234,230, 47,226, 19, 51, 83, 78,220, 92,195,111,247,153,162, 91, 95,143, 49, 6, +235,245, 26, 23,231,231,248,153,159,253, 6,190,241,141,111,224,251,223,251, 30,126,239,247,254,190,228,139, 91,115, 43,156, 71, +100,112,126,254, 28,214, 58,252,245,223,250, 45,188,255,254, 87,112,181,222, 2,106, 14, 18,198, 17,151, 23,103, 48,206,226,217, +147, 39,184,184,184,196, 98,185, 64,136,242,108, 76,236,126,174,158,227,231,103,103, 56, 58, 60,196,114,181, 66,136, 81,101, 94, + 59,140, 97,168, 65, 42, 99, 8,216,237, 74,170,154, 65, 66,172,242,167,178,173, 45,105, 91, 89, 95,103,138, 9,189,247,117,138, +143, 49, 41, 81,137,106, 76,173,213,152,209, 97, 28,171,123, 92,167,223,211,242, 26, 88, 27,136,164, 69, 65,208, 84, 22,255, 12, + 69, 14, 11,211,157,148,192, 70,141,196,178,174,207,161,214,178, 78,220,175,140, 18,232,140, 18, 56,203,123,138,137,100, 90, 12, +132,195,131, 21, 78,238,222,213, 70, 87,166,125,209, 83, 43, 36,106,157, 6,250, 0, 32,135,243,231,207,176,190,188, 80,221,124, +153,222, 1,231, 52,252, 69, 29,237,162, 26,244, 8,236,174,197, 47,102, 49,250, 73,161, 42,124, 24,144,166, 45, 6,140,195, 40, +175, 81,101,152,210, 76, 8,163, 27,197, 6, 55,102, 24,147,171,169, 76, 49,152,146, 73,220,212, 98, 46,254, 83,242, 89,120,107, +145,140, 23, 99, 28,171,195, 66,150,230, 40,103,134, 37, 97,150,135, 49,130, 85, 51,206, 24,225,156,240, 30, 56, 99, 22,179, 92, + 38, 87,175,137,106,200,140, 49, 49,210, 48,160,247, 4,104,184, 11,233,121, 98,202,153,130, 12, 54,166,238,241,139,210, 37, 49, +116, 90,135,248,241, 67,229,105, 96,228,152,171, 23,124,181,138,133,200,247,216, 56, 57, 43,147,192,252,178,210,183,136,201,192, +210, 40, 57,238, 73,108,102, 3, 0,111, 2, 6,103, 97,131,195,145, 31,176, 57, 56,132,217, 30,128,248, 10, 32,255, 2,164,111, +239, 79,213, 94,238,197, 11, 65,194,188,110,220, 70,170, 43, 72,165, 34,229,154, 82, 85,138,106, 66, 67,144, 80, 98, 88, 22, 6, +119,214,147, 44,171,118,188,221,212,154,102,186,202, 45,115, 84,111,197, 50, 97, 27, 52, 59,222,234, 3, 47,186,115, 3,150, 46, + 67,137, 2, 54, 51, 6, 16,192, 17, 12,177,104,116, 36,240, 8, 72,254, 44, 29,167,116,184,132,128,180,189,196,101, 7, 28, 88, +130,201,212,120,137, 79,154,230, 9, 50,111, 34, 96, 83, 84,187,211, 41, 80,156,180,200,152, 89, 2,203,196,136,202,237, 68, 89, +220,219,234,129, 37, 33, 53, 57,171,143,122, 51, 17,151, 99, 36, 19, 99,140, 1, 87,137,112,231,206, 49,150,219, 11,108,214, 22, +119,251, 14,103,227,128, 75, 45,128,121, 86,149,166, 84, 55, 64, 30, 2,104, 76,108, 97,136, 23,253,123,210, 41,253,154,121, 78, +227,146,231,116, 39,149, 80,166,254, 41, 28, 38,177,240, 42, 76,205, 69,230, 89,222, 56,233,202,224,159,252,195,255, 27,156, 25, +139,229, 98,118, 51,103,230,198, 27,126,154,208, 95,168, 3, 87, 54,244,162,235, 16, 70,129,131,139,146,101,206,170,159, 98,120, +203,165, 41,235,154,196,121,182, 69,104,221,222, 95,245, 31,254, 2, 9, 74,140,107,106,186,151,124, 63, 53,221, 53, 55, 32, 60, + 87, 98,216,233,233, 41, 82,138,248,175,254,218, 95,199,159,249,197, 63,131, 56,140,248,233, 63,249,211,184, 56,191,192, 63,252, + 71,255, 15, 78, 78, 78,110,217,243, 19, 54,155, 43, 92,156, 95,224,183,190,251, 93,252,219, 63,243,179,184,188,184,132,247, 29, +174,174, 46, 1, 48,118,195, 8,231, 61,174,174,214,248,228,147, 79, 0,164,234,220,182,221,238,112,120,112, 0, 2,107, 24,135, + 64,223, 33, 4, 60,122,244, 8, 95,254,242,251,112,214,226,226,226, 2,231, 23, 23,232,188, 36,132,237,118,131, 36,165,165,140, +126,209, 97, 24,133,220,229,138, 99, 25,178, 66,188, 37, 56, 68,236,142,141,186,151,109,182, 59,196, 20,107, 81,201, 53, 90,153, + 53,129, 44,214,189,187,179, 22,221,162,135,209, 9,222, 57,167,129, 38,185, 78,121,165, 72,113, 74,147, 44,138, 25, 93,231, 84, +135,175,197, 93,155, 1,107,165, 8,151,157,181, 16,187,212,245,172,164,140,129, 96,157,238,130, 65, 74,164, 35,244,157,195,253, +251, 15,164, 8,135,136,174,239,192, 12,140,195,136,190,239,225,189,155, 60,210,147, 88,185, 94,173,215,136, 49,194,251,133, 22, +217, 40, 54,187, 81, 86, 32,229, 53, 80, 81,129,128, 53,181, 45,170, 22, 29, 8, 33,169,103,186,196,186,238, 0,196, 49,192, 89, +201, 29,207,185, 16, 11, 81,247,249,178, 98,136,128, 17,205,191,133, 1, 71, 33,155, 13, 65,127,191, 81, 82,158,179,213,248,201, + 59,167,207,162,198, 63,135, 8, 71, 4,234, 60,134,144,224, 40,195,118, 11,132,216, 74, 4, 75,195,144,116,205,161, 60, 45, 56, +204,198, 7,141,249, 6,137,101,173, 91,116, 18, 37,203, 70, 10, 18, 25, 56,195, 96,178, 50, 32,145, 5,177,196,192, 50,107,113, + 6,193,120, 91, 9,136, 41, 74,129, 54, 98, 37,167, 26,121,163,188, 13, 83,249, 56, 89,237,191,123, 7,192,123,140,153,192, 33, + 74, 0, 17, 34,146, 1,114,210,124, 16,130,168,176, 66,130,227, 4,231, 24,119, 93,198,233, 73,143,116,126, 23, 54,172,111,139, + 93,127,193,190,253, 5,136, 27,115,147,232,246, 10,107, 67,154,106,139,253, 87,190,242,214, 7,187,221, 22, 89,108,125, 5,198, + 64, 22,255,224, 4,153,202, 73,246, 93,166, 45,140,149,149, 45, 69, 43, 53, 83,120,106, 10, 71,241,128, 47, 38, 50, 37,176,164, + 36,193,161, 70,231,201, 5,119,186,111, 78,250,161,103,149,131, 25,106, 2, 42, 52, 24,101,210, 97,139, 91, 28,193,192,228, 17, + 23,151, 23,248,225,227, 75,124,114,101, 0,111,208, 53,123, 70,110,108,105,101, 18, 55, 48, 16,233, 75,228,198,246,175,213,125, + 51,110,152,174,168, 50,237,109, 53,215,129, 42, 4,164,160,197, 25,155,123, 58,208, 43,108,172,208,240,122,179,195,197,102,196, +176,221,226,211,211, 75,252,224,114,196,182,146,214,154,244, 55,211,106,219,155, 93, 77,249, 29, 45,179,127, 79,163, 62,249,195, +243, 12,174,241,214,224,168,147,244,162, 49,139,204,195, 27, 43,201, 91,133,121,218,198,131, 80, 43,245,225,106,202, 82, 14,201, +219,181,151,183,179,221,115,102, 88,231,112,176, 90, 33,134, 17, 41,241, 36, 81, 36,158, 81,240,171,212,178,109, 34,192, 58,165, +209, 36, 7, 97,122,161,203,219,191,200, 63,188, 71,176,191, 93,197,194,104,227,106,230,102,194,211,242,198, 24,131,231,207,159, + 35,197,132,223,249, 59,255, 3,190,253,237, 95,193, 31,253,225, 31,224,159,254,254,239,131,163,236,152,255,249,255,251,207,208, +233,228,115,211,181, 60, 63, 63,199,233,233, 41,126,253, 55,126, 19,223,249,181, 95,195,230,106,139, 24, 3,158, 62,125,132,203, +203, 11,248,174,131, 33,131,211,211,103,248,209,199, 63,172, 13,233,229,197,165, 76,102,106,128, 2,133,189,235,238,159,228,160, + 52,100,176,217, 94,225,244,244,121,101, 23,111,174, 54, 88, 95,110,228,126,114, 14,198, 26,209,176, 55,146, 36, 82,175,240,204, + 89,243, 15, 38,215,177, 24,131, 64,241,229,115, 83, 59, 81,113, 38, 22,104,184, 16,210,138, 25,204, 27,111,188, 1, 34,131,139, +139, 75,157,118, 51,194, 56,168,163,154,209,105, 59, 85, 93, 59, 80,216,236,182, 38,171,145,106,148,203,190,220,168,219, 92, 49, + 79, 49, 80,182,180,162, 82,101,170, 55, 86, 56, 59, 41,101,140,195,128,119,223,125, 11,247, 31, 60, 20, 51,156, 69, 47,106,161, + 6, 78, 47, 70, 69,101, 7, 61,142, 35,206,207,207,133, 72,166, 48,187,115,194,172, 15,234,204, 86,194,102,178,174, 18, 72, 9, + 75, 37,144,101,183, 11, 24,134, 1,195, 48, 32,132, 17,227, 16, 16, 53,168, 37, 55, 59,216,114,109,188, 53,112,222,171,241,138, +174, 55,114, 2,169,209,206, 24,229,223, 13,137, 53, 46, 48,125, 14,165, 32,102, 38, 81, 73, 88,192, 57,175, 50, 88, 8, 15,194, + 24,132, 12,196,113,132,179,164, 42,130, 66,254,181,138,116,202,128, 68,214,128,121, 50,180,169,102, 81, 36,106, 39,231, 29, 74, + 86, 40,179,132,113,149,166,168, 88,211,182,114, 55, 49,169,201,147,127,124,166,105, 77,164,209,176, 12,209,201,151,137,222,112, + 18,149,150,106,231, 25, 4,203,202,114,135, 69,142,178,103,231,106,162,163,201, 40, 37, 50,150, 8,158, 9, 7, 29,176,246, 75, +108,175, 44,204,238, 57, 64,249, 11,201,217,104,246,255,232,166,191,120,185,182,189, 57, 23,251,190,135, 75,186,219, 45,142,103, + 49, 39, 48, 14,144, 14,143,209, 31,157,227,235,219, 45,174,206, 13,126,148, 8,201,202, 52, 87,117,235, 58,137,229,134, 80,197, +179,137,125, 34, 49, 77,235, 77, 70,170,166, 46, 25,148,139,188, 42, 11, 49,163, 36,171,105, 55,218,122, 11,147,254, 46, 41, 52, +197, 26,150,129, 28, 17,213,118,149,201,162,243, 6,222, 83,141,118, 44,214,183,197,158,150,148, 23, 0,154,164, 21,150, 44,184, + 97,202,115, 19,216, 66,101,106,168,230, 47,226, 49,156, 51,171,188,174, 20, 26,205, 71,183, 22, 43, 98, 12, 41, 97,100,106,156, +134,120,198,119,174, 59,243, 56,224, 15,126,248, 25, 62,212,157, 91, 38,192, 21,195,133,162,179, 55,133, 8,168,240,122,221,237, +107, 96,203, 94,177,143, 55,216, 23,184,210,176, 40,218,144, 1,236, 82, 66,239, 44,142,188, 69, 98,221,133,170, 52,165, 51, 50, + 37, 77, 8,195, 4,191,151, 96, 8, 71, 6,198, 42,220,206, 55, 71, 18,210,181,210,118,221,148,134,181, 41,200, 41,226,236,236, +172, 54, 49,188, 15,144, 76,233,173,149,211, 81,212, 2, 69,217, 64, 77, 66, 30, 97,206,124,127, 57, 73,239,213, 2, 85,136,174, +147,229,136, 95,244,253,243,130,222,218,234,112, 3,185,159,159,157, 97, 24, 6,252,221,255,233,127,198,183,190,245, 75,248,223, +255,222,255,134,179,231,207,177,219,238,176,219,109,177, 92, 46,224,106, 42, 89,147,146,149, 25,151,235, 75,172, 47, 47,241,198, +155,111,226, 63,249,205,223,196,159,253,115,127, 14,159,125,250, 41,114,102,108,119, 87,136, 33,224,225,195, 55, 64, 32, 60,121, +242, 24, 31,125,244, 33,214,235, 43, 44, 23, 61, 88, 19,214, 46, 46,214, 56, 60, 58, 20, 4,199, 89,244,189, 64,176,146, 48, 39, +133,238,211,207, 63, 83,135, 51, 43,186,242,113,196, 48,140, 85, 38,229,212,155,188,188,191, 2,183, 59,107,193,150, 17, 67,214, +103,177,200,204,180,113,215,207, 77, 32,245, 92, 11, 56, 17, 9,139, 92,253,231, 65, 4,223, 73, 82, 90,202,210,120, 12,131,164, +184,145,145,192, 9,145,109, 41, 65, 47, 79, 55,142,216,203,102, 37,176,205,253, 12, 50,203,252,232,237, 36,223,141,218,228, 20, + 63,248,154,244, 54, 70, 36,155,209, 57,143, 7,247, 30,224,232,232, 68,156,236,188,171,146,174,229, 98, 1,239,123,108,182, 91, +216,156,209, 47,122,100,149,151, 13,227, 40, 54,172,138, 44, 25, 69,198,172,230,170, 87, 54,125, 8,130,134, 89,135,156, 19, 58, + 47,159, 71, 8, 1,125,103, 96,205, 18,103,103, 82,220,203,222, 62,115,174, 59,244,156, 69,129,195,153,193,150,212,110, 55,213, + 36, 59, 81, 40, 40,163, 61,203,179,110,156, 56,237,201,223,165,106,136, 3,206,210,200, 56, 39,105,154, 96,120,103, 16, 18, 16, +198, 65,180,225,186, 14,180,170, 99,207, 57, 85,253,191, 33, 70, 74,194,174,183, 16, 73,161, 20,123,189, 15, 8,213, 30, 54, 68, + 2, 82, 16, 57, 99, 38, 32, 6,229, 24, 65,220,238,140, 43,211,140,196,182,234,164,152, 88,226, 86,141,145,181,110,210, 96, 43, +178, 6, 99, 52, 64, 10,133,153, 12,216, 12,134,149, 88,241, 20, 69, 73, 0,130,143, 9,157, 51, 24, 59, 15,142,208,192, 24, 32, + 39,128, 88,208, 9,182, 70, 26, 7,202,112, 12, 28,249,140,231,135, 7,192,197, 1,128, 51,160, 97, 79,189,148,108,219,172,158, + 39,163, 15,190, 14,191,191,196, 73,174, 61,227, 92, 33, 33,165,172, 41, 62,234, 42, 20, 23,239,160,123,255, 8,255,106,252, 99, + 44,191, 31,240,247, 78, 25, 79, 50,144,204,158,225, 9,166,112,128, 76,184,129, 4, 52,177,220, 83,139,162,146, 16,219,140,205, + 48, 57,233,158, 62,171, 62,125,223,152,100,254,253, 84, 28,218,102, 12,111,174,147,184,232,187,179,234, 46, 25,201,204,119,224, +220,192,241,212,232,234, 39, 36,163,184,186,113,163, 23, 69,115, 0,101,149,186, 76,251,140, 90,248, 73, 52,182,217,104, 49, 46, +164,181,153, 57,139,190,174, 18,213,106, 8,198,162, 18, 20, 45,164,211,172,122, 88,149,222,129, 74,186,221,244,243,218, 82, 46, + 5,197, 84, 40,166,141, 49,109, 39,201,204,115,136,254,108, 24,177, 84,104, 42,105,176,129, 37,125, 13,220,248,180, 23,255,103, + 42, 57,233, 83, 67, 87,172,110,115,179, 96,166, 27,160,255, 27,121, 31,141,251, 92,217,143, 85, 89, 22, 79,228,184,198, 66,160, +190,150, 54,202, 21,251, 44,241,189,251,167,253,221, 86, 15,104,254,113, 96,119,154,235,212,219,140,250,118,106,102,222,127,199, +188,167, 73,159, 38,244,203,139, 11,140,195,128,223,249,239,255, 14,126,249,151,191,141,255,243, 31,252,125, 92,156,159, 99, 28, + 6,140,195,128,197,178,135,187,146,189, 99,230,140, 48, 4,236,118,219,234,112,247,229, 47,125, 25,255,230,191,251,151,240, 51, +223,248, 57,188,245,214,219,120,252,232,177,184,179,133,128,163,227, 19,188,241,240, 77, 92,174, 47,241,209, 71, 31,226,217,211, + 83, 12,195, 14,227,176,131, 85,210,215,213,213, 6, 87,235,141, 56,188, 45,148,128,166, 19, 91,231, 59,164,152, 20,142, 23, 6, +121, 76, 81,194, 95,148,241,110, 12,129,178, 6,160,104,170, 27,171,215,188, 49, 70, 39, 80, 33,143,133, 16,170, 1, 18, 17,144, + 99,172,207,212,126,227,148,213,116, 37,103, 70, 34, 3, 75, 22,119, 78,142,209, 47, 22,216,238,118,112,206, 97,115,117,133, 49, + 12, 90, 80, 37,163, 59,234,107, 69, 99, 4, 4, 50,240, 94, 2, 78,140, 74,244, 38, 3, 20,145,135,121,239,224,212,124, 37, 41, + 99,219,148, 21,155, 45,142,111,178, 19,122,112,255, 14,126,242, 79,254, 52, 46, 47,215,184,186,186,194,209,201,177, 36,156, 57, + 7, 64,253,211, 85,190, 21,213,243,126,140, 65, 92,251, 20, 5,168,227,174,202,211,172, 33,120,239, 97,172,240, 13, 66, 12,106, +126,227, 42, 10,209, 57,143,160,167,235,201,201, 17,214, 87, 6,235,203, 53,198, 16,228,125,235,100, 95,152,233,153, 25, 20, 38, +185,109,117,210,203,140,108, 13,192, 89,101,119, 14, 41, 71, 69, 30, 53,125,207, 16, 82, 66, 37,159,117, 94,220,216,198,144,100, +135, 78, 14,214, 72, 48, 74, 76,172,207, 21,228, 51,102,150,180, 55, 3, 24, 24, 53,221, 1, 82, 22,249,153,213, 1, 41, 38, 6, + 81, 16,174, 12, 49, 44, 89,192, 73,108,106,103, 25,145, 22,224, 20,164, 17, 51, 94,206,228,204, 19,250, 8,105,136,138,173,117, + 49, 23, 51,152, 76,104,144, 24,222, 49,178,241,224, 36, 68,108, 89,141,138, 46,190,120, 21, 36, 6, 76, 98, 28,216, 4,238,123, + 12,105,137, 52,142,200,113, 4,114,134,177, 89,140,218,116,168, 77, 25, 56,116, 1,110,217, 33,185, 35,216,240,188,234,223,175, + 75,104,233, 86,182, 77,171, 92,249, 34, 12,159,253,191,117,220, 56,163,137,118,219,131,243, 26,230,201, 31,225,210,125, 13,191, +247,213,247,240,103,191,250, 67,252, 2, 71,252, 31,103,192,105, 46, 54,175, 58,189,105,202,140,108, 77,148,173, 73,250, 33,106, +129, 44,102, 39, 70, 18, 3,144, 97,196,212, 70,181,141,100, 50,108,158,178,196, 75,209,173, 49,160,186, 71, 54, 69, 2,167,211, + 51, 50, 11, 81,143, 38, 72,155,181,104, 21,102,155,176, 26,167,224, 21,180,209,160,165,232,233,228, 94,228,109,185,229, 40, 83, + 27,112, 82,188,131,185, 22,208,234, 80,215, 16,181, 74,154, 84, 80, 47,247,153, 43, 93,201,149,215, 41,189,112, 16, 44,230,129, + 30,109,254, 60, 23,111,225,210, 60, 53,108,118,162,121,120, 73,155,238,222,178,242, 39,178,137,190,190, 42,139,147,247,180, 83, +127,104, 48, 16, 19, 35,151, 72, 30, 37, 25,101,245, 92,206,106,196,211, 94,239,155, 10, 90, 37, 67, 18,221,200, 36,231,217,154, + 92, 27,164,162, 55,157, 57, 17,114,237, 1,249,122,123, 90, 97,247,242,159,136, 27, 19, 54,226, 27, 29,229, 12,137, 45,111,204, +121, 38, 25,252,177, 96,120,222, 51,138,153,173, 21, 50,234,160, 8,222,163,201, 53, 19,250,249, 57,214,151,151,248,238,111,255, + 45,124,231, 59,191,138,127,242,143,255, 49, 62,255,236,115,164,152,176,219,237,224,189,199,225,193, 33,158,157,158,226,201,211, +167, 88, 44, 22,120,237,181, 7,120,247,189,247,240,245,175,127, 29,239,188,247, 46,190,254,245, 63,129, 59,119,239,225,249,243, + 83, 60, 63,125, 46,132, 25,231,240,240,225, 67,144,177,248,232,163, 15,241,241, 15, 63,150, 41, 49, 4,120,231,144, 83,198,122, +125,133,113, 28,113,181,190,210,125,239, 40, 7,254,180,164,210,100, 50, 41,230,146,169, 45,205,230,118, 28,148,195,192,115, 66, +156, 78, 93,212, 58, 32, 38,174, 70, 69,214, 8, 3, 29, 36, 17,175,237, 74, 43,229,172, 50, 52,145,110,165, 66,226, 74,250,123, + 45, 97,181,146,100,179,245,229, 26,219,237, 6,153, 27,167,181,204, 13,207,197,192, 48, 16,115,132, 83,139,214, 18, 8, 20,130, + 36,206,137,246, 93, 32,245,152,147, 54, 40, 22, 49, 37, 69,203,166, 32, 19,121,174, 83,157, 68,183,195,136,139,243, 51,185,110, + 41, 33,134, 0, 90, 46, 48,198,136,176, 94,139,231,187, 70,186, 38,141, 41,229,204,240,222,163,239, 59, 12, 59, 65, 2,162, 18, + 13,153, 25,195, 40,228, 66,223, 57,120,103,149, 24, 40, 48,125, 8, 34, 69,204,250,222,198, 56, 86,158, 66,241,169,231,156, 27, + 82,114,210,230, 68, 99, 72,181,168,251, 36,171,156,168,141, 23,145,192,254,206,138, 2, 33,103,209,167,151,168,219,156, 11, 87, + 72, 8,146,198, 90,189, 39, 24,222,103,248, 69,135,148,196, 27, 84,118,234, 89, 10,189,177,147,125, 44, 3,222,137, 36, 45,171, + 35, 94,210,169, 90,120, 10, 19,239,161, 58,191,169, 62, 93,252,254,189,250,195, 51, 56,141,213,235,157,154,179,217, 18,170,182, +221, 56, 70,102, 43, 65, 47, 49,194,155, 12,178, 94,210, 72, 45, 35,103, 11, 98, 33,197,177,174, 7,100, 7, 15,245,231, 55, 32, + 39,150,190, 91,187,192, 14, 14, 54, 92, 33,155, 36,107, 33, 37,101, 50, 24, 75, 34, 28,172, 8,103,203, 99,216,224, 1, 36, 65, + 33, 64,115,228,240,150,226, 92,199,175, 86,122, 92, 76,199,152, 95,121,208, 16, 68,182, 76, 60,121, 74, 15,203,198,129,210, 19, +244, 31, 3,127, 28, 94,199,255,242,230, 18,191,112,116,129,247,214,192,217, 72, 24,141, 28,152, 29, 19,178, 61, 64, 62,138,248, +114,222, 97,184, 50,248, 76, 11, 71,130,234, 50, 75, 1,174, 83,149, 20,247, 12, 3,195, 1, 8,192, 8,101,153,234, 49,226,245, + 48, 76,205, 27, 43,223, 79,229, 24, 47,176, 54, 99,150, 23,206,188, 31,111,215,128,149,156,175,209,166,210, 13,210, 42, 33,208, +180,142,102,123, 59, 96, 42, 68, 65,174, 77,192,172,100, 53, 80,127,129,244, 77,107, 12,170,164,185,122, 35,234,248,233, 0, 4, + 20,118,124,249, 13, 25,177,248, 0,236, 35, 9,141, 70,154,111,152, 54,139, 22,221, 52,210,193, 76,115,246, 54, 55, 35,108,149, +196,228, 41, 73,175, 94,123,158,124,225,139, 79,252, 77,189,167,153,213, 93,170,186,126,190,197,173,173,134,193,240, 30, 7,225, + 70,214,186,252,219, 56, 12, 48,198, 10, 83, 56,243, 13,153,128,252, 66, 98,105,102, 89,141,124, 17,163,153,151,145, 93,152,231, + 58,248, 58, 5,182, 15,108,243,104,147, 78,112, 79,158, 60,129, 49, 6,255,237,223,250,219,248, 15,191,243, 29,252,179,127,250, +251,248,209,143, 62,150, 34,154, 19,142,142,143,209,119, 29,250,229, 2, 39,119,239,224,151,191,253,109,124,245,107, 95,197,251, + 95,249, 10,238,223,127, 13, 7,135, 7,136, 33,224,244,244, 20,223,255,222,247,112,120,120,136, 55,223,122, 27,214, 57,228, 20, +113,126,113,142,239,127,239,123,120,250,228,153, 78,113,140, 24, 3, 82,204,176,206, 96, 55, 12, 32, 48, 22, 93,135, 97, 12, 88, + 95,172,113,231,206, 9,220,137,175,247,144, 53, 6,187, 52,136,115, 28,149, 61,184, 88,163, 66, 39,163, 34,161,178, 58,205,102, +150, 61,184, 81,207,239,130,170,228,156,209, 57, 7, 99,100,221, 67,106, 8,146,153, 65,169,192,178,242,252,142, 33, 86,180, 40, +169,142,217, 58,139,213,106,133, 24, 35,206,206,206, 17,194,168,154, 99,133,148, 99,152, 98,149,115, 97,240, 27,125, 93,164,114, + 42,229,232, 40,123, 30, 90,116,157, 74,160,162, 26,177, 52,148,214, 58,201, 19,137, 36,175,239, 60, 14, 14, 14,113,121,121,137, +126,177,192, 98,209,163,239,123,140,163,152,217,244,253, 66, 83,222,116,157,103,164, 89, 38,200, 62,218, 88,241,234, 12, 49, 86, +130,159,115, 22,153,117, 24, 34,171, 13, 40,106,136, 10,145,232,198, 13, 17,156,247,202,154, 95, 35,140, 81,220,248, 56,195,123, + 11, 34, 95,157,236,228,127, 45,134,113, 4,105,108,237, 46, 69, 56,245,200, 55,214, 86, 70, 74,202, 73,155,126,225, 54, 68, 6, + 56, 8, 12, 94, 92, 59,173, 97,149, 16, 23, 50,159, 28,184, 41,103,121,246,157,171,188,159, 98, 15, 92,211,222, 12, 73, 8,182, + 66,233,130, 86, 64,224,124,154, 8,136, 98, 62, 36,250,122, 78, 12, 99, 2,140,113, 98, 59,155,162,146,142,169,238,213,167, 80, + 46, 61,163, 20,249, 32,102, 88, 79, 72,236,133,207,145,132, 88, 88,199,197,178, 58, 86, 67, 34, 48,195, 91, 65,116, 66, 6, 92, +140,176,150,113,224, 29,188,237, 49, 12, 6, 97, 24, 96, 48,192, 90,201,136,143,108,208,101,198,113,159,112,118,120, 4,190, 56, + 0,241,153, 32, 29,237,250,249, 37,211,246,108, 48, 99,158, 35,153,116, 11,251,189, 1,190,203,119, 57, 24,154,101, 99, 87,190, +176, 91,130,248, 12,199,143,175,240,236,204,226,127,117,132,101,146, 83,219,233, 7,156, 77,135,180, 32,220,115, 9,171, 45,240, + 60, 79,154,225, 92,157,210, 68, 66,224,144, 17,216, 72,124,107, 99, 3, 90,121,213, 76, 96, 99,224, 57,131,204, 2,212, 3,171, +180,197,110, 36, 68, 18,251,192, 74,214,226,185,156,172, 66,182, 74,180,153, 38, 40,154,194,249,120, 98,226,231, 6, 54, 55,164, +146, 8, 18, 29, 57, 25,104,183, 59,185,189,205, 8, 98,170, 22, 32, 42,147,118,153,220, 81,157,217,166, 2, 55,193,245,153, 76, +117,188,171, 59, 85,110,224,113,146,135,165, 3,196, 43,190, 41,155,172, 58,201, 66, 92, 41,205,132, 97,154,208,131,230, 99,206, +237,180, 75, 19,196,157,247,190,174,236,250,185,169,158, 49, 38,181,188,164,122,221,202,205,153,121, 50,208,160,234,165,205,106, +141,203, 55, 42,166,203, 84, 94,156,237,120,111,196,101,204,227, 89,121,223, 96,129,105,190,200,209,105,254,245,135, 15, 17,198, + 1,231,231,151,162, 57,221,119,169, 43, 76,254, 27,122,100,254, 23, 96,187, 95, 3,212,249,213, 52,112, 51, 19, 31, 2,182,155, + 45,158, 62,125,138,247,190,244, 30,254,234,127,253,223,224,155,223,252,211,248,232,195,143,240,233,167,159,162,235, 60,172, 59, + 66,215,221,215, 44,110,241,183,126,243,157,119,240, 87,254,243,255, 2,174,243,184, 56,191,192,243,231,167,248,252,243,207, 42, + 60,109, 8, 56, 62, 57, 65,215,119,184, 56, 63,199, 39, 63,250, 24,159,126,250, 41,206,158,159, 75, 17,183,101, 74,149,224, 17, + 27, 45,152,179,196,141,106,210,215, 48, 12, 56,191,184,196,253,215, 31, 96,185, 88, 97, 12,178, 51,207, 57,171, 51,155,193,168, +204,246,156, 50, 98, 76, 85,181, 64,133,169,158, 18, 82,158, 46, 72, 78, 98, 38, 67,134,208,119, 94,166,193,198, 29,205,123,113, + 53, 11, 49,194,235,225,207, 73,159,169, 36,205, 65, 33,237, 45, 22, 43,248,110,129,207, 31, 61,194,197,229, 57, 56,197, 9,118, +101, 86,253, 49, 1, 81,228,176, 57, 39, 9,154, 41,211,190,181, 32, 6,188,146, 67, 67, 20,184,188, 12, 8,198, 16,156,151,132, + 50, 70,209,139, 79,211, 54,212,221,238,193,253,187, 56, 56, 56,148,130,155,202, 94, 92, 38,236,190, 95,104,162,217,180,170,202, + 90, 56,132, 43, 96,176, 88,244, 18, 73, 27,132, 32, 36, 69, 92, 51,189, 83,130, 9, 65, 98, 94,187, 14, 99, 76, 24,199, 81,166, +236, 78, 18, 51,182,219, 29,134, 97, 39,170, 15, 35,209,184, 57, 5, 57, 71,153,171,212, 75,118,232,192,106,217, 35,132,132,221, +118, 80, 45,187, 32, 3,222, 79,132, 69, 67, 86,157,239, 66, 77,147,139,141, 27,101,136, 65,214,118,157,228,188,167,152, 20, 29, + 73,136, 33,193, 27,134, 81, 41, 28, 85,153,149,144,219,140, 53, 96,182, 66,206,163,178,122,209,117,104,146, 51,142,212,189, 47, +102,249,158, 2, 73,139, 6, 62, 33,151,240,234,134,148, 92,163, 95,181,104, 19,178,124,125, 46,169,112,164, 42, 9, 66,214,180, + 17, 82, 22, 59, 71,109, 16, 24,162, 63, 87, 4, 38,102, 33, 39,178, 97,216,156,225, 29, 99,229, 29,172,237,177,177, 14, 97,107, +129,180, 85,239, 19, 41, 2, 71, 54,193, 29, 44,192,254, 16, 20,207,230,156,183, 90,216,169,193, 89,111,115,184,162, 23,168,220, +111, 41,236,179, 73,157, 12,216,138,225, 78,206,242, 6,173, 58,176, 49, 89,144,137,240, 67,194,217, 72, 56, 51, 66,182, 50, 58, +123,102,162,255,159,181, 55,251,181, 45,203,206,188,190, 49,230,156,107,237,211,220, 62, 34, 35,156,233,180,179,177,211, 85,194, + 77, 53,178, 75, 84,163,234, 44, 11,100,202, 42, 81, 18, 24, 75,118, 89,136, 7, 84, 52,162, 30, 16, 85, 80, 32,195, 59, 15, 8, +241, 7,240,192, 51,255, 3, 20, 69, 21, 66, 84, 1, 46,108,167, 51,237,204,104,110, 19, 17,183, 57,231,236,102,173, 53,155,193, +195, 24,115,174,185,247, 57, 55, 34,178, 32,164, 84,102, 70,196, 61,103, 55,107,173, 49,199, 24,223,247,251,224,228,128, 97,155, +240,241, 76, 77, 34,144,172, 0,177,217,186,236, 76,135, 0, 21, 51,101,211,149,187, 19,197,126,197,184, 10, 0, 87,173, 41,221, +222, 94,159,135,165, 75, 78,235,199,191, 43,241,140, 78,209,216,212, 91,218,104, 13,239, 34, 21, 84, 56,150,213,110, 37,235, 41, +175,180,120, 86,105, 34,181, 82,213,185, 38, 44, 12, 76, 8,164,114,138, 36,235,100,160, 5,144, 28,141,197,143,177, 46,212,121, +192, 21,222, 83,186,160, 20,234, 2, 2,214,157,246,186,127,238, 2, 90,164, 6,208, 24, 99,189,197,148,118,180, 59, 19,241, 53, + 29, 65, 29,134,182, 81,182, 78, 79,158, 60,121, 7,203,180,197,205,126, 86,199, 3,173, 7,180, 82,167, 4,246, 67, 72,186,125, +125,183, 95, 95,251,155, 53, 22, 81, 39, 6, 54, 86,149,117, 44, 45, 77, 44, 66,157,151, 97,189, 48,232, 36, 31, 93, 68, 11,196, +143,255,248,215,241,230,245,103,248,236,179,151, 96, 55, 30, 37,216, 66,243, 60, 50, 0, 0, 32, 0, 73, 68, 65, 84,157,102,191, +127,158,117, 77,228, 71,203, 94,184, 43,150, 93,190,228, 41, 60,165,132,237,118,139,253,126,143, 71,143, 31,227, 95,255, 91,127, + 11,255,198,175,255, 58, 30, 60,124,136,239,126,247,247,145, 98, 66, 24,130, 22,133, 54,177,208,209,119,240, 14, 97, 24,240,252, +147,231,152, 14, 19, 74, 46, 56, 76, 7, 75, 61,171, 86, 49,193, 18,103, 60,123,250, 20,223,255,222,119,241,201,139,207,144, 83, + 54,133,180,237,189, 89,187, 85, 2, 16,211, 98,225, 28,130,195, 52, 89, 34, 23,225,234,205, 21, 82,202, 8,195,160,190,231,101, +209,215,102, 66, 78, 69,146,138, 5,220,232,247, 26,188,238,202,115,169, 62,114,143,185, 20,196,172,244,179, 97, 8,202,215,102, + 77,242, 2, 19,202,162,197,216, 15, 1, 35,208, 96, 51, 82,121,237,246,123, 68, 10,198,113, 3, 16,225,193,195,251, 0, 10, 94, +191,126,173,227,110, 83, 25, 41,101, 85, 71,181, 57, 21, 83,203, 23, 12, 65,245, 1,113,137,144, 0,140,206,131,156, 62,127, 84, +101,141,181,171,180, 20,209,156,244,174,116,220, 49,208, 45,128,165,136,224,193,253, 75, 60,120,240, 16,209, 10,111,245,208, 15, +155, 17,129,214,195,219, 24,130, 42,205, 77,185,175, 80, 25,215,146,223, 0,193,103,159,125,214, 84,234,149,244, 71, 0,246,251, + 3,188, 99,140,155, 77,155,152,228,146,219,253, 26, 83,194, 52, 77,136, 49, 99,127, 56,160, 24,201, 47, 87,152, 76, 93, 77, 21, + 77, 86, 27, 7,157,162,156,157,159,117,122, 3,101,169,123,175,169, 29,217,132,109,110, 8, 72,169,128,160,215,192, 60, 77,106, + 49, 99,135, 34, 9, 78, 28, 98,202, 6,120,241, 88,166,197,248,234, 58,150,167,234, 15, 47,150,237, 14,134,164, 12, 98, 19, 57, + 59,119, 4, 28, 99,189,136,214,120, 92, 75,114, 19,171, 9,181,123,135,148,150,166, 86,121, 33, 41,195,146,248,138,129,106,214, +154,145,161, 65, 44, 92,116, 29, 64,236,244,185,106,158,122,213, 19, 8, 60, 0,136,183,216, 86,155, 56, 48, 35,131,177, 68,189, +167,134,184, 32, 12, 3, 30,142, 1, 83, 56,195,126, 26,145,151, 29,184, 36, 20, 8, 54,142, 48,110,128,253,112, 9,142,149,208, +194,171,124,204, 20,246,248, 18, 93,251,145,102,167, 54, 76,119,192,166,222,182,122,247, 48,243, 64,150,147,116, 43,131,122,100, +168, 50,206,211, 58,138,173,225, 29,156, 39,164, 29,225, 25,160,197,155,148,236, 83,105,114, 68,132,209, 1, 92,236, 64,106, 39, + 44, 6, 16,101,229,173,107,161, 32,164,186,131,206,123, 21, 99,128,143,201, 78,125,167, 71,114,172, 86, 42,181, 8,175,158, 82, + 5, 22,233, 81, 76, 76,148, 35, 29, 61,165, 42,150, 53, 22, 87, 79,139, 37, 21, 20, 14, 8,222, 4,121, 34, 29,132,166,238,150, +244, 11, 11,102,203,209, 68, 53, 5,201,148,218,251,138, 28, 89,223,170,192, 15, 64, 11,166,193,201, 88,182, 90,178,200, 40,121, +124,180, 62,208,159, 23, 54, 35,168,100, 76, 75, 92, 73,113,221,238, 58,219,126,141,187,143,104,205, 0, 33,211, 8, 72, 39, 26, +180,181, 68, 17,189,233, 42, 83,221, 62,167, 92,228,136, 34,183,142,204,235,196, 2, 71,184,211,163,172,244, 30, 46,131,117,215, +217, 11,203,164,155, 16, 53,165, 58, 31,255,158,246,223, 53, 89,139, 8,255,207,239,254,223,154,126, 53,142,205,130,232,236,141, + 38, 41, 45, 35,190,200,219, 11,186,119,181, 72, 37,124, 97,244, 41,125,142, 64, 69,142,197,123, 62, 24,128,199, 30,230, 55, 55, + 55,216,237,182,184,119,121, 15,223,250,246,183,240,179, 63,247,243,248,235,127,253,151,241,173,159,250, 54,222,188,185,198,135, + 31,126, 8, 49,134,249, 56,110,236,103, 12, 24, 55, 35, 0,193,110,191,195, 60,207, 56, 76,123,188,126,253, 26, 47, 63,253, 12, +247, 46,239,235,190,111, 89,154,170,123,158,103,108,111,190,139,105,191,199,171,151,106,141, 75, 41, 91,214,182,121,192, 29,183, +195,209, 56, 12,112,228, 90, 23,152,211,154, 54,118,216, 29, 32,143,244, 0, 21,130,183, 2, 87,176,204,213, 15,110,162, 78,219, +143, 39,123,176,138,101,158, 43,174,180,192, 51, 99, 51,142,134, 56, 53,108,169,117,111, 64, 49,214,249,210,196, 96,165, 36, 83, +173,231, 70,167, 99, 86, 91,216,197,197, 5,158, 60,126,132,235,235, 27,236,182,187,110, 26, 7, 13, 27,129,142,236, 83, 84, 85, + 55,234, 72,190, 78, 50,152,155, 13, 79,140,166, 86, 65, 59, 82,164,173,218,138,169,172, 29, 57, 36,219,117,215, 11,192, 59,198, +163, 71,143, 48,142, 27,139,118,213, 3,192,229,197, 57,200,188,233,234, 93,223, 96, 73, 74,192,171,207, 24,231, 8,131,247, 42, +228,203, 17,142, 61,198,113,196,124, 56,104,113,177,192,152,200,197,168,144,162,154,131,106,241,147,130,121, 90,204, 29, 80,192, +206, 35, 30, 76,196, 69,250,122, 53, 56,202,240,184, 86, 36,131,137,216,114,156, 49,218, 62,127, 89,162,193,122, 24, 49,235,244, + 1, 16, 20, 75, 34,116, 76, 26,197,189, 40,129,144, 73,112,113,190, 49,229,126, 86,157,141, 49, 76,130,119, 42,166, 43,130,224, + 73,137,107,246,179,234,129, 41,102, 2,197,132,209,123,120,231, 16,139,141,236,201,108,104,246,157,144, 89,233,138, 16,138,100, +123,134, 89,232,140,243,246, 76,210,235,178,118,231,176,131, 64,139, 66,181,230,139, 21,166,111,211, 7, 1, 83,108, 43, 23,234, +166,149, 82,109,113,146,213, 82,109, 59,246, 36, 69,239, 75,202,136,217, 35,207, 9,131, 19,156, 13, 12,156,109, 48,225, 18,136, + 91,100,201,112, 34, 56,115, 25,187, 97, 3,236, 6, 64,102, 93, 41,116, 19,199,138,189,253, 66, 22,252,106,223, 63, 22, 22,223, +241,103,239,130, 95,121,201, 25, 57,137,178,211, 21,166,214, 88,226,125, 48, 6, 87,239, 54,173,133,166, 0, 93,228,156,141,192, +136, 33,204,240,204, 24,107,106, 25, 3,222,178,111, 11, 17,188,137,192, 42, 40, 68,160, 31, 96, 33, 86,216, 73,183, 25,117,221, +239,171,158,201, 58,107,168,170,104, 18, 6,156, 67, 64, 82, 76, 96, 55, 42,175,124,155, 98,133,119,237,160, 87, 69,188, 50,223, +173,236, 4,229,252,150,124,188, 75,111,226, 57, 90, 39, 1,142,128, 60,237,240,124, 38, 92, 92,156, 97,112,107, 82,153,156,136, +167,154,218,149,212,118,145, 44,116,197,196,234,109,119,226,236,221, 22, 81, 56,135,208,106,126, 42, 32,132, 48,194,149, 5,243, +178,116,159, 9, 31, 41,209,165, 9, 11,143,191,240, 58, 42,167,154, 47, 92,233,126, 88, 65, 28,175, 94,126, 6,144,131,119,186, +243,100, 59,205,102,139,107,236, 11,153,156,108,139,169, 59,130,172,243,148, 99,122,124, 57, 82,186,203,145,136,176,159,202, 28, +169,220,239, 80,131, 44, 49, 42,151,223,194, 60, 96,107, 11, 66, 63,182,251,252, 46,221, 15, 3, 8,192,110, 23, 13, 82,241, 5, + 39,231,222,130, 34, 39,226,184,142,121, 95, 71,193,175, 95,189,194,188, 44,248,206,119,190,131, 63,253,103,255, 12,126,225, 79, +253,105,124,243, 91,223,194,131, 7, 15,145, 98,196, 15,126,248, 1, 22,219,105, 59,239, 85,140,232, 61,206,206, 54,184,119,239, + 62,174,174,175,240, 71,223,251, 30,222,188,126,141,121,158, 49,205, 19,182, 55,123, 21,207, 57,135,247,126,236,125,157,198,216, + 33,245,176,159,176,221,237,176,187,217, 90, 74, 90,208, 17,108,142,250,128, 47,235,200,178, 20,193, 20, 19,242, 97,106, 29,229, + 60,207, 24,135, 1,165,232, 65, 96,115,182,193,118,187,195,189,139, 11, 12,195,128, 15, 62,248, 8, 49, 69, 85,164,155,175,217, + 89,167, 74,220,126,176,118,234,222, 35, 7,237,110, 29,187, 38, 66, 83,187,155,122,125,139,129, 76, 82, 76, 6, 92,209, 99,222, +188, 36,245, 3, 67, 71,161,126, 80,181,241,187,239,190, 11,231, 3, 62,249,244, 83,219, 21, 83,251, 25,142, 8, 41, 38, 99,254, +235,189,227,189,111, 86, 47, 87,243,216,139, 1, 80,104,141, 57,214,120, 86,110, 19, 24,198,154, 89,225,189,122,215,131,249,189, + 47, 46,206, 49,110,148,170, 71, 38,180, 11,110,104,180, 62,128,177, 44, 73,213,220, 57,173,226, 60,123, 13, 75, 74, 58, 89,177, +157,183,247, 1,201,199, 22,111, 75,108, 32, 41,203,125, 47, 34,237,208, 21, 99, 68,178,200,215,184, 44, 22, 2, 83,144,236,251, + 80, 81,154,174,208,160,193,100, 42,252, 50,143, 54, 51, 99,201, 25, 1,107, 54, 3,179,129,177,236,130,174,223,143,247,220,132, + 91,195,224,144, 11,176,204,179,125,166, 42, 40,203, 66,200, 49, 97, 8, 14,222,143, 88,162,182, 53,228,213, 34, 87,109,191,100, +233,121,197, 44,179,154,240,230,144,138,206, 36, 11, 72, 3,134, 56, 1,126,104, 74,165,156, 11, 88,114,219,253,139, 9, 41,115, +206,150,226, 87,249,254, 98,232, 86,197,239,194,196,133,167, 83, 62,205, 94, 87,184,143,160,122,231,197, 40, 41,210,137,250,168, + 25,166,181, 6, 56,100, 0, 75, 42, 64, 74,216, 56,194,229, 89, 64,226, 51,204,215, 2,151,175,176,145,132,203, 97,192,203,139, +115,200,155,115, 16, 14,183,198,227,234,185,151, 47,203,171,108,172,148, 83,231,206,169, 53,246,244,199,121, 54, 11,136,130, 97, +172,227,145, 85,137,142,206, 70, 38, 21,247, 74,189,245, 10, 77, 57, 79,125, 55, 47,128,176, 52, 2, 81,233,118,187, 73,180,235, + 85, 30, 60, 35, 15, 1,247,134,140, 49,102,188,137,107,222,186,227,186,163,102, 19,215, 85, 59, 86, 89,211,201, 68, 21,244,206, + 57,120,100, 67, 7,174,218,128, 85, 84, 81,236, 33,191, 10,204,214,240, 22,129,164, 45,174,248, 79,226, 47,252,214,175,226,175, + 60,255, 31,240,223,253,143, 47, 49,159,111, 48,122,110,158,207,202,146,116,196,112,105, 65,220,188,135, 95,252, 51,191,128,119, +166,167,248, 95,127,255, 57, 94,206,132,224,216,128, 10,107,210, 84, 63,162,149,206, 7,149, 65, 8, 32, 12, 78,189, 2, 73, 4, +179,237,236,185, 41,239,215,140,118, 64,176,187,185, 54,171,137,107,147, 11,233,124,232,169, 78, 82, 68,144,160, 22,147, 12,165, +194,113,167,142,215,239,153, 86,191,123, 27, 67,186,118, 83, 17,160,116, 44, 75,202, 90,195, 81,214,226, 43,221,252,122,237,198, + 75,163,185, 53, 79,122,167, 77,120, 11, 21,249,232,130,150,211,188,215,238, 2, 22, 11,156, 56,213,143,144,244,167, 89,185,115, + 51,213,171,206,167,195,161,253,239, 31, 73, 28,215, 47,212,229,246,207,189,190,186,194,245,205, 13,126,246,231,126, 22,191,250, +175,253, 13,252,226, 47,253, 57, 60,120,248, 16,135,195, 1,111, 94,191,198, 15, 95,255, 49,166,121, 50,111,190,217,129,146, 62, +232, 30,222,187,135,203,203, 75,252,240, 7, 63,192,255,246,143,255, 9, 62,251,236, 83,165, 99, 89,167, 60, 91,218,217, 60, 29, +176, 44, 11,222,121,231, 9,118,187, 61,130,215, 4,179,195,110,135,237,110,167,216,224, 10,131,178,110,146,160,236,239, 98, 49, +158, 41, 42,191,124, 63, 41,234,117, 24, 60,188, 99,220,108,119, 56, 28,246, 74, 42,115,206, 82,192, 14,198,142, 80, 65,149,142, +217, 29,200, 73,235,248,116,132,173,221, 49, 57,134, 75, 17, 82, 52,100,165,136, 24, 37, 80,108,228,111,150, 32,123, 56,123,207, +109, 77,208,116, 36, 82, 52,134,147,128,135,143, 30,226,201,227,199,120,246,252, 25,166,105,143, 97,112,205,178,149,203,186,203, +175,223,123, 85,237, 87, 75, 89, 8, 94,125,222, 41,219,189,207,134, 63,205,173,128,171, 50,127,165,191,233, 42, 82,137,113,197, + 56,228,247,239,223,215,145,123,138, 90,148,157, 55, 5, 61,112, 56, 76,216,156,109,192,240,170, 96,231,160, 54,169, 28,113,126, +126, 6, 2, 99, 90, 84,216,199,206, 25,228, 69, 47,208,104,182, 64,103, 97, 57, 4,210,239,212,138, 81,138,139, 29, 74,164, 21, +184,221,118,143,101,158,225, 72, 67,176, 42,103,159,201,161, 32,106, 46, 59, 8,211, 28,213,182,102,142,131,122,168,168,169,116, +204, 4,102,253,189, 41, 43, 63, 63, 70, 29,101, 7,199,237,179,136,115,196, 40, 5,112, 65,185, 0,206, 89,226,156,174, 33,121, + 51, 98, 89, 22, 4, 41,112,206,155,195, 64,180,128, 26,175, 96,177,181, 72, 24, 70, 48, 19, 74, 22,144,165,191,197, 4, 4, 74, +154, 10, 90, 3,126, 44, 33, 48, 21, 32,167,168, 66, 57, 18,133, 8, 85,143,149, 84, 59, 90,105,177,170, 21, 26, 70,164,135, 76, +120, 70, 46,164,174,134,172, 12,250,213,254,107,110, 43,155, 78, 48, 52, 84,139,179, 58,179, 96,147, 3, 41,130, 76, 5, 83, 98, +140, 49,226, 94,112,144,203, 13,100, 87,128,178,195,153, 47,240, 99, 64,241,231,160,248,242,136, 46,247,133, 4,185,163,135,140, +124, 81,212,227,250,164, 44,183,131,164,221,159,252,214, 87,127,103, 63,205,109, 22,218,136,113,178, 62,192,233, 14,177, 79,131, +144,116, 74,234,138,238,172, 22,177, 36,107, 26, 25, 42,138,214,246,234,197,134,244,197,124, 83, 52, 56,220,227, 12, 78,130,189, +160, 11, 23,237,122, 56,194,137, 51,187, 27,165,151,132,148, 87,146,221,170, 80, 71, 27,241,151, 58,190, 61,137, 18,213,142,222, +193,177, 32, 93, 61,199,211,143, 94,226,229,100,106,205, 59, 26, 56, 54,161, 71,137, 51,174,203, 25,190,254,157,175,227, 43,249, + 19,252,209,139, 5,228, 25,124,228, 71, 95,105,229,245, 51,228,110,165, 32,246,154,206,236, 36, 59,131,112,127, 12, 24,168, 96, + 50,235, 46, 29,145,220,142,173, 89, 76,188, 90,133,136,142,216,237,167,209, 2, 76,181,136,215,195,206,237, 92,246, 85,184,166, +239, 61,198,108,202,219,117,117,113,148, 6, 78,171, 5,175,238,196,228, 68,253,126, 42,136,171,212,190,158,187,125,235,162,237, +171,231,233, 27,151,147, 8, 83,233,168,103,114,251,152,240,121,144, 25,193,151, 79, 60,238,182, 16,237, 94,233,215, 12, 75,140, +120,246,244, 41,238, 63,120,128,223,252,237,191,141,127,247,239,252,123,248,185, 95,248, 83,120,253,230, 53, 94,188,120,142,235, +235, 55, 72, 49, 98,115,118,142, 16, 6, 12, 65,187,243,253,116,128, 99,198,215,190,250,227,184,188,188,135,239,253,225, 31,224, +127,254,159,254, 33, 94, 60,123,209,226, 54,163, 33, 60, 53,206, 82,145,157,203, 60,235,218, 41,171, 96,105,183,223,219,158, 93, +187,181, 20, 99,195, 6,137,237, 84,146,225, 86, 21,192,162,221,231,188,204, 32, 20,108, 54, 35, 98,202, 56,236, 15,184,119,255, + 62, 30,191,251, 4,113, 94,116,172,191,221, 66, 68,148,237,110, 22,176, 82, 50,150, 37, 90, 97, 94,231, 89,206,105, 2,217, 52, + 45, 54, 41, 40,205, 13,192,102, 23, 82,139, 87, 49,192,140,249,209, 83,205, 80,103, 29,171, 22,133,224,156, 95,156,227, 39,126, +226, 39,113,179,189,193, 39, 47, 62,105,105,125, 57,215, 63, 35, 38,178, 82,120, 81,237, 46,170,167,188, 6,171,140,193,195, 57, + 45,106,104, 98, 93,193,102, 28, 52, 91,157,106, 71,104,138,121,239, 0,210,208,162,105,154,113,239,242, 28, 79,222,121,167, 37, +202, 85, 20,170,179, 61,121,178,117,193, 48, 14, 24,194,208, 18,233,134,160,158,235, 57,170, 21,107, 99,224,156,253,126,210,239, + 72, 76,153,205, 74, 91,139, 81,243,207,153,184, 17,254,106,228, 44,147,134, 64,197, 37,226, 48,169, 88, 14,150,104, 87,161, 61, +170,246,247,214, 37,195, 82,233,248,104,106, 88,241,188,181, 67,119,204, 29,188,169, 50,234,215, 9,165,103,157, 42,136,185, 0, + 80, 10, 70,111,129, 53, 5, 32,232,110, 62,102, 66,142,139,137, 28,139, 1,123,208,214, 2, 85, 56, 28, 60,131,216, 91,146, 90, +229,220,103, 13,125, 33, 52,199, 66,177,125,122,177, 80, 25, 71,164,188, 0,211, 8,233,247,236, 20,178,147,179,226,100,217,163, + 20,227, 75,175, 18,244, 91, 44, 11,221,213,163,166,189, 84, 88, 41,192,164,184,216,156, 43, 31, 85,247,252, 45, 55, 93, 63,167, +115, 22,184,141,195,132,115,248,152,192, 46,225, 74, 2,230,109, 2, 47,175,209, 21,130,227, 71,219,231,227, 39,111, 61, 4,229, + 45,255,132, 90,160,212, 42,192, 30,198, 1,238, 79,124,243,253,223,153,246, 11, 74,177,192, 3, 19,203,245,177,149,133,110,143, +147,123, 19, 81, 31,218,210,228, 61, 69,199,161,165,142,191,161,227,246, 42,148,171,157, 61, 67,192, 57, 97,153, 51,174,213,225, +182,178,214, 79,146,220,142, 11,124, 87, 92, 78,132,113,114,186,143, 48,176, 74, 63,142, 62,198,169, 18,192, 30,129, 14,184,122, +250, 20, 31,222,120, 13,120,161,238, 1,222,125,154,106, 81,103,120, 18, 76, 47,159,225,159,253,243, 31,226,163,157,195,232,185, +137,242,208, 4,110,173, 71, 90,135,213, 93, 49, 35,251, 92,102, 11,204,169, 2, 29,253,172,168,197,217, 74, 7,191, 17,185, 93, +174, 42,248,133,187,223,223,155,169, 86, 80,206, 93, 42,117, 62,222,239, 19,183,131, 91,245,203,183,253,101,199, 24,238,127,203, + 93, 10,242, 91,192, 25,234, 15,138,171,229,175,170, 73,168, 69,158,209,157, 98,144, 91,158,205, 59, 84,110,111, 57, 38,188, 85, +237,254,101, 11,122, 71, 10,238, 86, 80, 10,217,184,185,185,193,203, 87, 47, 1, 1,254,234, 47,255, 53,252,135,255,209,223,197, + 95,254,171,127, 13, 87, 87, 87,248,224,131, 15,212,134,100,201,104,103,155, 11,220,127,112, 31,193, 7,156,157,159,225,226,252, + 2, 62, 4,252,216,251, 95,197,197,229, 37,254,249,239,254, 46,254,209, 63,252, 95,112,245,250, 10,193,188,213,231,231, 27, 11, +251,112,112, 78, 71,234,213,138, 86, 11, 83, 41, 5,243, 52, 25, 67,124, 85,164,247,103,162,250,208,175,145,158, 58,202, 77,237, +158,101,214,206,117,158, 23, 8,128,199,239, 60, 6, 32,154,196, 22,147, 10,211,108,255, 92, 35, 61,171,104, 50, 53, 81,155,104, +176,200,178, 52,151,136, 90,173,130,102,178,103,237,234,151,101,209,177,118,112,173, 59,100,231, 20, 78, 82, 59, 88, 34,140,227, +136,175,126,237,107,136, 49,226,249,139,231, 16,209,131, 68, 49,188,105,177,107, 39,120,237, 6,171,123, 35,120,223, 52, 14,250, + 57, 58, 27,213, 75, 99,128, 83,247,112, 33,227,167,231, 82, 11,172, 51,113, 99,110,132,189,135, 15, 30, 96,220,156, 33, 46,250, +153,141,155,177,165, 21, 58,199, 24, 55, 35,134, 97, 64, 46, 5,211, 50, 43,133,205, 43,242,180, 2,119,168, 19,122, 49,187, 86, +152,213,242,165, 73,108, 57,197,134,220,173,101,184, 82,242, 68, 84,215, 48,205, 51,226, 50,235, 40,222,242,212,235, 33,130, 26, +146,214, 40,127,206,129,236,253,175, 76,121, 90, 25,252,246, 30,106, 72, 19,147, 50,242, 29,123, 75,102, 43, 43,234, 86,180, 75, +174,239,155,161, 7,138,108,121,244,197,196,119,245,122,170,251,242,138,255,101,166,118,159,171,246, 77, 77,197,177, 8,168,164, +246,236,174,171,186,250,125, 84,110, 9,106,144, 75,221,191,219,235,234, 19,231, 42,167,164,119,247,100,155,234,120, 22, 5,219, +128,215,169, 14, 85, 97,159,190, 87,169, 98,185, 86,219, 10,156, 3, 10, 57,141,124, 69,182,228, 55,194, 72, 25, 8, 14, 5, 3, + 54,156,176,245, 14, 55,187, 0,183,123, 13,208,172, 83,135, 59,218,236, 38,160, 38,186,163,253,190,131, 24,123,215, 51,137,112, +156,199, 74,132,113, 24,225, 83, 94, 31,202,212, 0, 48,198,115,175,254, 66,233,125,223,221,222,180, 79, 72,106,126,108,105, 2, + 45,182, 16,130, 66,189,181,168, 14,212,215, 93, 65,245, 92,175,217,230,149, 11, 95,189,166,116, 52, 82, 63, 13, 86, 81,149, 52, +175,202,176, 54,169,165,213, 19, 89, 87,159,165,180,241, 62,186,177, 54, 73, 65,130,195,112,126,129,129,120, 93, 57,128, 86, 12, +108, 7, 18,168,164,169,176, 57,195,163,182,199,238, 60,220,180, 30, 43, 24,171, 71,159,154,202,151, 86,112,141,144,217, 41, 50, +144, 11,118,139,193, 36, 58, 17, 7, 81, 65, 42, 2,103,130, 63,181,154,148,206, 38, 39,134,234,164,182, 31, 63, 74, 44,107, 12, +111, 29, 35, 21,194, 45, 24, 74,253,231,220,204,127,104,136,221, 86,111, 75,133,222, 28,199,165,244,211,131, 35,255,249, 29,197, +148, 78, 15, 23, 93, 97,166,198, 99, 86,251, 35,173,114,125,203,164,198,209,123,209, 67,167,216, 53, 74, 77,115, 33,221, 97,227, + 71,119,160,223,185,222, 82,168,146,237,233,110,182, 91,108,183, 55,120,252,248, 9,126,250,103,190,131,175,127,253, 39,240,231, +255,226, 95,196, 47,254,210, 47,225,112,152,240,253,239,125, 15, 32,193,229,197, 37,198,113,196, 52, 29,144, 54, 9,227,102, 52, +229,177,118,154,247, 46,239,225,222,131, 7, 88,230, 25,255,228, 31,255, 35,252,211,255,253,255,192, 60, 71,220,187,119,105,187, + 71,198, 28,151,246,190,193,132,101,158, 49, 29, 38, 92, 94,156, 67,164, 96,154,167, 54, 58,173,194, 73,145, 2,207, 10, 48,137, + 41,106,204,168, 9,197,106,156, 45, 68,161, 38,211, 60, 25, 20, 69,218,232,252,197,179,231,120,254,241, 83,252,248,215,191,142, +105,154,145,162,218,156,196, 57,196,105, 94,131, 83,108, 53, 21,188,142,238,183,219, 29,166,105, 6, 59,106,226, 58,102,135, 97, + 8,152, 38, 61,136,100, 35,158, 57, 70, 19,216,181, 53,129,237, 93,116, 29, 48,226,201, 59,239, 98,158,103,188,121,243, 26, 69, +106, 40,204,170, 88,103, 6, 98, 44,150, 20, 86,187,118,187, 22, 24, 96, 23, 26,234, 85, 25,239,104,148,200,122, 48, 80, 70,188, + 98, 76,197,160, 57,165,232,133,158,114, 70, 8,132, 7, 15,238,227,226,242, 94,155,116,184,102,125, 83,118,253, 18, 29,198, 81, + 33, 52,234, 52, 96, 21,197,149,130,148,102, 21,228, 85,254, 61,151,102,253, 13, 33,224, 64, 14, 49,205,144,168,135,128, 97, 24, + 86,177,148, 89, 21, 85, 3,160,227,235,121,137,216,239, 15,136,203,220,184,244,197, 32, 64, 68,108, 40, 92,213,218, 20, 1, 22, + 35,252,113,245, 64, 55, 37,182, 30,134,152, 29,230, 88, 71,219,104, 98, 52,231, 28,156,168,144,110, 94,116,221,224,216, 55, 64, + 84,150,130, 37,101,140, 68, 96, 23, 20,149,203,172, 40,217, 18,117,162,144,149, 60,167,130, 60, 61, 4,128,216,210,248, 84,209, +206,206,112,174,214, 20,165, 12,181,155,177,179,107,222,153,144, 15, 71, 29,183, 0, 64, 42,141,176, 89, 76, 48,237, 28, 80,152, + 90,125,169,140,121,117,142, 59,219,109, 23,101, 24, 16, 65,216,105,206,132, 36,253, 92,172, 19,173,186, 41, 61, 28,171,110, 41, + 18, 97, 94, 8, 27, 89,112, 0,161, 28, 4,227,184,197,141, 63, 7,230, 17,247,249,128, 23, 23,231, 40,238, 30,184,220,124,110, +215,208, 79,155, 5,178,250,210, 72,190, 12, 96,246, 24, 89,221,233,178,124, 65, 89,247,222,117,252,126,164,253, 41,182,118, 54, +150,250, 81,194,217,202,117, 7, 52,186, 85,186, 14,155,142, 34, 74,187, 14,154,186,214,151,212, 43, 94,186,176,147,110, 89,222, + 58,145, 30, 48,192, 70,149,235, 5, 85,217, 68, 96,220, 85, 42, 22, 89,139,248, 73,249, 90, 1,111,189, 57, 78, 31,154, 76,114, +228,195,206, 53, 94,245, 4,242, 82, 44, 26,181,249,223,237, 80, 83,101,109, 10,255,239, 99, 89, 86,143,123, 29, 69,185, 10,169, +233,144,149,174,229,168,175,199,165,250, 94, 11,128, 51,199,240,165, 96, 54,122,212, 17,255,223, 62, 87,103, 59,238,227,249,198, + 90,160,165,139,128,109,115,128, 78,117, 73,178,254, 51,177,247, 80,108,175, 78,253,232,162,138,255,122, 37,254, 23, 90,201, 78, +142,163,116, 2,192, 33,185,181,140,170, 5,174, 30,204, 64,167, 34, 53, 58,242,141,211, 91, 92,158,255, 34,144,153,250,135,217, +224, 31, 47, 94, 60,199,123,239,253, 24,254,198,175,253, 26,254,236, 47,254, 34,190,246,181,175,225,145,197,110, 62,127,254, 9, +166,233,128,193,248,228,117,212, 60,110, 54,240, 33,224,250,234, 10,111,174, 94,227,209,131, 71, 32, 38, 92,223, 92, 3, 4,124, +247, 15,254, 0,223,253,189,223, 71,112, 1,231,143, 46,148,195, 95, 18,156,117,115, 53,114, 52,231,130,195, 97,210,157,115, 74, +136, 85, 61, 92, 57,231,230,102,168, 15,102,137,177, 21,184,154,120, 87, 61,219, 68,186,199, 78, 49, 98, 51,110, 80,114, 81, 72, +137,113,247,191,255,221,239,227,225,131,135, 24, 66,192, 60, 77, 42,242, 50, 37,125, 21, 89,229,168, 34, 60,239, 29,118,219, 69, + 71,196, 78,191,163, 10, 86, 57,219,108,116,100,110,135, 91,177,244,182, 58, 85,144,106,143, 3, 35,150,217,212,236, 1,151,247, + 46, 17,211,130,237,205,181,249,198,237,154,116,138, 96, 45,101,133,254, 20,216,120,214,235, 62, 54,155,155,192, 57,223,148,213, + 96, 49, 26,102,109, 47,184,117, 60,108, 56, 66,103,172,243,100, 86,175,205, 56,194, 49,225,236,236, 12,222, 43,131,253,226,226, + 12,165,232, 42,131,201, 25,210, 53,225,234,250, 6,206,123,156,109, 70,156,157,159,105,170,154, 44, 42,134,203, 25,206, 44,118, +169,102,190,219,161, 42,132,128,148,102,139,115, 85, 79,190,179,169,129,118,161,218,205, 46, 49, 97, 89, 52,222,118,153, 38,196, +164, 28,120,117, 33, 16, 50,156,218,190,140,229,142,186, 38,180,231,160,216,148, 64, 15, 76, 3,138,184, 22,155, 27,156, 83, 71, + 82, 73,235, 97, 57, 87, 23,137,114, 3,124, 88, 57,244,193, 51,146, 56,155, 16,136, 6,164,152,150,199, 59, 66, 46,190,137, 7, + 75, 76, 96,174, 26, 28,221, 87, 35, 39,108,198,128, 40, 30, 44, 9,228, 7, 76,115, 65, 73,139, 22, 82,239, 33,164, 59,247, 34, + 58, 61, 40, 96,157, 26,216, 52, 81, 51,219,179, 29,226, 24,206,105, 62,122,177, 67, 98,109,178, 42,110,187,170,218,165,232,207, +112, 22,193, 90,138,249,228,111,237,237, 44,234,214,192, 72,158, 11, 16, 28, 18, 13, 10,230,201, 5,146,236,217,236, 9, 25, 30, + 23, 0,198, 11,193, 50,222, 7, 14,207,127,132, 71, 12,173,207, 52,249, 2,117,252,201,179, 73, 78,160, 91, 62,149,154,176,214, +119,241,116,236,201,237, 44,243,100,194,180, 53, 5, 75,218,104,214,190,255,174,137,150, 99, 30,168,104, 10,220,186,153, 80,193, + 91, 18, 2, 49, 26,206,181,144, 22,238, 85,217,219, 17,187,136, 58, 94, 56,181, 61,123, 85,233,103,208, 49,213,172,138,220,108, + 90, 64, 93,192, 12, 11, 91, 20, 96,105,106,112, 11,139, 90,203, 96,103,127,203, 29, 97,142, 77,189, 46,109,239,212, 97,107,121, +205, 39, 47, 29,242,133,137, 48, 50, 43, 77,138,165,141,228,180, 96,230,150, 28, 7,168, 5,144,218, 92,163,216,180, 67, 15, 11, + 83, 94, 87, 16, 77, 56,102,159,149,216,207, 42, 0,156, 15, 24,153,176, 44,186,227, 98, 58,182,165,245,185,246, 26,241, 88,218, + 85, 82,167, 17,178,158,165,142,166, 53,165, 51,108,223, 85, 40,123,113,220, 49, 15,253,244, 20, 74,199,208,163,110, 74,208, 0, + 53,162, 15,158,251, 15, 30, 64, 74,198,245,245,141,193, 44,186,233, 19, 81,231,125,125, 11, 4,231, 95,160,160, 75,119, 96,202, + 57,225,179,151,159,225, 87,126,229, 95,197,223,249,247,255, 3, 60,126,242, 4, 47, 95,189,196, 52, 77,120,241,233,167, 72, 81, +247,203, 23,231, 23, 42,126, 51,129, 97, 78,218,181,236,247, 91,124,244,241, 71,152,166, 3,150,175, 70,188,247,222,123,184,190, +190,198, 71, 31,126,136, 23,207,158,193,185,128, 48,168,182, 2, 89,199,156,245,251,143, 49,153,151,121, 86,181,184,117,219,113, +209,208, 15,231,188, 33, 78,215,195, 86,206, 73,215, 68,214, 49, 42, 59,130, 49,207, 11, 28, 89,146, 22, 4,227, 48, 0,132,230, +119, 39, 6,194, 56,224,245,171, 87,248,254,247,190,135,239,252,137,239, 32,198,132,233,160,226,188,121, 90,148, 65, 96, 32, 22, +102,194, 52,205,152,166,185,121,134,107,177,200, 37,219,107,212,195, 77,140, 73,239, 85, 59,236, 84,146,101, 50,128,139,250,216, + 5,193, 84,248, 87,111,118,237, 0, 81,239,127, 13, 57, 81, 63,122,177,195,142,178, 15, 4,158,156, 21, 53,157, 16, 84, 11, 31, + 1, 22,173, 90,227, 89,215,213,132,171, 5,161,238,151, 29, 35,219,142,152, 73, 61,246,155,179, 51,164,156,192, 0,158, 60,126, +140, 57, 38, 92,191,121,141,113, 51, 98, 28, 55, 88,102,101,180,143, 33, 40,239,188,141,110, 77,131,195,174,101,206,215, 56, 80, +116,241,173,232, 94,223, 60,207,112,206, 91,119, 15,148,156,218, 20, 35,198,132,253,254, 96, 35,123, 52,144,140,247, 85,171, 80, +119,122,198,127,111,252,134, 90,184,244,125, 47, 77,144,104, 30,124,210,208,157, 4,141,102,117, 4,132, 33, 32, 22,125, 46, 15, +230,151,175,154,157,148, 51,188,115,224, 48,168, 46,160,100,211, 32, 40,154,183, 56,160,164,168, 69,157, 25,185, 36, 21,221,193, + 43,192,135,117,189, 25,156, 83,208,144, 61,255, 98, 18, 8,229,150,216, 38,164, 43, 27,199, 90,164,139, 84,166, 72,105, 40,226, +166, 36,178, 16, 18, 42,221, 90,165, 2,175, 45,225,141, 44, 85,174,142,191, 11, 88, 89,244, 22,243, 92, 17,218,148,235, 62,190, +162,192, 9,169,168,251, 93,197,199,140,156, 4,169, 36, 32, 9,238,157,103,224,252, 18,185, 92, 98, 12,130, 41,108,224,246,193, + 26, 88,254, 82, 5, 90,142,251,178,207, 23,212,201, 91,250,120, 1,188, 38,249, 24,192,193,118,223, 78,122,154,217,233,206,122, + 45,226,250, 33,104, 1, 46, 96, 8, 19,156,245,220,165, 31,221,214,113, 40, 41, 86,176,142,181,115,237,232,105,197,191, 86,220, + 93,127, 80, 97, 58, 38,145, 73,239, 93,111, 88, 86,165,206, 73, 17, 36, 82,228,106, 39, 73,238,114,171, 45, 58,207, 8,112, 93, +136, 83, 19,213, 21,233,166, 12,167, 33, 33,212,117,132,212, 1,109,122,130, 91,111,219,234, 56,212,197, 62,131,156, 35,108, 5, +217,225, 98,215,152, 71, 24, 59,127,221, 8,213,255, 39, 13, 49, 91,100,221,219,107, 36,122,181,253, 29, 43,211,203,145,114,188, + 51, 68,208,177, 45,171, 72, 70, 96,205, 41,142,205,144,134, 14,117,139, 59,144, 63,119, 67, 94,228,132, 41,192,119,140,226, 79, +255,170,222,103,103,133,166,146,236,122, 93,196,126,191,239,146,188, 86,189, 5, 3, 88, 22,197,198, 14,193,119, 72, 98,220,185, + 6,248,145,170,185,172, 26,128, 79, 62,249, 4,127,237,151,127, 5,255,245,127,243,223,226,250,234, 13,190,255, 71,127,216,148, +212,185,168,184,233,226,252, 2,222, 7,236,119, 59, 45,166,169, 96, 89, 18,188, 23,236,118, 59, 21, 54, 1,120,241,236, 25,210, +178,224,250,250, 26,175, 95,189,132, 31, 6,112,210,232, 71, 79, 14, 20,213, 94,180,221,239, 44, 5, 77, 15,129,203,188,180,188, +234,108,150, 38,207, 1,203,162, 97, 30, 67,176, 20,183, 42, 30,100, 21, 54,137,141, 18,139,201,169, 93, 8, 72, 86,124,157,117, +160, 41,229,102,213,130, 0,195, 56,226,195, 15, 62, 68, 41, 5,143,159, 60,193, 60, 45,216,238,182, 74, 18,203, 69, 15,165,182, + 31,142, 49, 90,174,119,208,174, 12, 5, 41,102, 32, 91,106,151,137,157, 32,250,251,136, 9, 34,202, 95, 79,197,166, 47,118, 47, +186,160,132, 55,221,225,211, 10, 83,169,123, 92, 98,120,118,200, 40, 45,184, 36,167,210, 94,119,177, 93,182, 6,183,232,129,231, + 40,225, 15,202, 37,103,251,179, 85,199,161,252,245,130,179,205, 25,136,207,180, 35,158, 15,184,188,252,138,170,176, 45,206,245, +229,171, 87,246, 51,245,126,139, 75,212,216,213, 81,249,228,243,178, 32,140, 67,243,236, 23,123,111, 85,217,158,179,118,174, 42, + 14, 75,166,113,240,166, 55,168,233,114, 11,166, 89, 44, 87,220,196,144, 54, 41, 41, 57, 53, 86,124, 24,124, 43,252,197,246,202, +149,102,149,107,132, 44,243,170,177,104,162, 56,152, 99,160,128, 44, 43,156, 73, 48, 14, 1, 57,123,204,203, 4, 89, 34, 96,246, + 68, 98, 13, 59,129,117,233, 89,106,232, 20, 12,252,163,223,117,125,158, 7, 79, 88, 40,168, 58,223,171,205,185, 88,150,187, 99, + 70, 33,198,146, 50,216, 69,109,168,164, 96,112,132, 50, 12,200,203, 12, 87,244, 64, 10,130, 18,222,114, 2, 59, 91,141,160,103, +175, 83, 91, 48, 83, 93, 57, 56,213,134,192, 38,188,206, 14, 55,176,194,205, 6, 29,171, 24,110,174,171, 25,251,121,108,117, 56, + 23,128,235, 36,192,148,241, 74,170, 75, 0,216, 14, 29,132, 36,192, 18,129,179,180, 96, 24, 6, 92, 12, 14,111,206,206, 32,215, +231,128, 92,129,104, 56,161,188,190,173, 88,203,241, 86,249, 88, 50,255, 5, 20,186,245,207,248, 35, 58, 89,243,140,247,163,209, +219,201, 90,220,209,217, 42,148,133, 13,252,159, 27,219,220, 0, 53,141,154,198, 13, 60, 35,157,170,189,141, 98, 5, 72, 86, 48, + 93, 39,199, 43,157,255,119,253,247,143, 49,167,237,160, 17, 60, 46, 57, 99, 94, 10, 22,225,166, 28,239, 41,103, 98, 52,179, 74, + 81,203, 85, 73,205, 43,252,164, 9,161,228,148,251,222, 69,184, 74,209,216, 85,172,200, 90,190,197, 96,175,135, 22, 67,104, 22, +193,174, 50,146,173,144,115, 35,175, 81,203,165,215,211,189,238,208,114,139, 15, 45, 29,135,110,141, 95, 93,215, 20,189, 7, 92, + 47,184,146, 98,235,240,169,243,176,215,172,100, 38,116, 96, 13,105,177,148,181,226, 23, 40,183,224, 46,161,226,241,116,156,142, +236,117,206, 38, 8,233, 20,209, 42,114, 82, 51,201, 92, 17, 5,155,243, 11, 4,102,108,119,219,149, 0, 88, 15, 68,181,249, 72, +169, 19,242,173,140,117,102,198,183,191,241,117,188,185,186,198, 39,159,190,194,184,217,172,169, 77,119,252,238, 47, 59,114,239, +149,238,135,249,128, 71,143, 31,227, 55,127,235,111, 67,164,224,233,179,143, 21,134, 1,194, 52, 77, 45, 26, 83, 83,213,150, 54, + 74,139,113, 49,181,182,179, 34, 49, 55,117,248,245,213, 85, 83, 98,171,168, 72, 5,104,176, 28,237,253,110,167,126,100,235,166, +230, 57,218,131, 95,119,209,142,244, 97, 27,147, 6,105, 12, 33, 52,155,152,115,238,200,121,192,149,130,152,149, 77, 46, 16, 44, + 81,253,207, 98,170,250,201,192, 50, 67, 80,123, 28, 28,129,201,225,227,143, 62,194,126,191,199, 48,156, 97,158, 22, 77,221,170, +201,102, 73, 11,251, 56, 4, 27,101, 10, 66,208,127,118,144,201,194, 72, 92, 91,251, 56,167, 17,166,243,148,154,155, 66, 74,237, +238, 5,204,106, 17,171, 40, 81,231,188,105, 6,168, 5,162, 84,193, 29, 32, 6, 50, 73, 56, 59,219,232,116,162, 40,203,218,135, + 17,206,113, 27, 73,214,177, 51, 51,129, 72, 11, 58, 19, 3, 92,154, 14,132, 44, 20, 37,155,133,108, 89, 34,206, 54,163, 70,171, + 70, 59,112, 5,143, 37, 38,200,188, 96, 51, 42,126,118,119,216, 35, 56,135, 92,212, 23, 31, 66,104, 96, 27,129,166,224,133, 16, + 32, 49,161,250,105,171, 56,205, 49,195, 7, 15,183, 56, 99, 0,100,123,175,122,237, 68, 75,201, 43, 82, 48,205, 26,188, 83,114, +130,243, 14,211, 60,131,179, 62, 71,196,144,168,149, 41, 66,193,168,109,166,122,175, 76,126, 38,106, 36, 9,239,116, 18,145,179, + 6,245, 40,219,161, 52, 55, 77, 50,132,110, 41, 25,222, 5, 12,158,145,178, 30, 18, 7,239, 0, 23, 48,207, 17, 76, 26,150,146, +114,129, 71, 4,135, 1, 49, 9,114, 92, 12,225,172, 36, 58,201, 25,222,217, 8, 63, 23, 76, 75,193,192, 19,200,143, 16,203, 76, + 15,158,129,226, 33, 98, 7, 23, 35,205,149,148, 49,146,128,252, 96,252,142,210,124,230,197,166,147,206,236,214,100, 60, 19, 97, +130,148, 85, 16, 7,115, 18, 20,203, 80,175, 86,103, 93,189,112,251,121,140, 21,100,198, 86,208,205,255,141,204, 14, 84, 52,150, +186, 66,203,114, 33,108,179, 64,182, 17, 15, 47,175,240,248,226, 62,158, 63,120,132,242,242, 1, 56,189, 81,143,248,151,232, 34, +232,100,242, 73, 54, 41,125,219, 98, 94,238, 40,238, 4,130,167, 62,222,178,137,195,208, 40, 96,108, 39, 23,116,202,118,169,253, +163,141,187, 11, 17,194, 17, 34,100,245,166,175, 27,252, 53,144,165,138,224, 88,128, 62,246,130,164, 19,203,153,207,186,174,109, +235, 16,155,155,146,252,196,196, 44, 25, 49, 2,251, 64, 24, 44, 32,185,212, 78, 86,122,129,221,218, 73, 82,167,156,151,126,206, +220,173, 24,212,111,207,183,186,115, 84,202, 83,219,189,168, 90,189,242,224,235,141, 83, 10,153, 39, 82,218, 77,213, 16,170,245, +107,144,154, 52,182,202, 16,179,121,242, 65,134,237,181,215, 80, 11, 85,145,110, 53,129, 78, 56, 98,194,198, 42, 36, 59,133,233, +178,141,206,139, 20,205, 58,174,254,242, 58, 53, 56, 17, 95,228,163,232, 89, 28,241,227,235,170,160, 14,238,251, 75,215,217, 58, + 32,153,213,141, 79,199,217, 85, 99, 97,223,149, 62,220, 92,219,209,247, 5, 29, 39,130,186,118,184,176,189,127,201, 25, 75,204, +248,214, 55,190,129,135, 15, 30,226,163,167,207,144,114,178,149,194, 23,143,221,223,118,110,238,127,247,246,230, 6,127,254, 47, +254,101,139, 53,125, 1,239, 60,102,153, 91, 46,118, 8, 3, 94,125,246, 9, 98,202,120,255,253,175,218,131, 64, 16,134, 0,159, + 29, 14,135, 3,174,174, 94, 99,137, 17, 50, 45, 16, 20, 44, 75,180,213,136, 22,115,178, 7,126,140, 9,243, 50,163,216,206, 57, +101, 85,124,107,156,165, 62,100, 82,212, 81,240,102, 51,106, 12,106, 39, 10,148, 34,128, 19,139,235, 20,176,217,131, 10,218,180, + 3, 0, 0, 32, 0, 73, 68, 65, 84,234, 62,156, 57, 96,178,130,206, 76, 6,242,209, 11,188, 22,244,100,105,100, 62, 56, 20, 38, +124,250,233,103,240,206, 99,179, 57,131, 15,174,105,111,152,200, 58,111,182,200, 82,193,126,191,199, 60,107,130,216, 48, 4,221, +237, 23,117, 21,195, 25,166,150,149,235, 94,191,214,154, 29, 62,142, 22, 8, 66, 48,222,195,122, 40, 22, 43, 94,165,148, 54,119, +139, 49,129,152,109,132,173, 99,249, 58,118, 23,209,247,238,205,195, 31, 83,194, 16,130, 81,236, 52, 91,187,174,132,152, 86,235, + 87,253, 78,152,128,135, 15, 31,129,109,149, 82, 67, 86, 80,185,245,118,218,116,172,216,215,205, 56, 52,155, 86, 74,169,209,242, + 6, 79,240,126,163,157,241,162,235,141, 97,112, 42, 32,131, 32,120, 21,243, 5, 31,112,176,232, 84,213,252,233,247,144,243,140, +221,126,143,155,235, 27, 76,243,161,233, 24, 28,171,182,192, 49, 43,194,182, 19,171,162,238,210, 77, 52, 89,151,146, 58,225,145, +198, 46, 96, 19, 14,214, 3,114,202, 51, 24,192, 16, 2, 98, 18,212, 5, 34, 76,244, 92,239,207,195,188, 96, 12, 14,227, 16, 32, +153,173,248, 82,235,252,171, 98,129,157,195,180,100,164,101,182,162, 56, 52, 42, 94,140, 25, 68, 25, 27,239, 81,200, 41,178,202, +246,221, 53, 8,172, 70,244,178, 99,100,114,160, 84, 26, 5,174,213,149, 6, 76, 83, 13, 64,229,172, 87, 56,153,173,206, 1,147, +202,213,186, 68,166,205,201,202, 6,182, 24, 86,103, 84, 58,229,168,144,115,107,156,116,187,191, 84, 1, 15,242,112,208,216,236, + 76,140, 93, 6,252, 46,227, 62, 95,227,236, 94,192,110,243, 24,110,251,113,107,162, 62,255, 89, 68, 56,113,105,183,245,234,221, + 45,249,219, 33, 28,126, 53, 39,173,125,152,180, 2, 80, 71,184,212,110, 40,119, 20, 32, 82,149,117,132, 76, 43, 99, 93, 11, 81, + 65, 17, 94,211,116,108,180,158, 76, 10,199, 77,200,117, 28, 23, 90, 81,167,183,181,109,210,236,117,232,252,210,235,207, 1,184, + 36,204, 19, 97, 38, 52,110,121, 5,252,131, 84,221, 47,160,163,124,116, 24,109,142,251,254,177,178,208, 69,247,119, 36, 93, 44, +107, 85,218,247,197, 64,164,209,226,216,240,142, 5,171,119,176,228,212, 56,242,125,164, 42, 80, 85,232,117, 91,190,114,217,148, + 61,207,141, 58,199,213, 78, 86,145,138, 56, 78, 74,235, 22,199,186,199, 41,132,163,153,227,137, 92,146,204, 46,210,139, 52, 58, +244,220, 58, 77,225, 14, 28,115, 82,232,164, 15,187,169,190, 81, 59,120, 20, 8, 2, 49, 60,160,248, 92, 19,118,121,239,143, 99, +227,160,226,164,195,246, 6, 59,232, 94,175, 38,115,209, 91,198,251,107,225,215, 99,144,119, 14, 63,248,224, 67,188,124,115,141, +239,124,235, 27,120,112,239, 26, 47, 94,190, 70, 8,252,185, 5,157,190,128, 15,223,207, 21, 74, 41,120,242,228, 49,174,175,174, +176, 63,236, 48,140,193, 2,110,212,130,248,236,233,199, 56, 76, 7,124,227, 27,223,196, 48,142,152,230, 3,166,195, 1,135,195, + 30,251,253, 14,251,221, 30,187,221, 94, 65, 35, 81,139,121,140,139, 22,219, 37,226, 48,205, 77, 45, 62,207,150, 81, 78,140,195, + 60,181, 44,238, 90,120,171, 45, 77, 80,204,246,163,221, 93,202, 74, 70,171,157, 69,178,206,150, 69, 17,173,165,148, 22,155,169, +255, 60,129,202,138,119,170,190,232, 37,198,245, 90, 50,145,108,221,203,239, 15, 59,240,172, 5,136,109, 26, 16,227,130,152, 8, +165, 76, 32, 84, 69,123, 70, 24,130,170,177,151,108,163, 90,177,215,153,209,130, 53, 22,141,122, 69,135, 54,141, 41, 91,200,139, + 94, 7, 33,216, 46,188,117,243,122, 47, 20,139, 51,245, 76,170, 19,240, 30,231,103,103, 77, 24, 22,140,237, 94,121,245,108,180, +176,148,179,161, 79, 87,199, 12, 49, 55,175,182,179,213,198,217,249, 25, 46, 47, 47, 45,158, 84,177,166,136,201, 96, 57,206,252, +249, 10,182,217,108, 70,125, 54, 24,251,158,237, 64,226,172,136,234,184, 28, 96,167,186,129,105,158, 27,101, 77, 68, 20,140, 99, + 66,212,156,197, 14,165,250,218,247,251, 29,174,222,220, 96,119,115,163,107, 18,123, 47,181,179,171, 97, 57, 57, 11, 42, 50,143, +186,216,220,170,222,214,105, 97,105, 41,111,203,188, 32, 75,174, 67, 75,180, 95,104,122, 11,129, 52, 11,226,180,164, 6,193, 10, +222, 1, 24, 48, 47, 51,206,153, 64,110, 48, 33, 43, 33,103,106,222,115, 48,225, 48, 39,164,168, 89,228, 73, 8, 89,162, 77,101, + 84, 35,144, 88,215, 21, 34, 12,205,236,241,109, 18, 9,155, 60, 56, 2,200, 57, 21, 44,215, 80, 41, 75, 20, 37,177,157,185, 57, +122, 80,242,250, 76,227, 21, 50, 68,235,220,189,205,137,217,113, 27,253,215,103, 42, 75,110,130, 66,234, 96, 49,250, 89, 23,165, +151,114, 65, 6,195, 21, 81,192,154, 40,107,193, 49,225,166,120, 92,236, 50,238,243, 27,220,156,159, 1, 55,231,128,220, 64,104, +232,224, 88,119,236,203,169, 83, 42,223,234, 56,232,238,241,251, 91, 88, 53, 53,112,173, 25,201,214,156,108, 90,199,199, 94,227, + 80, 89, 8,177,235,232,114,135,170, 75,178,142,214,185, 51,191, 53,224, 30,161, 21,225,106, 23, 40,178,198,156,172,246,174, 42, +243, 94, 13,238,165,143, 63,149, 90,164, 13,142, 96,223, 85, 21,192,113,119,232,112,189,183, 89,122,235, 0,110, 49,229,251, 92, +212,220,197,149,182,195, 4,250,221,127,223,209,210,145,186,189,130,117, 20,131,217,241, 83, 68,142, 51,196,233,132,103, 79, 56, + 37,253,130, 69,142,252,229,100,197,177, 28,209,211,214,207,125,125,232,211,209,251, 65,221, 67, 1, 71,246, 15, 2,142,242,123, +143, 44, 22,157, 74,146,238,184,166,228, 14, 17,218,113,194, 26, 33,218, 7,160,233, 85, 3, 30, 61,124,132,237,205,149,142,249, +169,215,103,232, 13,236,112, 42,186,187, 29,186, 90, 57,173, 45,114, 86,244,251, 26, 55, 27,136, 20,252,193,247,190,143, 37,234, +184,243, 75,139,224,222,242,247,122,104,156, 15, 1, 31,127,244, 17,118,187, 45, 54,231, 27,196,152,224, 93,192,230,114,131,253, +110,135, 16, 2, 46, 46, 47, 17, 83,194,171,143, 63,196, 52, 79,152, 15, 19,182,187,109,219,155,214, 34, 52,207, 19,166,195,164, + 52, 52,139,197, 76, 41, 34, 67,247,200,185, 84,175,185, 88, 68, 40,161, 44,121,245, 82,155, 56, 76,105,101, 89,167, 87, 54, 94, +149,234,141, 46, 64,204, 26,155,169,251,233,100,227,111,110,175,163,142, 75,184, 22, 6,183, 2, 74,156, 87, 47,115,182,215,209, +148,192,185,192, 3,200, 37, 34,217,232,157, 44, 35, 32,219,138,200, 7, 15,111,233,114,234, 24, 72,237,193,218, 48,159, 38, 26, + 91,230,185,117,144,236,212,250, 54, 12,131,249,156, 93,139,139, 85, 17,157, 22,174,186, 59,206, 57,155,134, 64,199,250,193, 59, +219,185,147,142,240,153, 91, 42,152,118,235,107,246, 64,141, 86,109,239,173,118,181, 45, 72,166,224,241,163, 71, 24,198, 17,100, +171,169,246,104,146,181,195,175, 30,234,154, 90, 23,130,199,224, 7,221, 69, 27,126, 55,198,136,156, 76,215,192, 58, 13, 32,169, + 9,103,197, 8,140,102, 39,117, 12, 74, 70,132,172, 81,185, 49,227,102,187,195, 50, 77,205, 66, 72, 78,204,162,199, 13, 6,195, + 84,197,202,170,223,105,254,110, 91,189, 52, 46, 70,209, 9, 64,229, 22,212, 67, 74,105,242, 61,110,172, 0,174,162,178, 26, 22, +195, 4, 36,194,217,232, 17,195, 57, 82,138,240,172,168,218,146, 34, 6, 79, 72,228,176, 28,102, 29,161,103, 81, 17,222, 24,144, +197, 38, 76,166, 86,215,179,187, 30,226,152, 84,216,168,255,205,171, 16,186,136, 38,105,146,131, 43,130,130,122,152, 90,153, 11, +212,220, 49,132, 66,202, 43, 32, 42,104, 9, 27,166, 37, 17,211,110, 48, 74,115,244, 16,178, 69,196,186,149,181,210, 38,133, 90, +240, 87,206, 7,175,224, 24,169,177,173,128, 80,177,122,163,247,243, 82, 28, 30, 32,227,147, 75,143,252,250, 49, 92,188, 6,156, +172, 97, 98,132,219,193,213,114,187,149,160, 35,238, 10, 29,173,117,235,100,251, 46,189,144,175,175,216,209,186, 7,175, 39, 3, + 1,161,176,146,214,130, 46, 73, 49, 23,171,183,116,250,195, 10,164, 48, 10,173,163,238, 22,103,216,205, 90,185,195,113,137, 53, +148,220, 6, 5,210,198,209, 77,216,102, 93,180,116,209,161, 90, 52, 24, 27, 79, 8, 82,176, 20,157, 20, 52,240, 74, 23,155,154, +251, 9,132,116, 60,224, 58, 74,233,126,254, 10,178,169,251,244,117, 95, 13, 19,147, 84,191, 98, 43,168, 77,148,213,137,238,236, +162,225, 38,236,113, 96, 35, 83,233,239, 59, 1,166,212, 88,217,238, 80, 34, 93, 1,150, 2,245,182, 10, 53,161,156, 28,209, 80, +112, 11,196, 35, 29,133,143,106,103, 87,199,213,189,157,205,216,207,171,176,111,133,224,208,201,174,156,190,196,248,186,118, 15, +149, 91, 79,166,209, 96,246,184, 56, 63,199,246,230,141,238, 27,153, 45, 63, 96,141,145,173, 88,220, 83,244,140,220, 18,213,169, +199,129,187, 34, 4, 3,193, 28,101,178,139,124, 97, 71, 46,111, 27,130,117, 39, 48,133,153, 4,252, 95,255,231, 63,195,203, 87, + 47,241, 51, 95,249, 25, 92,223,220,192,251,128,171,215,175,177,223, 31,240,240,225, 35,248, 65,173, 95,243,162,251,114, 29, 19, +235,245, 51, 79,179,238,197,167, 5,113,137, 74, 98, 43,217, 80,153, 5, 57,166,230,195,175,251,227,250,157,196, 37,154,230, 66, +187,197, 98,170,223, 26,195, 75,206,117, 86, 69,152,221, 42,183,125, 92,125,128, 3,192,178,168, 24,110,240, 65,113,167, 86,236, +171,119,123, 37, 1, 42,213, 77,138,104, 64, 78,101,218, 23,129, 31,212,198, 21,115,210,244,179,150, 17,128, 6,249,224, 22,118, + 4, 44, 75,108, 93,105, 85,200,167, 92,244,225, 11,181, 47,169,248,177, 96,179,217,224,226,252, 2,251,195,190,141,248,171,248, +171,170,234,235,249, 55,120,223, 38, 8,218,145,122, 37,195, 57,115,103,228, 26,171,170, 98,185, 92,178,217,180,164, 1, 81,156, +115, 93,132,172, 52, 44,238,253,203, 11,140,155, 51,213, 32, 56,205, 66,112, 33, 40, 34, 55,174,150, 62, 54, 46,185, 42,208,125, + 11, 9, 74, 49, 99,246,241,136,201, 78, 96, 27,113, 47, 77,180, 70,208,245,128, 38,175,173, 65, 46, 26, 22, 83,144,162, 90,229, +226, 60,129,108,255, 93,167, 48,206, 14, 24, 41,107, 8,143, 99,194, 48, 4, 45,188, 89,154,159,156,137, 17, 75, 65,201,169, 57, +100,196, 14, 33, 98, 89,241, 26,136,228,145, 69,113,181,101, 37, 70,161,148,130,179, 49, 32,130, 49,239, 15,154, 57,110, 45,218, +180, 36,140, 37,130,252,166, 53, 63,203,146,116,239,207, 0, 7,135,146,109, 66,192, 14,155, 49, 88,180,105, 1, 28, 52, 55,192, +210, 41,149, 22,199, 32,225, 22, 16, 67,102,169,173, 7,178,152, 11,144, 19,188, 3,152,189,137,177,117,157, 83,245, 18, 25,170, +211, 16,219,143, 55, 97,181,152,237, 83,178, 9,210, 5,142, 10,200,208,192,109,189, 87, 12,137,222,188,255, 38, 32,183, 53,104, + 1,175, 60, 5, 1,156,117,247, 66, 74,137, 47,236,112, 73,140,247,238, 39,124,252,248, 93,240,139, 43, 80,121, 3,240, 96, 74, +124,224, 40,130, 85, 62,127, 17,120,244,119,155,227,137,222,138,147,245,149,193,158,140,247,222, 3,227,129, 2,151, 11, 74, 2, +174,172,195,230, 46,221,162,118,215, 77,252,102,123,242,100, 93,163,147, 21, 39,203, 71, 2,178, 85,148, 71, 93, 49,151,142,179, + 38, 36,232, 2, 85, 87,117,183, 93,164,131, 99,108, 88,192,133,176, 80,181,147,113, 19,159,137,117,204,237,193, 44,235,136, 89, +250,201, 65, 35,166,173, 69,156,152, 26, 98,246, 86, 49,179, 7,105,233,109,124,182,173,105, 10,127, 84,161,153,237, 82,234, 40, +159, 78,216,233, 93,200, 9,117, 59,235,190,232, 23, 27, 47,113,161, 38,248,105, 71, 30,145,246,126,155, 23, 83, 4,241,136,186, + 70, 77, 43, 81,234,106, 3, 45,123,163,121,116,235, 33,167,224,120, 69, 65,221, 94,135,186, 3, 71,175,110, 47, 39, 2,184,222, + 11,153, 69,195, 74,226,124,192, 7, 31,125,160, 1, 31, 22,114, 65, 16,120,182, 83,111, 27,185,203,109,108,109, 55, 98, 18, 8, +158, 60,121, 7,243,116,192,118,183, 55,242,151, 28,189, 93, 62,121, 77, 95, 94,240,190, 18,248,234, 20,128,136,177,219,237,112, +117,117,133,223,248,173,223,194,215,127,226,235,120,241,226, 57,156,243,120,254,244, 41,158, 63,123,134,155,237, 13,216, 57,220, +191,127, 31,143, 30, 61,198,227, 71, 79, 48, 12, 35, 94,188,120,142,156, 34,110,174,111, 0, 8,150,105,193,213,213, 21,226,162, +129, 60, 53,208,131,105,221,255, 85, 98,215, 48, 12,234, 1, 78, 73, 15,101, 44, 88, 22, 13,207, 80, 33,150,180, 16,148,156, 74, +203, 47, 39,195,213, 50, 59,140,222, 91,162, 85,110,251, 89, 17, 24,112,196, 14,156, 76, 71,239, 62,165,220, 38, 66, 68,100,135, + 98,187,175, 5, 24, 70,125, 0,198, 57, 53,107, 89, 76,186,218, 34, 2, 74, 74,152,226,210,224, 46,171, 56,179,168, 0, 45,229, +214,145,170,245,204, 30, 68,214,217,199,148,177,223, 31,154,133,176, 20,131,185, 88,113, 41, 38,230,244,222,169,242,187, 78, 82, +124, 80, 68,166, 91,179,203,235,164, 80,201,104,134,149,173, 83, 14, 11,158,241,222, 70,229,194, 13, 16,227, 8,120,248,240, 1, + 66, 8, 90, 68, 69,112,126,121,137,205,230, 12,219,221, 22,251, 69,215, 38, 69, 68, 35, 74,153,245,254, 42,130, 24, 51, 54, 27, + 21, 48,238,247, 7,189,222,141,237, 95,108,212, 93, 59, 75,103,158,239,113,244, 24,199, 51,236,182,123,157,168,160, 96, 8, 1, +251,152,241,242,213, 27,108,175,175, 20,142, 85,187,122, 83,145,107,132, 45,175, 24,103,104, 90,159, 64, 3,114,156, 81,241,164, + 75,205, 76, 45,145,173,174,190,140,173,158, 10,152,114, 59, 4,128,169,173, 12,218,157, 33,192, 16,116,210, 16, 83,105,105,123, +158, 25, 20, 60,230, 24, 17,167,104, 22,219, 26, 23,171,197, 84, 72,179, 6,198,193,195,251,128,121,137, 40, 37, 41, 22,214,212, +248,148, 18,156, 77, 21, 68, 86,237, 69,197,119, 45,169,192, 73,130, 31, 44, 12, 38,119,228, 58,118,141,207, 95,243, 62, 80,138, + 37,201, 85,186, 39,175,162,107,170,150, 54,103,129, 54,150,124, 87,185, 28,198,203, 40,194,112, 80, 30, 1,200,153,130, 95,192, +146, 76,209,175,207, 71,207,197, 94,131,117,240, 89,240, 21, 46,184,121,103,192,205,254,107, 8,215,123,128,179, 78, 15,142, 84, +251,119, 44,199,223,210,125,172,246,218,218,108,174, 44,149,227, 78,189,168,116, 63,183,241,174, 62,108, 29,170,127, 93,193, 6, +174,249,192, 59, 58,167,117, 7,165,103,194, 19,180,171,111, 66, 57, 75,236,146,245,100, 33,189,224,138, 86,207, 58,132,187, 49, +244, 74,117,235, 19,227,170, 8, 44,231,132,109,150,102,195,131,229,188, 55, 63,121,237,207,237, 4,230,148,240,130,212, 94, 7, +117,234, 65,233, 88,237, 54,146,100,214, 27, 73,212, 26,194,221, 8,164,113,228,143, 50,191, 45, 26,213, 5,156,147, 96,151, 50, +210,209,120,125,157, 30, 72, 39, 40, 20, 88,136,131,197,159,138,168,131,128, 13,223,166, 42,228,128,179,179, 17,203,180,195,156, + 10, 60,147,237,216,233,104, 60, 95,186, 53, 2,183, 14,124, 93,167,112,157,200,180,207,180, 64, 10,233,169,213,124,172,149,178, + 69, 77, 28, 40, 71,135,185,211, 67,142,220,198,250,172, 15, 18, 57, 70,187, 58,226, 99,142, 59,225,142,208,150,187,241,176,245, +226,165, 14,115, 41,119, 12,159,232,142,130,126,170, 7,120,155, 40,206, 89, 72, 78,110,147, 10,198,171, 87,175, 16,151, 25,191, +249,219,191,141,127,243, 55,126, 3, 31,127,248, 1,174,174,222, 96,158,103,188,120,241, 9,102, 83,187, 59,239,112,216,239,241, +236,233,199, 8, 97, 64,240,186,115,156,109, 39,126,115,179,195,110,187,195,178, 76,102,165, 42, 96, 10, 22, 92, 66,141,241, 78, +188,166,244,197,148, 0, 75, 41, 75,211,172,142, 8,219,247, 58, 54,192,136, 61,152,149,190,104, 29, 53,173,120,225,186,243,207, + 69,239,141,113, 8,240,206, 97,154,181, 91, 28,131, 71, 46, 2,246,150,150, 86, 63, 91, 67,170, 66, 74, 91,139, 16,137,134, 6, +165,172,164, 48,169,170, 96,237,178,115,197,137, 22,237,170, 83,155, 54, 24,243,221, 82,204,152,107, 60,107, 2,123,135,251,247, +238,225,226,226,162,117,210,185, 36, 19, 82, 69, 37,125, 17, 33,166, 12, 17, 27,149, 90,103, 86, 67, 67,166,195,140,159,248,201, +159, 4, 17,176,189,185,134,243,222, 34, 61, 53,114,180, 72,180, 2, 97, 62,248, 26,164,227,156,253, 44,110,221,123, 92,102,156, +159,109,112,121,239,158, 66, 89,188,199,197,229, 37,198,113, 3, 31, 92,251,243,213,163,239,199,161, 21, 48,103, 97, 78, 75,140, + 24,135, 65, 57, 0, 22, 57, 27,124, 64, 96, 45, 78,206,105, 94,121,177,253, 59,145,107,172,126, 38,125, 30, 3,132,253, 97,198, +124, 56,180,117,150,190, 7, 6, 75, 65, 8,163, 90,194, 76,119, 0, 1,200,169,151, 58,165, 5,227,232,225,156,186, 33,116, 2, +100,251,105, 86,251,113,202, 17,222,115, 75, 62,243,182, 22,168,250, 17,226, 85,216,149,139, 38,248, 13, 97,128,176, 82,226, 74, +137,240,142, 48,140, 1, 83,202,160,114,208, 85,141, 69,252,138,232,186, 73,236, 26, 29, 2,163,240,128, 84, 10, 8,218,197,151, +194, 96,202,109, 50,144, 4,200,230,159,119,208, 61,122,202, 5, 14, 17,185, 16, 72,178,217,119,117, 73,144,132, 32, 37, 35,136, +128, 93, 80,203,153, 24,204,200,196,238, 2,110, 4, 61,245,184,231,214,185, 87, 11,112,213,129,113, 7, 59,115,117, 68, 79,250, + 51, 73,178,194, 99, 5,150, 29,175,205,136,222, 91, 14,169, 36, 56,100, 21, 88,219, 51, 38,128,240,222,152,177,127,114,137,114, +120, 15,156, 62,172, 17,129, 71,209, 22,183, 10, 60,189,101,132, 40,221, 70,245, 8,215,126,252, 7,124,161,154,152,182, 6,174, +192,108,104,114, 20,170,210,169,212,187, 31,194, 29,146,179,159, 93, 10,186, 44,107,129, 10,233, 58,197,121, 83,190,203, 26,161, + 90,173, 97,117, 7,141, 19,117,245,122,100,201, 72, 89, 85,247, 85, 7, 64, 39,116, 50, 89,159,240,166,100, 95, 73,120, 82, 11, +123,183, 31,163, 38, 62, 51,255, 97,205,103,239,246,190, 98,113,141,167,225, 30,125, 17,201, 57, 97,111,175,215,217, 77, 34,130, + 35,123,213, 58, 14, 23, 8, 7, 85,127,198, 25,177,179,234, 73, 83,126, 18, 68,116, 15, 91,138,217, 45,100,229,188, 55, 70, 78, + 21,157, 89,120, 12,153,192,164,141,115,205,110, 56, 58,141, 95, 44,165, 11,131,169, 35,246,174, 8,231,146,155,112,105, 29,245, +174,169,108,132,211,248, 84, 28, 9,234,110, 5, 22, 16,117, 32, 31,155, 71, 8, 78,214, 34,210,193,245, 79, 99, 13, 86,225,202, +167,159,126, 2, 98, 82,181,245,105, 1, 23,249, 92, 65,220,231,177,222,107,224, 77,253, 48, 62,253,244, 5,222,253,202, 87,240, +219,255,246,191,131,127,229, 87,127, 21, 31,127,244, 33, 62,254,232, 35,156,157,157,227,213,203,215,248,224, 7, 31,130, 29, 53, +245,114, 17, 65,138, 90, 64, 98, 76,141, 16, 33, 2,236,182, 59,133,200, 36,237,214,134, 16,218, 46, 87, 5,110, 43,240,105,221, +235,234, 21,233,189,179,157,185, 61,212, 25,166,150,215, 7,136,243, 30,193,196, 98,149,109,174, 25,235,201, 62,107, 75,187, 50, +191,119, 76, 81,247,206,222,173,171,163,148,219, 20, 37,198,213,171, 94,239,139, 98,121,223,201,138,181,247, 78,253,239, 82, 19, + 28, 75, 43,236,165,172,191, 19,246,247,152,189,230,183,123, 19,191,121,135, 97, 51,130,192,184,184,188,208,159, 61, 91,158,187, +117,199,197,198,253,213, 67, 12,176, 9,205, 60,152, 29,130,247, 96, 98, 92, 94, 92,224,221,119,159,224,211, 79, 63,109,236,119, +111, 32,148, 22,245,106,135, 32,230,181, 0, 87,114,156,109, 14, 16,188,218,203, 30, 60,124,128,224,131, 90,198, 66,128,243,193, +190,219,212, 84,253,222,107, 66,153,174, 25,142,125,198, 41, 43, 46,117,115,126,102,238, 8,175, 19, 53,239, 64,240,186,243, 54, + 75,145,186, 18, 18, 14,211, 1,211, 50,183, 60,251,253, 97,194,238,250, 6, 49,170,222,130,157,179,107, 76,125,213,151,151,151, +216,238, 15,152,247,251, 22,104, 83,221, 53,240, 30, 75, 44,202, 37, 55,189, 67, 11,193,177, 73, 73, 99,175, 27, 52, 75,104,181, +224,213,172,121, 2, 26,188, 71,211,249,138,125,182,202, 73, 47, 57, 27,234, 87,144,167,189, 94,143, 6, 15,210,240, 21,192, 13, + 30,169,172,171,142,105, 22, 80, 90, 20, 0, 35,130, 33, 56, 36, 4, 72,140,118,255, 41, 66,182, 32, 91,243, 84,218,228,152,109, +253,185,164,108, 11,114, 75,227, 19, 64,114,130,119, 30,165,166, 87,218, 51,215,113,213, 24, 16,216,196,123, 2, 94, 9,123,101, + 21, 43,235,253,200,150,209, 90, 15,250, 0,196,107, 90, 91,133,151,129,219,190, 93,107, 59,181, 80, 25,166,172, 92, 20,210,215, +245,144, 4, 79, 30, 20,188,216,190,139,240,217, 21, 32,215, 0, 13,111,241,216,188, 29, 54, 67, 39, 75,118,233, 53, 83,119,237, +212, 91, 80, 60, 74, 75, 83,107,118, 48,210,125, 39,136,193, 84, 48, 64,187,245,114, 43, 9,123,141,241, 44,122, 84, 71, 78, 30, + 75, 0, 54,220,154,227, 38, 84,163,254,229,154, 26, 92,172, 58,245, 39,151, 10,131,233,195, 80,234, 30,186,226, 98,107,167, 95, +228, 52,185,171,142, 1,138,158,226,152, 86,111,118,141, 97,101,235,188,155,192, 78,179,212,117,231,178, 42,186, 87, 92,233,122, +178, 3,208,108,108, 21,203,154,114, 65, 34,198,104,221, 75,233, 88,247,213, 31,207, 22,128,163,163,184,140,101, 42,232,179,205, +169,235,236,245,161,153,149, 92,100,123,250,182,185,183, 61,169,171, 87, 96,247,125,112, 99, 61, 27, 60,203,206, 49, 83, 52,197, +246,105, 80,142,117,250,253, 78,185,223,221,158,152,245,205,110, 33,183,246, 61, 77,159,208, 29,202,228,116,172, 94, 53, 27,116, +146, 54, 4, 58,242, 94,210,241,153,182, 77, 82,156,119,107,236,235,151, 32,188,126,222, 14,189,255,251,177, 11, 18,121,246,241, +199,248,169,239,252, 12,254,147,191,255,159,226,103,127,254,231,113,216,237, 17,194,128,243,243, 11,188,120,254, 28,159,190,248, + 4,187,155, 27,108, 54, 35,178,203,216, 31, 14, 13,119, 90, 63,179,224, 53,172,100,183,223,183,112,145, 82, 10,200,217,120, 27, +210, 70,236,181,243, 38, 34,228,154, 53,158,171, 74,221, 68, 64,173,163,212,110,217, 7, 50,138,151,142, 4,171,202,218, 25,109, +175, 10,157, 82,204, 38, 78,203,106, 11, 50,117,115,187,151,152,155, 87, 62, 27,110,214, 89,184, 11,140,219, 77, 69, 31, 96, 25, +104,123,236, 26, 6, 82,187, 59,105,226, 37, 61,120, 80, 1,150, 69,247,237, 33,120,237,122, 12, 0, 2, 67,184, 50, 43,122, 55, +198, 5,203,146,154,128,175,105, 70,216,188,251,134,233, 85, 33,183, 74, 96,151, 37,226,253,247,223,199,123,239,191,135,253, 94, +115,230, 7,243,142,215, 67,160,183,212,181,154,234, 6, 33, 56, 79, 45,225,173,118,211, 14, 26, 46, 51,112,208,208, 22, 99, 34, +140,155, 13,134, 33,128, 65,152,151,216, 92, 8,100,164,190,170,203,113,204,109,138,226,157, 67,129, 96,187,221,195,123,198,102, + 24,225,134,128, 20, 23, 4, 63,216,125,171, 7,157,184, 44,200,162, 96,162,148, 22,227,148, 51,182,187, 61,166,105,223,154,155, +184, 84, 18,157, 32, 23,224,250,250,166, 19,109, 1,190,178, 5, 44,239, 34,183,244, 53,103,238, 8,233, 58,239, 12,239, 44,165, + 45,151, 53,213,174,233, 85,208,160, 62,220,190,119,194,180, 44, 24, 61, 97,220,156, 1, 37, 32,230,131,194,138,160, 64,161,100, +118,182,234, 5,135, 8,130,137, 20, 83,138,240,148,224, 29,131,200, 65, 88,189,232,177,144, 17,236,204, 78, 86,167, 9,194,160, +172,255,190,176, 55, 80,146,180,200,216, 98,176, 32,170, 82,121,163, 10,162, 91, 79, 54,142, 69,213, 55,153,111,189,197, 98,183, + 34, 79,109, 42,213,236,107,134,190,133, 91,211,220,200,158, 89, 73, 0, 87,138,198, 14, 67,173,137,226,244, 64, 34,133, 12,140, + 83,181, 0,132,119, 92,198,213, 99,143,101,251, 21,184,105, 7,184,114, 98, 97,147, 47,180,176,201,219,138,252, 81,129, 71, 93, + 77,217, 78,137,202,145,218,142,237,225,161, 86,172,117,111, 94,218, 14,125, 37,141,173,190, 97,210,146, 47, 3,150,123, 15,241, +238,131, 43,124,253,106,198,239,223, 16,118, 92, 85,121,199, 41,111, 26,139,170, 59,116,234,138,185, 96,181, 85, 29, 73,166, 68, + 58, 93,253, 90, 8,235, 72, 34,203, 26,249, 73,189,229,170,117,232, 90,200, 85,245,202, 24, 28,129, 75,198, 94, 86,128,140,122, + 24,215,209, 8, 19,142, 4, 99,220, 35,109,104, 21,252,233, 5,169, 54,174,220,193,105,164, 99,245,163, 8,132,187,112,144,162, + 98, 62,103, 35, 43,116, 25,234,185, 90, 59,172,251,174, 99,115,106, 25,192,166,192,165,188,170,251, 5, 45, 8,166, 81,231, 90, + 58,147, 29,210, 44, 20, 70, 4,240,162, 9, 73,197,118,209,167,133,178,156,136,205, 90,199,221,173, 21,238, 66,196, 54, 39,195, + 45,202, 92, 47, 70, 92,103,235,116,231, 21, 76, 45, 92, 8,213, 79,223,167,187,245, 35, 44,185, 13,152,161, 31,209,194, 86,223, +223,211,143, 62,194,191,244,115, 63,135,191,247,159,253, 3,124,227,155,223,198,205,213, 22,243,114,192,246,230, 26,175, 94,189, +196,155, 55,111, 80, 32,184,119,255, 2,203, 28,177,223,111,219,251,141, 75, 49,196,165, 67,146,140,121, 73,136, 38,130, 35, 3, +132, 48, 92, 35,146, 29,166,131,118,165,102,125,170, 66,175,250,128, 25,130, 55,108,176,190,247, 37, 38, 19, 5,185,246, 73,164, + 20, 45, 86, 24,240,196,134, 76, 85, 5,120, 74,181,152,105,177, 15,222,233,184,221,246,134,228, 88,177,175, 69, 52, 80,200, 30, +170, 57, 43,205, 45, 12,193, 2, 87,108, 47,153,117, 71, 47, 69,147,201,144, 75,179,171, 73,169,132,174,117,172, 91, 45, 80,149, +101, 94,202, 42, 40,171,170,247,138, 29, 46,101, 77,151,211,123,180, 28, 7, 55, 97, 13, 49,174,190,251,253,126,143, 87,175, 94, +225,234,205,149,130,115, 6, 15,117,158,169, 0,208, 59,253,156, 42,180,167,186,100, 68,244,112,232,141,118, 87,247,222,231,231, + 35, 66, 24,176,196, 5, 99, 8,216,108, 70,120,231,141,113,174, 84,183, 48, 12, 90, 36, 82,129, 27, 44,121,204, 92, 0,170, 87, +168,137,111,210, 66, 7, 75,202,170, 45, 49,101, 61, 58,203,212, 97, 58, 96,154,103, 72, 42,230,243,159,176,189,222, 34, 46, 11, +188,103, 56, 63, 34,185,140,105,153,225, 29, 3,112, 88,230, 73, 49,171,222,215, 57, 51,132,244,208, 34, 69, 73,116,217,198,217, + 58, 77, 36, 45,172,158,213, 54, 86,170,117,139,225, 60,217,126,223, 86, 40, 36,112, 96,205,101, 55,241,102, 74,217,180, 29, 30, + 75, 84, 87,133,144, 71, 94, 14,112,142,141,213, 94,128, 28,117,207,111,112,160, 37, 21, 20,137, 64,169, 46, 13,198,126, 33, 72, +220,169,247, 92, 17,155,200, 36,112, 37,235,235, 96,130, 43,118,120, 51, 43,158, 35,180,224,149,146,138,134,245, 84, 12,110, 37, +103, 22,128,141, 23,130,110, 21, 37,102, 61,235,218,134,102, 81, 94,181,103,100, 26, 37, 5,204,100, 19,114, 50, 18,132,212, 78, +231, 37,129, 60,193,147, 7, 57,178,221, 59, 90, 7, 79, 98,160,159,122, 15, 57, 70,204,132, 77, 78,120, 50,206,120,250,224, 62, + 48, 63, 4,228, 37, 64,225, 8,242,217,142, 34, 95,132,135, 61, 25,197,247,123,246, 58,138,247, 34,108,126,100,128,242,105, 72, +140,154,249,107,215,206, 36,112,162,187,246, 53,121,172,223,145,139,117,119,103,192,253, 7,120,124,249, 6,247,174, 10,162,184, +149,154,211,154,100,235,238, 5,109, 95, 93,161, 50,109, 74,112,178, 21,149,206, 58,214,162, 64, 59,158,251,106,205,182, 71, 62, +211,173, 68,176,182,223, 55, 96,205, 28,169, 21, 92, 38,105, 35, 29,161, 21,112,114,234, 99,151,246,251, 11,156, 21,238,210, 9, + 25, 74, 95,196,168,251,247,107, 32, 14, 49, 36,206,120,121,200, 56,187, 60,199,133,151, 21, 0, 33,232,240,135,107, 0,204,177, +141,172,155, 88, 52,209, 92,247,251,165, 47,154,210, 68,141,142,215,206, 87,195,111,244, 34,100, 87,116, 23,103,220,253,254,192, +116,219,230, 46,183, 60,227,117, 37,241, 54,113, 26,117,132,186,245, 74,166,118, 56,145, 59,180,238,107,225,150,147,152,223,210, +124,163, 71,244,190,255, 15, 81,108,235, 87,195,120,250,244, 35,252,212, 79,127, 7,127,255, 31,252, 23,248,234,215,190,138,253, +110,143,253,110,139,207, 62,251, 4, 79, 63,254, 16,215,215, 55, 77,236,229,156, 71, 76,123,245,155, 51, 99, 28, 6, 20, 95, 12, +161,186, 96, 59,233,202, 68, 58,255,111, 77, 31, 19, 1, 98,156, 27, 41, 48,231,213,214, 84, 15, 67,195,224, 27,227, 29,166,114, + 38, 2,184, 40, 81,139, 10,192,162,255, 78,177,145,181,115, 30, 36,218, 57,198,168,129, 31,108, 52,173, 97, 8, 72, 69,173, 84, +193,172,114,217,208,176,142,217,224, 79, 90,164,185, 10,168,114,182,152,203,202,251, 55,117,187, 29, 16,107,104, 70, 93, 21, 57, +246,141, 13, 46, 69, 3, 75, 0,157, 44, 16,107, 34, 88,253, 44,198,113, 68, 74,185,121,169,217,248,240,213,227, 45, 68, 13,113, + 74,214,129, 86,219,153,119,132,179,179, 13,118,251, 29,230,249, 0,231,188, 69,149,154,118,196,185,230, 71,172,135,139, 33,120, +181,128,217, 10,196,187,122,253,219, 14,184,100,156,159,157,169, 51,195,188,249,196,154,191,174,233,112, 5,193, 59,203,110,215, +239,140,205,154,197,118, 95,103,195,240,138, 61,243, 8,192,180, 44, 8,185,180,116, 60,231,189, 30, 36, 88,233,120,135, 73,243, +234, 29,233, 52,224,213,203, 87,216,109,183,170,224,134,111,171, 29,101,167, 19,114, 78,138,164, 5,235,181,101,106,118,166, 21, + 28,148, 82, 82,134,125,203,106,166,117,242, 69,132, 4,130,164, 98, 76,125, 82,164, 47, 68,139,126,205, 14, 48, 12,113,181, 98, +137,117,179, 66, 1,243,188,232,193,208, 7,115, 62, 25,192,202,188,227, 99,240, 16, 98, 76, 75, 4,149,168,157,245,146, 33, 84, +144,150, 12,150,140,100, 7,192,245, 57,173, 83,169, 58,173,144, 14,133, 82,241,182,142, 3, 50, 23,192,118,220, 45,156,197, 10, +248, 74,102,235,158, 28,196,109, 90, 88, 5,116, 76, 53,182,181, 6,137,233,169,184,250, 85,244,101, 57,219,157,235, 36,135, 60, + 1,228,149,219, 34, 10,175,161,106,129, 35, 19,205,149,164,207, 40,102, 80,105,173, 43,158,120,194,155, 71, 30,251,237,187,240, +187,107,192,101,128, 92, 71,145, 67, 23,148,245, 5,128, 44,121, 91,147, 98,246, 68, 87,119, 23, 69,199,126, 34, 43,171, 27,198, + 71, 87,241, 22,119, 59,245,250,184,237,189,232,245, 94,245, 0,237, 48,188,248, 62,126,248, 76,240,135,226, 1, 47, 24,100, 29, +163,175,111,213,124,241,178, 22,220,106,135,106,153,186, 77, 41,223,201,203,232,184, 4,212,104,216, 62, 9,110, 37,195,245,185, +221, 53,113, 77,186, 29,187,254, 76, 71,199,123,251,214,213, 91,231, 44,212,237,255, 79, 70,205,185,219,253,139,233, 17, 8,170, +176, 77,168, 32,138,234, 9, 6,226, 60,227,236,157,175,226,223,250,246, 25,126,240, 7, 63,196, 63,189, 33,156,121,106,251,234, + 85, 5,191, 50,220,143,114,218, 79,138, 45,119, 19,148,154,207, 46, 82, 15, 74,157, 91, 65, 86,132, 98,168,135, 13,102,120,168, + 8,165, 34,135, 82, 23,215, 74,180, 70,205,190, 13, 6, 83,106, 68,111, 71,130, 59,186,232,106, 98, 84, 87,160,228,104, 55, 36, +199,216,223, 78, 20, 87,167, 67,210,197, 7, 18,157,114,230,191,120,236,254,121, 4,185, 90,208, 95,126,246, 41,190,253,237,159, +198,127,254, 95,254, 87,120,239,189,175, 96,191, 59, 64, 74,198, 71, 31,254, 16, 31,126,248, 1,174,175,174,176,189,217,234, 88, +212, 80,173,196, 10,242, 96,235, 76, 5,192, 52, 47,152,166, 9,239,190,251, 21, 92, 92,156,195, 57,135, 97,216,224,217,243,231, +184,186,186, 2, 51,107,135,110,162, 63, 13,243, 48,188,175,247,186, 7, 47, 48,143,185, 77, 99,106, 49,117,220, 31,109,155, 50, +188, 2,101,132,181, 11,143, 49, 99, 58, 76, 58,238, 52,165,121, 8, 14,101, 17, 44, 41, 2,163,118,177,203, 28,219,142,217, 85, + 1,105, 94, 17,194, 41,234, 8,212, 7,103, 4, 48, 40,250,179, 93, 15,229,232,161, 91,175, 7,197,185,214, 15,151,219, 1,208, +123,205,245,142, 75, 66,240,193, 88,220,100, 65, 42,222, 34,118,179,137,253,148,211, 89,181, 29, 53,210,184,216,142,120,112,193, +200,104,234,211, 47,101,141,125,118,142, 27, 26, 86, 12, 54,227,216,217, 14,189,174, 31, 86,161,107,206,122, 56,173,223, 87,201, +122, 8, 81,125, 64,105,182,185, 98,163,217, 16,188, 78, 49,164,128,115, 1,187, 13,162, 65, 85,234, 24,126, 28, 7, 83,201,219, +115,175,168,189,173, 90,254, 98, 76, 56,204,147, 18,216, 68,176, 95, 22,188,121,117,133,195,126, 11,199,192,146, 43, 7, 94,139, + 41, 57,135,195, 97, 70,137, 11, 48, 14, 54, 93, 19, 59,236,232,234, 48,120,165,219,205,145, 80, 82,110, 85,177,174,111, 82, 41, + 96, 41, 22, 53, 42,235,232,189, 66,141,108, 5, 84, 5, 98,108,113,177,193, 1, 60,110,244,115,136,201,238,233,212,138,248,122, + 24,213, 90, 34,164,221,244, 38,168, 82,221,151, 4,231, 71, 20,120, 8, 18, 74, 44, 24, 60, 67,200, 25, 14,155,144, 83, 82,104, + 25,233,232,157,155,237, 85,243, 1,216, 18,228, 8,132, 66, 26,168, 82,114, 70, 34, 1,103, 50,110, 13,153, 5,141,193,149,168, + 82,179, 55,228, 88, 88,219,130, 94,170, 54,202,248, 40, 4, 83,221,147,186, 34, 86,216,232,154,199, 81,225, 54,117,119,143,146, +129,162,203,231,108,107, 13,210,177, 49,146, 8, 70, 18,188,179,137,248,240,209,125,148,233, 9,184, 60,211,155,190, 11,103,233, + 28,107,159, 63, 82,188,131, 91,211,211, 53, 60,213,140,101,209,208,247, 98,163,142,158,240,218,115,218, 11, 86, 54, 58,223,122, + 56,214, 19,189,158,238,163, 41, 15, 73,112,132, 64,173,123,212,210, 64, 52,210,120,241,232, 88,205, 14,119,128, 81, 58, 38,187, +116,214,176,246,144,233, 10,121,175, 40,236,139,123, 77,247,100,230,126,161,107, 99,156,245,205, 75,169,202,247, 21,150,211,152, +224, 71,227,120, 29,121,147,237,121,178,117,148,245, 85,212, 93,105, 29,227,151, 82, 64, 97,192,176,217, 40,105, 45, 51,214, 97, + 70, 21,164,229,213, 43,222, 78,226,212,165,157,202, 81, 81,115, 29,156,160, 84, 77, 1,233, 24,214,217, 65, 41,219,174,212,153, + 72,166,230, 25,195,198,241,237,129,104,163,217, 90,154, 11,142,119,231,114,215, 72, 91,228, 8, 29, 43,183, 78,144,132,224, 60, +138,100,235,116,143,127,216,233,133,220,255, 89,177,253, 74,221,227,247,226,189, 31, 5, 44,243,246,137, 59, 97,123,115,131,179, +243, 11,252,221,255,248,239,225, 39,127,242, 39,241,209, 71, 31, 34,167,132, 23, 47,158,227,251,223,251, 62,166,253, 1,243,180, + 32,165, 5, 37, 23,236,247,187,118,208,216, 12, 35,156, 83, 80,202,205,118,135,195, 97,194,251,239,191,143,111,126,243, 91,234, + 99, 38,224,249,139, 79,177, 44, 17,227,102,196, 18, 23,148,100,102, 49, 39,109, 4, 13, 81,174,118, 45, 58, 57, 91,242, 88,112, +166, 34, 62, 6, 17,105, 7, 28, 43,210, 9,195, 96, 22,182, 92,128, 34,205,186,198,206, 33, 4, 21,151, 57,214,104, 79, 41,192, + 50, 39,100, 17, 12,158,219,202, 6, 32,172,205,154, 96,232,200, 98,206, 52, 68, 48,214,129,198,166,150,154, 35,216,217, 54,165, +117, 91,100,142,135,202, 93, 95, 35,115,215,120, 83, 98, 29,145, 18, 1,236, 25,146,164, 81,217, 74,209,142, 42, 25,223,222, 57, + 21,243,133, 33, 24,212, 70,154, 96,207,123,223, 38, 8,154, 10,167, 22,190, 33, 40,204, 38,166,100,122, 1,110,116, 61, 98,168, +178,190, 8, 46,239, 95, 34,132, 81,199,230,166,141, 72, 41,219,119, 72,230,201,151, 38,142,139, 49,225,252,108,196,147, 39,239, +224,102,187, 67,206,234,199, 39, 34,108,134,128,179,179, 51, 21,113,165,100, 66, 67,205, 58,247,172, 83,171,148, 52, 74,245, 96, +222,253,155,235, 45,118,215,215,107, 66, 90, 74,136, 49, 35,103,181, 50,138, 9,191,156, 9,225,132,178, 50,216,133,109, 23,110, +247,183, 99,140,195,136,133, 34, 40, 71,128,169,173, 14,152,109,108,108, 83, 85, 87,181, 71,178, 18,232,234, 29,207, 4,184, 33, +152,170, 57, 91, 87,204, 16,100, 48, 11,178, 48, 74,142,106, 75,181,164,187, 68,132,146, 18,114, 42, 64, 89, 84, 16, 25, 60,206, +206, 47,128, 97, 68, 74, 2,246, 11,166, 61,144,243,162,211, 96,219,161, 51,233, 58, 8, 69, 87,164, 98,185,235,140, 12,103, 35, +112,157, 50, 25, 96,201, 14,136, 34, 17,115, 46,112, 54,246,173,209,172, 98, 66,183, 76,206,226, 88, 87, 97, 91, 22, 93, 75, 50, +170,208,205,174,219,110,140,173,227,123,156,197,209, 0, 0, 32, 0, 73, 68, 65, 84,103, 99,162, 54,113,112,181, 41,175,250, 31, + 41,218,253,123,100, 11,147, 89,221, 34,181, 97, 41, 2, 60,228,130, 87,247,128,237,213, 59,224,235,215, 0, 45,186, 10, 33,220, + 18, 7,247, 88,115,220, 21,161, 69,111, 95,182,123, 34, 75,177,113,130,160,207,130,149,199,110,201, 61,189, 49, 10, 54,142,135, + 21,221,117,211,101, 23, 69,245,108,147,238, 55, 68, 42,189,236,216,187, 84,127, 71, 29,191,175,123,121, 27,191, 91,190, 59,119, + 71, 24,234, 60,125, 34,212, 13,102,143,149,242, 77,200,245, 5, 67,215, 92,114,203,115, 79,133,214,189, 70,183,151,175, 86,177, + 74,181,171,126,119,233,243,187,169,142,205,165,163,180,145,117,215,199,121,229, 25, 2, 63,142,216, 63,255, 99,252,247, 63, 40, +184,188, 56,195,147,141,138, 19, 51, 86,235,133,172,131,246,245, 51, 19, 59, 32,213,211,148,141,254, 87, 7, 38,214,221, 78, 7, +126,169,187,239, 44,162,185,212, 76, 71, 19, 10, 65, 50,246, 60, 26,165,169,250,152, 91, 64, 4,213,174,185,124,110,110,249,105, +161,165,238,107,143,105, 57, 26,199,159,176,118,215, 14,190, 30,254, 90,119,118,187, 37,255, 50,248, 87,124, 1,254,181,254,216, + 82, 10,118,219, 27,252,250,111,254, 54,126,238,231,127, 22,207,159,126,140, 23,207,159,227,197, 39, 47,240,234,179, 79,177,187, +217, 33, 39, 21,188, 5,239, 17, 83,212, 61, 99,204,173,216, 10, 1,143,223,125, 7,247, 30, 62, 68,142, 25, 79,222,125, 7,243, + 50,131,136,112,117,245, 6,207,158, 61,111,202,246, 20,211, 90,180,109,111, 92,178,234, 81, 42,147,127,179,209,174,104, 73, 17, +185, 56,163, 94, 41,220, 37, 4,167, 52,186,148,219, 1,175,142,104, 43,196,131, 7,237, 50, 82,206, 22,144,194,109,226, 19,130, +138,167,110,182, 59,220,191, 56,195,187,143, 30, 32,231,140,253, 52,175, 17,150, 0,166, 37,106,238,121, 54,229, 51,214,142,174, +254, 7,214,169,228,152,205,102,166, 34,198,106, 31, 83, 6, 57, 90, 92,177, 18,194,200, 44,101,171,197,172,180, 53, 14,195,141, + 14, 37,169,165, 79,160,135, 19, 79,174,217,179,188,243, 90, 64, 76,177,175, 73,116, 17, 37,103,156,157,159,129, 44, 52, 70,243, +182, 19,134, 51,181,144,229,168,113,161,245,242,171,158,245,170,237, 57, 63, 63, 7, 57,143,146,103, 91, 7,184,166, 24,207, 57, + 35,197,185,105, 18, 20,238, 35, 26, 29, 74,140,156,114, 11,255, 8,222,225,236,108,163, 57,233,243,130, 92, 5, 95, 66,134, 88, +101,228, 20, 17,130, 71,190, 41,184,190,186,194,178,204,200,113,105,150,182,100,232, 95,166, 2, 56,135, 57, 70, 77,150,179, 90, + 19, 6,103,226, 72, 0, 37,181,155, 63, 89,130, 30, 49,193, 51, 35, 22,135,121,158,193, 92,169,122,166, 91, 0,129,156,111, 58, +137, 14,214,104,130, 96, 85,135, 35,103,227,192, 19,114, 90,192, 16, 4, 95,213,223, 0,137, 51,193,157, 78, 64, 28,107, 34, 91, + 96, 66,161,128, 56, 71, 92,142, 5,195,102, 3, 97,175,225, 47,214,145, 29, 38, 66, 94, 38,227,197, 19,216,233,243,114,240,140, + 2,141, 18, 70, 41,198, 17,209, 3, 46, 75,129,115,170, 5,240,142, 33,193,233, 1,194,226, 88,139, 56, 32, 11,136,146,161,125, + 45,131,195,194,169,200, 19,132,125,115, 11, 73,115,228, 84,120, 88,233, 4,187, 85, 41,175, 11,230, 36, 2, 78,128,115,217, 38, + 12,235, 10, 84,199,245,188,226,101,203,186,148,214, 56, 87,129, 23,224,201, 16,177,123, 48,162,236, 31,131,243, 83, 11,123,161, + 99, 92,186,220,142, 96, 61,202,198,148,187,235,185,244,152, 88, 17, 70, 65, 54,180,105, 39, 80,107,208,152,181,128,202, 9,224, +174,116,156,120,116, 59,101,238, 18,200, 68,110, 83,230,122, 40, 66,203,252,237,119,207, 6, 70,201, 54,178,166,163, 61, 66,255, + 42, 42, 50,175,178,225, 87,145, 28,186, 19, 15,157,224, 71,169,179, 6, 74,135,130, 97, 90,113,171, 5, 56,218,237, 31, 91,172, +123, 84, 41,110, 29, 34,106,168, 77,133,161,112, 39, 44, 68, 41, 96, 23,240,232,158,126, 1,185,172, 5, 93,112, 58,230, 94,149, +228,117,220,169, 33, 49,234,163,207, 32,120,131,132,144,168, 10,223,173,180,253,245,117, 24, 57,138,132,144,138,180,105, 75, 17, + 58, 18,195,149,150, 14, 36,107,118,188,125, 71, 53,166,129, 1,100, 42,159, 27,124, 70,167,130, 55,186,189, 11,186,147,146,216, +169,227, 75,117, 74,244,120,223,255,159,254,234, 63,227,195,225,128,247,190,250, 53,252,229,191,250, 87,240,234,229, 39,120,246, +244, 41,158, 63,125,138, 87,111, 94, 97,119,179,197,124,152,177,196,197, 14,130, 9, 41,107,199,166, 76,242,218,177, 2, 55, 55, + 91, 60,124,252, 16,142, 24, 47, 94, 60,199,126,191, 7, 72,105,114,222, 64, 48,243, 50,183, 2,221,194,119,170, 6,194, 84, 85, +204,140,195, 97, 50, 52,170,137,118, 42,133,203, 50,209,197, 52, 58,163, 31, 80,114,105,211, 25,136,142,199,217,212,252,193,136, +106,202, 32, 32, 60,124,240, 16,159,189,124,137, 87,175, 94,227,167,190,249, 13,252,216,123,239, 96,154, 22, 61,176,228, 2,103, + 44,238,148,107,231, 86,211,203, 8, 57, 85,242, 97, 62,154,204,212,212,193,134,204,236,224, 30,130,149,239,239,156, 51, 10, 96, + 29,197,123,156, 95, 94,226,176, 63,232,125,199, 90, 28,157,119,152,243,178,118,247, 80,228,170, 38,226,205,246,187,164,169,239, +217, 44,108, 57, 21, 44,243,140, 97,220,152, 88, 81,187,166,148,181, 43,119,118,216,102, 3,212,168,176,207,172,101,204, 45,195, +189, 38,184, 49,235, 72,184,198,156,214,251,144, 89, 87, 23, 33, 12,136,165,224,213,203, 79, 49, 14, 3,114,209, 67,143,247, 30, + 75, 74,112, 62, 32,120,143,146, 19,124,240, 24,195, 0,231, 61, 14,135, 3,156,247,152, 99, 70,140, 51, 46,207,207,241,244,122, +139,253,110, 15, 17,193,180,204,170,188, 31, 61, 82,102,148, 37,154,222, 32, 35,154,173,108, 52,139, 92, 76,121, 69, 89,231,210, + 22,162,121,201,235,225,219,236,136, 69,148, 72, 87,227,154, 91, 81, 50,219, 87, 76, 89, 97, 48,166,181,105, 93,162, 72,203, 0, + 97, 59,200, 44, 89, 64, 72, 8, 38, 76,212, 60,244,245,176, 93, 0, 4, 6,206,239,159, 1,236,141,231,207, 8,158, 65,236,116, + 26, 21, 60,174,175, 25, 37,238,192,172,235, 27,161,122,136, 76, 96, 20,144,119, 72, 69, 87, 50,100,162,201,197, 70,241,206,105, + 97,103,242,171, 40,186, 8,132, 29, 42,137, 67,167,178,186,182, 42, 70,106, 84, 97,182, 61,199,244,162,213,148, 81, 98,213,163, + 80,105, 0,154,130, 58,158, 82,198, 9,103,219,231,179,194,213,188, 23, 8,105, 66, 97, 54,209, 30, 3, 16, 7,196,226, 65, 37, + 35,160,170,232, 61, 30, 0,184,188, 7, 92,223,188, 3,126,243, 6, 40, 7,128,195,145,150,232,182,240,151,110, 3, 55,228, 45, +107, 68, 0,190, 20,149,235,215, 78, 84,119,200,218,143,149, 42,138,163,181,104,247,213,176, 31,115, 31,197,169,118,133,250,168, + 87,173, 96,149, 91,211,131, 78,210,127,235,245, 31,251,202,237,177,215, 10,185,224, 86,202, 72,123, 56, 82, 29, 83,203, 42,134, + 59,222,153,247,197,185, 63, 41,221,225,177,110,251,225,178,142, 98,208,199,225,200, 74,152,235, 26, 81,110,221,240, 73,239, 45, + 5, 49,215,184,217,110,167,124, 18,152, 83,173, 33,100,217,194,149,240, 68,182,167, 38,136,238,237,237, 53, 70, 40,115,128, 91, + 68, 43,119,194,190, 21,181,219, 80,176,230,109,111,192, 8, 59,160, 21,169, 41,104, 88, 83,179, 12,249,123, 10, 60,160,110, 15, +126,171, 43,174,148,190,211,174,156,232,238, 56,212, 46, 17,208, 28,123, 71,113,187,111, 67, 35,126, 81,151,206,221,181, 90, 58, +241,164,142, 52, 29,230,105,198,203,151,159, 97, 12,140, 63,248,189,223,195,118,191, 7, 74, 54, 96, 76,106, 71, 88,182,124,114, + 21, 90,121, 48, 23, 44,179, 62,248,211,213, 53,246,123,141,142,221,109, 15, 24,198, 96, 69, 85, 71,173,186,255,134, 81,240,236, +179,169, 96, 23,167,129, 34, 75, 92,213,242,117,167, 94, 15, 53,195, 16,154, 46, 3,236, 77, 24,167,227,113,202, 90,244,135,193, + 55,164,234, 56, 14, 77, 12, 87,105,105, 49, 70,108,198, 1,127,225, 95,254,115,248,233,111,127, 27, 47, 95,191,198,243,231,207, +145,139, 96,154,162, 30,236,165,180,221,115,245,139,123,231,109,212, 61, 55,241,102,141,243, 84, 36,232,138,206, 76, 22, 2,210, +127,246,107, 55, 14, 56,114,230,161, 87,101,124, 10, 30,113, 86,164,106, 46, 25, 14,222, 16,182,209, 34,119, 75, 67, 28,111, 54, + 42,174,219,237, 38, 56, 71,112,227, 96,108,120, 7, 56,163, 65,154, 8, 80, 76, 56, 88,223, 75, 49, 69, 52, 21,110,215,163,115, + 74, 71, 11,227, 96,169,118, 73,175,251, 96,162, 52,227,246,103, 67,206, 86,203,162, 15,190,221,179,103,155, 17,206, 7,213, 96, + 64,177,184, 66, 80,221,128,193,125,114,154, 33,165,224, 50,220,111, 69,243,102,123,131, 24,103,236,167, 5,219,155, 45,226, 60, + 27,179, 93, 89, 0,197, 88, 17,154,151,110,135,186,230,167, 62,114,152,218, 51,130,140, 44, 40, 13, 37,139,218, 89,219,123,241, + 42, 27,183,180, 63, 54,214, 1, 33, 21, 75, 0, 49, 74, 90, 41, 5,131, 95, 19,248,148,250, 91, 58,166,136, 33, 41,157,111,186, + 9, 71, 2, 71,122,208,136,203, 1,195,200, 8,126,131, 66, 42, 12,204, 41, 35, 12, 64,240, 67,155,252, 93,156,111, 48, 79, 5, +172,178, 57,196,164, 24, 88,177,177, 43, 25,123,158, 37, 3, 94, 9,132,165, 11, 4,170,141,103, 97, 27,129, 59, 32,243,202,149, + 71,123, 78, 86,171,156,179, 61,106,130,229,193,233, 90, 82, 52,251,160, 64, 5,215,129, 43, 91, 95,197,160, 34, 4, 79, 0,123, + 2,115,176,166,202,230,215, 54, 62,173,162, 68, 70,177, 56,114,105,154, 36, 54,125,218,192,132,119, 54,132,237,163, 11,148,253, +187,224,248,225,157,207,193,158,245, 33,130,219,117,238,115,254,114,223,249,198,251,191, 51, 79,147,158,134,170, 93, 76,104,141, + 5,173, 99,103,172, 29,105, 63,243,231, 54, 54,165,134, 72,229,147, 51, 68,243,167,247, 8,155, 78,164,178,238,155,215, 46,250, +118,119, 76,109,143,140,166,198,167,166, 7, 16,208,237,128, 27,166, 91,240, 18, 58, 57,213, 8, 58,124,107,119, 48, 1,238,200, + 82,239,202,114,233, 67,104,176,190, 7,234,108, 95, 76, 74, 70,106,185,243,245,243,163,227,169,134, 28, 13,218,143,121,231,206, + 7,140,131, 83,228,161,244,110,237, 53,221, 77,186,253,190,216, 78,188, 93, 76, 53, 96,167, 77, 31,164, 67,160, 82, 19, 25, 50, +169,242, 61,159,236,206,215, 3, 35,173, 5,215,238,235,154,205, 12, 28,239,211,143,118,236, 29, 91,254,120,207, 77, 29, 82,246, +244, 11, 95,191,161,245, 59,199, 93,129, 3, 95,170,176, 59, 98, 56,214, 7, 62,184, 59,104,218,231,230,131,199,126,123,131, 23, + 47, 62,197,195,251, 15,241,193, 15,127, 96, 59, 82,237,252,152, 53, 55, 92,137,103,217, 20,218,140, 24, 99, 3,190,136,157,128, +164, 72, 59, 4,212,110, 82,163, 46,139, 49, 23,164, 81,213,170,102, 66, 71,238,170, 10,207, 22,121, 90,247,236, 38, 14, 86,221, + 3,107, 34, 29, 68, 52,211,219,172, 70,181,163,119,174,238,226,165, 97, 88, 25,220,148,250, 67, 8,248,163, 63,250, 35,252,165, +191,240,151,240, 55,255,230,175,225,143,127,248, 67, 29,113, 75,193,245,245, 77,203,242,174,163,109,176,230,169,159,198, 70,150, + 82,148,217, 93, 25, 12,164,158,118, 65,209,174,173, 38, 1, 18,153, 47,153, 21, 20,227,122,117,187,192,135,128,139,139, 11,251, +179,186, 55,175,175, 33,120,223,244, 20,130,170,196,150,166,144, 79, 57, 97, 28, 6, 4, 31,212, 21, 80, 83,209,156,215,238,205, + 64, 42, 92,133, 85,189,152,203,238,207,186, 55,207, 41,226,242,242, 18,247, 31,220,183,142,188,250,150, 13,173,156,179,217,189, + 84,232,231,220,255, 75,218,155, 62, 75,118, 28, 87,158,199, 35,226,222,155,153,111,169, 42,160, 80, 0, 9, 66, 32, 9,136,100, +139,162, 36,146, 34,103,233, 54, 73, 51, 45,217,152, 62,205,244,252, 69,248,187,198,230,211,180,181,153, 90, 61,221,109,211,106, +169, 37, 8, 32,136,165, 94,173,111,207,229, 46, 17,225,243,193, 61,226,198,189,153,175,170,192,134,140, 38,160,150,247, 50,243, +101,134,135,187,159,243, 59, 46, 23, 76, 33,177, 73,182,249,106,209,128,140, 67,167, 33, 53, 85,237,116,247,175,239,155, 40, 25, +233,117, 37,152,212,221,118,131,171,235, 13,158, 62,125,134,118, 39, 46,138,160,104,214,212, 81,167,143,134,215,199, 64, 70,214, + 7, 73,177, 47, 14, 3, 85,228, 99,188, 36,142,162, 82,206, 72, 91, 33,222,153,156, 73,207, 5, 42, 54, 42,127,157, 83,110, 61, + 24,206, 24,216,202,137,247, 90, 51,217,131,102,155,103,182,137,226,120, 65,105,178, 35, 10,246,147, 58,226,228,254, 61,116,220, + 32,246, 29, 42, 11,216,170,202,147, 36, 82,172,107, 12,137,161,174,177,173, 16,235,165,181, 46,199,199,146,158, 17, 38,139, 46, + 73, 63, 63,178,247, 76,147, 19,144,213,203,159,234, 84, 68,125, 42,239,127,146,117, 15,178, 21, 52,185, 36,228, 98,103,140, 65, + 80, 54,127, 10,217,137,105, 21,153,106,148, 78,121,242,215, 72,234,121, 70, 70,230,166,241,253,152, 63,161,223,199, 0,108, 45, + 34, 44, 26, 48,182, 38,162,221, 45, 96,186, 27, 0,221, 40, 38,189,235, 64, 75, 55,152,215,156,127, 77,211,192,254,254,247,223, +251,164,109,119, 96, 79, 90,216, 11,208,138, 30,168,121, 4,159,197, 2,250,194, 77,242,208,117,167, 48, 74,225, 70, 18, 92, 49, + 10,167,114,116, 94, 48,225,247,242,105,104, 90,120,115, 87,157,199,202, 52,201,220, 45, 1, 40, 84, 94, 72, 14,129, 68,105, 74, + 42, 75, 48,254,241,245, 43,218,237, 36, 34,163, 73,169,153,118,168, 9,195,106,104, 20, 15,238, 5,183, 80,142,196,228, 3, 73, + 60,227, 68,160,128,159, 50, 96,170, 5, 86,141,131,239, 59,248,108,111,155, 7,185,160, 16,208,165,108,247,114,170, 50, 13,136, +201,161, 0, 60,250, 27, 57,171,230,121, 50,157, 96, 46,225, 68,119, 11, 49, 75,187,204, 33,121, 58,209, 12, 36, 83, 78,121, 38, +129, 50,211,253, 57,243,235,105, 75,175, 43,234,198, 72,113,100, 18,241, 13,167,149, 73, 97,133,107,154, 6,255,244,143,255,136, +227,147, 83,124,244,131, 31,226,236,241,153,138,169, 12,186,174, 19,145,149, 10,215,196, 35, 29,192,129,117,148, 27,115,250, 87, +242, 98,219,116,232,230,220,235,144, 11, 74, 41,116, 75,169, 89, 50,149, 25,217,219, 10, 80,203,221,108,140, 17,109,219,195, 41, + 53,200, 24,131,166,105,242,184,190,174, 44, 22,117, 37,160, 22, 85,179,167,120,201,229, 98,129,229,178,193,203, 23,231,248,231, +207, 62,131,171,106,252,233, 47,127,137,203,235, 11,141, 83,221, 73, 44,172,194, 71, 18, 65,206,192,100, 72, 77,242,141, 91, 87, +105, 11,197, 25,255, 26,116,239, 28,245,240, 72, 2,189,100, 37, 50, 70, 60,243, 70,189,233,194,124, 23,149,254,114,181, 28, 51, +217, 49,118,196,174,114,163,205, 79, 39, 6,117, 85,137,255, 89, 15, 91,171,148,181,126, 24, 80, 89,131,166,169, 39,168, 99,163, +151,172, 68, 92, 35, 93, 93,164,117, 68,186, 88, 90, 67,120,248,246,219,168,155, 5, 98, 20,241,158, 8,154, 67,142,113,101, 37, + 33, 82,113, 89, 17,236,173, 38,229, 17,193,186, 10, 67, 63,104,194, 29,208,212, 13,140, 19,193,155,136,212,244, 50,103, 12,158, + 63, 63,199,243,103,207,113,117,125,141,245,245, 13,250, 78,236,141, 77, 83,195, 88, 82,159,185,136, 0, 19, 93, 80, 96, 61,182, + 88,225,201,197, 36,125, 0,211, 69,144, 57,102, 95,190, 81, 1,155,252,207, 98, 8,140,174, 31, 52,218,119,188,136,167,194,159, + 73,161, 4, 56, 43,108,244,168, 64, 26,231,156,228,139, 7, 47, 5, 18, 54, 67, 91,140,177,240,145,165,227,239, 59,124,240,206, + 17, 78, 30,125, 15,145, 93,158,118, 88,107,148,206, 71, 57, 41,173,247, 65, 34, 96,195,128,138, 98,254,125,112,204,220,248,196, +214,176,133,200,175,148, 82, 73, 56,148, 81,159, 58,178, 85, 13, 42,152,179,250,132,196,125, 47, 98,195,196,105, 55, 42,124, 11, +233, 82,145,220, 14, 12,248, 40,158,120,230, 32,252, 19, 22, 17, 52, 7,130,133,124, 86, 99,202,169, 47,214,166, 6,233,188,209, +232,113,201,228, 85, 96, 14,161,138, 30,100, 35,110, 98, 13,222, 69, 80,184, 30,139,246, 65,188,117,209, 14,189, 70, 43, 86, 55, + 13,236,143,190,255,221, 79,118,187, 29,188, 60,151, 17,147,169,251,105, 83,136,229,198,238,117, 78,221, 46, 64, 50, 69,209,156, +159,178, 52,177,179,149,129, 40, 92, 48, 38,104,220, 79,211,140,217, 77, 34,192,168, 53,125,141,153, 38,143,107,218,149,151,227, +214, 3, 15,136,230,187, 8, 58,248,122,141,105,113, 41,151,168,156, 98,160,160, 87,165,155, 36,237,177,198,141,142,116, 98,129, + 64,157,112,231,103,204,180,242,231, 23,195,128,174,247,249,113, 38,112, 12,202,232,212,130, 8,149, 16,137,229, 5, 37,150,210, + 48,253, 77, 99, 38,223,113,138,177, 77,157,140,174, 9,128,105, 4,250, 84, 21, 47,183,224, 50,148,182,140,230, 41,225,238,180, +231, 99,152, 94, 60,166,233, 5,148, 11, 7,209,183, 43,232,147,248,212, 44,132, 74, 99,202, 36,186,217,199, 51,197,224,113,116, +114,138, 63,252,233, 79,177,190,189, 70, 85, 59, 81, 39,239,118,249,171, 26,229,238,123, 29, 21, 39, 18,163,181, 46,243,210,211, +235,105,204,136, 35, 77,209,155,233,170, 55, 38,143,113, 46,210, 18, 53,169,151, 47, 45, 72,214, 90, 56, 87,161,247, 67, 86,109, +115,140, 10, 69,145, 14,173,118, 22,171,197, 66,138, 32,241,168,116,183, 22, 71,171, 21, 66, 8,248,242,183, 95,226,171,175,191, +129,115, 14,191,253,237, 23,248,248,227,143,241,241,199, 31,225,233,211,103,154,100, 6, 92,223,220, 2,204, 24,250,190, 16,138, +137,210,184, 31,130, 10,251,120,180, 21,169,117,205,135,144,223,203, 68, 34,226, 34,245, 63, 59, 87,193, 85, 99, 4,166,181,186, + 30, 80, 39,198,189,147, 83,221,177,154,209,207, 78, 69, 40, 75, 70, 81, 10,181, 76, 88,240,200, 69,157,193, 74, 91, 51,163,165, + 50, 57, 66,108,185,230,208,162, 84,162,143, 35, 35,114,192,131,123,167,120,235,173,183,179,159, 29,106, 71,229,228, 92, 1,161, +105, 42, 69,237,202,180,196, 58,151, 63,247,233,235,245,253, 32,236, 10, 39,161, 59, 33, 70,180, 93,155, 41,136,149,115, 96, 34, + 60,127,113,129,103, 79, 30, 75,162, 95,219, 97,215,238, 20,106,147,216,242, 42,206, 13,250,220,116,170, 65, 70,196, 89,117, 93, +201,186, 65,223,211,105,189,144,114,224, 77,198,181,202, 4, 40, 98,228, 65,244,131,144, 5,173,186, 34,132,242, 23, 51,160, 7, +250,121, 51, 74,130, 75, 98,220, 20,197, 27,163, 92, 92,229,107, 43,126, 88,199,172,130,129,141,248,238, 9,227,123, 63,252, 33, +214,225, 24,161,219,162,169, 12,140,171,242,199, 60,125, 46, 64, 6, 67,136,240,125, 15, 7, 73, 75, 75, 22,214, 24, 99, 62,109, + 72,133,200,201,218,103,146,150, 67,138,147, 94,158, 35,172,145, 53,204, 24,171, 90,176,178, 18, 13, 84,187,120, 38, 65,221,114, + 8,136,250, 57,116,236, 81, 87, 4, 87,213,136,100, 65, 28,149,243, 46,197,217, 71, 89, 53,177, 58, 4,172, 2,230, 71, 56,150, +218,164, 19,133, 49, 77,185,201,228,162, 77,138,189,117, 36, 64,182,174,173, 97,186, 53, 64, 45,144,162, 98,247,212,111, 84,156, +137,175,166, 99,214, 77, 3,251,251, 31,126,247,147,109,219,101, 36,107,218, 39,231,144, 20,237,166, 39, 48, 24, 26, 11,165, 57, + 64,137,131, 18,226, 70,241, 87, 89,100,105, 38, 4, 35,240, 1, 6, 46, 17,231, 15, 88, 38,216,145,201,118,187, 80,116,253,145, +198,113,124, 66,219,150,244, 50,204, 14,248,249,206,162,124,110, 76,180,111, 43,136, 49, 11,246, 14, 21,237,177,243,164,201, 88, + 61, 22, 95, 15, 42, 66, 76,221,248,164, 80, 21, 86,181,113, 71,192, 69,140, 40, 79, 99,107,147,184,101,118,177, 48, 51, 72, 13, +138, 24,213,156,145, 78, 83, 0, 13, 10,127,121, 58,164,146, 61, 48,121,115,147, 61,132,232,208, 77,146, 38,160, 57, 3, 9,253, + 24, 93,255, 69,136, 75,126,186,102,223,170, 49, 55,223,211,196,149,255, 59,139,224,242,250, 39, 82, 30, 23,166,244,176,172,201, +211,191, 83,215, 53,158, 61,123,142, 7,111,191,133, 71,239, 60,196,229,229, 21,250,126,200, 69, 38,189,254, 33, 10, 63, 93,126, +158,105, 60,203, 72,225, 78, 9,163,106,181,147, 19,240,202,104,247, 18,160, 88,202, 7,143, 58, 45, 65,182,238,165, 63,107,212, +118,233, 99, 68, 12, 1,139, 69,157, 59,176,101,179, 0, 64, 88, 54, 13, 78,142, 86, 89,113,158,212,231,139,102,129,213, 98,137, + 39, 79,158,226,211, 79,255, 25,231,231, 23,168, 42,201, 42,191,189,189, 69, 4,227, 23, 63,255, 57, 46, 46, 47,176, 92, 44,224, + 67,192,118,187, 17,203, 23, 25, 84,181,164,110, 5, 85,121,135,192, 89, 13,158, 38, 24, 49,170, 66, 61,242,152, 85, 96, 70, 16, +145,177, 14, 85,165,197,208,152, 44,206, 98, 6,218,182, 67, 93, 55, 56, 57, 61,213,188,121, 66, 85,203,178,202, 15,126,244, 86, + 43,185,206, 24,155,209,173, 92,112,250, 83,168,139, 15, 33, 23,140,202,169,135, 92, 47, 69, 33, 4, 56,235,180,179, 30, 37,186, + 33,120, 28, 45, 26,188,243,232, 93, 56,229,187,131,101, 23, 46,143,167,202, 5,142,153, 65, 70,196,113, 32, 30, 19,230, 56,162, +105, 26, 12, 33,192, 25, 18,245,189, 94, 32, 88, 69,172,162,132,119,168,155, 6, 23, 87,107, 60,125,114, 38,151,245,110,192,118, +179,149,200, 96, 32, 95, 4,118,109,171,158,118, 59,134,244,232,137, 36,252,124,151, 51,229, 99,100,129,234,104, 65,151, 70, 64, + 18,225, 12,141, 8,224,244,103,101,237, 33,154, 5, 99, 71,234, 29,105,209, 19,193, 34,141, 83, 24, 21,169, 89,167,157,120, 22, + 14,202, 70,218, 88,139, 33, 0, 28, 6, 4, 24, 44, 66,143,223,255,193, 35,152,251,191, 7, 14, 3,156, 53,250,248,220,168,205, + 81,204,107,142,234,213, 85, 6, 84,249, 31,146,125, 46, 79, 31,228,188,203,190,114, 66,118, 79,176,166,172, 37,237,143,177, 4, +144, 29, 39,132,249, 2, 32,133, 53,197, 59, 11, 4,145,117, 92, 46,211, 26,103, 13,200, 85, 32,114,106,169,179, 57, 52, 41,173, + 92, 5, 45,155,232,163,156,131,131, 88,195, 94, 70, 68,172,205, 22, 56,232,207, 47,137,181, 3, 8, 78,130, 83,112, 3, 7,236, + 24, 20,110,246,186,245,217,177,249,202,115,142, 39,227,247,143,222,255, 36,246, 59, 80, 96, 12, 81,180, 15,177,216, 53, 51,165, +178, 90, 52,184,153,176,134,252, 32,131,218,218, 18,121, 45,164,152, 84,140,124,111, 42,232,230, 60, 30,249,135,143,110,194,222, + 94,219,128,225,153, 69,133, 56, 87,165, 99, 84,106, 19, 70,108,227,212,150,143, 3,187,242,233,152,126,190,127,207, 54, 32,151, +120,232, 83, 1, 32,221,161,242, 42,243,205, 99,148,199, 92,175,142,176,116,114,251,102,141,137, 37, 42, 42,139,118,208,130,173, +172, 81, 57, 11, 14, 97,178,219, 62,244, 61,205,252,178,114,199, 45, 46,187, 16, 48,141, 87, 69, 1,240, 73, 5, 53,198,128,102, +121,140, 7,247,142,209,117,187,172,130,158, 92, 98, 10,235, 31,138,188,246,212,169, 79, 80,140,229,228,136,198,248, 67,222,155, +139, 80,177,243,158, 89, 57,190, 21, 38,142,103,196,248,233, 52, 34,175, 86,139,231,109,140,193,110,187, 69,219,247,248,232,163, + 31,225,252,229, 75, 9, 63,177,178,115, 20, 5,113,148,131, 45, 4, 77, 71, 27, 83,200,164,145,144, 78, 73,108,100, 10,164, 81, + 44,168, 20,151,209,103,157,130, 91, 50,252, 69,191,158,201, 64, 31,163,187, 92,217, 51,203,110,222, 99,185,168,241,206,219, 15, + 81, 87, 13,142,143,143,180,152, 25, 28, 31,159,160,114, 13, 66, 8,120,121,126,129, 47,190,248, 13,190,254,230, 27, 48, 51,154, +166,201, 63,191,166,105,240,213,151, 95,225,227,143, 63,198, 15,127,248, 3,156, 95, 92, 96,179,109,177,219,237, 16, 6, 81, 52, +123,245,110, 51, 51,186,110, 24,163, 42,121, 20,205,166,181, 67,178,197, 90,147,118,209, 36,120, 83,107, 21, 10,131,236,164, 16, +132,171,116,246,139,166,193,114,181,202, 95, 3, 4,180,187, 14,125,223,143,136, 99, 34,212,117,173,233,109, 33,243, 0,124,136, +185,240, 47,151,141, 62,158, 49, 63,253,248,228, 88,184,231,193,231, 16, 19,235, 68,125,239, 85,116,182, 90, 54,120,244,232, 93, +212,205, 66,190,103, 74, 65,211,164,188,186,170,196, 62,103, 18, 4,135,114, 65,171,170, 90, 10,117, 93,203,251,195, 7, 84,206, + 10,112,198, 85, 8, 94,186,223,244, 26,132, 24,113,179,105,113,118,118,134,174,221, 32, 50, 97,179,222,162,239,213,242,230,100, + 45, 52,248, 65, 47, 71, 99, 65, 39,229, 22, 84,218,173,123,239,165, 56, 91,151,105,160, 49, 66, 25,249, 26, 13,173,206,135,148, +183, 14, 64,105,120, 38,119,216, 82,247,210,251, 58,209,169,164,115,111, 42, 11,178, 85,190, 24,244, 67,212, 4, 54,153,209, 57, +231, 48, 68, 18,252,171,238,183, 55,219, 30, 31,222,139,248,222,143,126,140,109, 88,193,240, 0,178, 54,139,241, 72,167, 49, 86, + 11,102,239, 61,252, 32,159, 37,214,206,156, 1, 88,142,121,202,146,117, 57,234, 70, 72, 19, 97,167,224,154,132, 53, 78, 5,216, +144,128,165, 77, 18,210,149, 13,151, 10,222,164,152,235, 36, 77,167, 26, 99,209, 55, 42,118,147, 40,239,224, 1,203, 62,243,254, +153,173,234, 8,162,138, 94, 73,199,158,102, 2, 73,203,161, 93,100,242, 30,173, 76, 75, 49, 0,106, 3,108,172, 65,215, 54, 48, +221, 45,128, 86, 46, 36, 7, 24,239, 99,222, 59,221,189,118,207,157,250, 15,222,251,164,221,237,224, 61,224, 35,101,117,116,161, + 5, 47,144,164,210, 21, 71, 68,141, 98,165,137,176,107, 34,148,202, 5,219,100,251, 84, 26,217, 30,234,167,166, 67,121, 26, 47, + 15, 84, 32, 97,203, 0, 16,140,211, 8, 42,174, 9,105,175,107,138,241,244,252, 18, 82,142,185, 9, 99,232, 60, 25,154, 6,157, + 48, 35,218, 37,222,255,254, 91,248,193,241,128,203,107,143, 86,111,223, 38,231,167,143,217,240,114,171,228, 73,209, 99,230,130, + 84,167, 57,200,179,194, 91, 98,108,115,119,170,244,181,252,193,214,167, 98, 96,242, 44,156, 80, 8,222,176,159,251, 78, 69, 54, +248, 30,142,133,138, 81,125, 97,227,203, 2, 68,102,216,170, 65,211,212,232,118,187,194,148, 55,115, 3, 16, 79, 18,252,202, 36, +183,233, 69, 16,185,227,176,147, 63, 61,155,209, 48,138, 75, 10,227,219, 54,234,188, 7,113,184,131,209, 80,218,233, 10, 33,104, + 83,215,184,190,186, 2,217, 10,247, 78,142,243, 97,159, 32, 36,164, 42,226,116, 8,200,216,209,101,255,115,122, 29,125,162,143, +233,107,209,104,151,220, 52, 77,222, 41,151,221, 37,149, 66,184, 4, 49,210, 49,103, 93, 85, 98,243,106,123, 44,151, 75,124,240, +221, 15,112,188, 60, 65, 85,215, 88, 46,151, 26,138, 18,112,121,117,133,199,143, 31,227,235,199, 95,227,236,236, 12,187,221, 14, +139,197, 98,114, 64,166,253,233,197,197, 5,142, 79, 78,240,235, 95,255, 26, 79,158, 62,149,247, 96,144,248,207,192, 33, 83, 0, +147,151,222, 37, 66,155, 78, 10,162, 34,146, 89,147,180,178, 42, 60,237,154,149,187,158,129, 52,122,233,139,250,156,173, 53, 88, + 52,114, 41,177,106,115,107,187, 1,187,237, 14,126,240, 89,189,158,198,151,125, 63, 20,121,243, 38, 79, 38, 56, 70, 60,124,248, + 16,143,222,125, 23,187,237, 54,191,127,229,130, 83,161,107, 91,185, 64,177, 34, 73, 73, 4,121, 71, 71, 43, 60,124,248, 16,214, +213, 42,212,227,124,137, 33,146, 11, 22,233,190, 60, 93, 20, 82, 94, 72, 26,227, 39,247,129, 49, 70, 17,181,185, 10,229, 16, 21, + 31,162, 36, 44, 50,112,246,228, 25,214, 55, 87,226,114,104,123,189, 44, 71,120, 47,106,249,160,188,122,163,252,126, 14,227, 40, +221, 57,155,167, 21,193, 7,212,206,193,213,117, 22,118, 69,198, 24,178, 99,164,128, 70,102, 5,235, 68, 52,206,201, 78, 55, 4, + 84,214, 0, 70, 52, 11,115,145,107, 66,195, 6, 38,248, 48,160,182, 4,184, 10,125,223,131,216,139,248, 76, 49,169, 38,137,163, +137, 65,214,161, 14, 61,254,248, 71,239,225,248,131,159, 34, 4,225,190,243,208,171,216,117,124, 76, 96, 17,225,129, 36, 49,210, +247, 3,160,176, 45,104, 18,161, 53,114, 41, 36, 69,246, 90, 37,231, 25, 21, 94,114,233, 61,210,179, 54, 93, 58,131, 34, 92,229, + 14, 97,243,247,207,118,233, 28, 25, 62, 10,133, 3,166,130,222,116,244, 68, 34,232, 66, 93,237,147, 26,131,171,157,150, 17, 37, +174,118,234, 9,151,172,130, 78, 50,136,209, 72,198,123, 1,190, 33,229,179, 56,102,192, 68,220,178, 5,111, 33,187,245,164, 7, +160,253,141, 36,205,132,216,135, 14,199,186,105, 96,191,255,254,187,159,108,119, 93,182, 15, 77,133, 85,133,149,173,128,194,210, +100,103, 95, 48,215,139,223, 39, 36, 53,184,192,100,184,140,214, 44,136,244, 92,118,197,147,253,252,158,105,106,186,145,159,248, + 96, 49, 97,187,231,168,212,201, 4,128, 38,235,219,210,220,111, 48,158,234, 60, 11,153,149,108, 65,143,139,219, 30, 91,175,111, + 44, 76, 11,191, 8,112,144, 47, 9,102,130,209, 45,190, 94, 12, 57, 43,153,232, 64,107, 93, 68, 0,146,134, 91,112, 81,208, 99, + 81,140,204, 65, 1, 0,105, 84,161, 88, 75,146,235,128, 38,105,105, 83,219, 96,249, 90,112, 33, 86, 51,198, 32,244, 29,214,155, +141, 60,103,154,175, 38, 82, 17,166,252,184, 76,225,143, 31, 57,230,148,133,105,128,224,105, 87,206, 9,145,140,167,130,151, 52, +117, 72, 16,163,111,223,156,243,183,110,228,231, 63, 6, 50, 6, 67,223,227,197,203, 23,248,243,255,229, 47, 64, 49,224,249,203, +115, 44, 23,141, 48,205, 7, 63,249, 57, 89,141, 5,141,218, 81, 56, 91, 73,167, 20,163,142, 92,107, 57,240,245,114,214,247,131, +140,139,125, 40, 62, 67, 18,103, 89,170,179,203, 75,117,226,140, 31, 29, 45,241,157,119, 30,161,239, 6,188, 56,127,129,139,171, + 11, 60,126,252, 13, 30, 63, 62,195,215,223,124,141, 47,127,251, 91,188, 60,127,137,190, 23,133,117, 85,185, 59,239, 68, 85, 85, +225,236,201, 19,252,139,159,252, 4,143, 30, 61,194,118,187, 83,194, 89,151, 5,111, 49, 6,144,205,138,147,204, 97, 79,194,223, +164, 46,103, 48,130, 87,207,184,230,135, 39, 24, 14,244,128,102,229, 49,164,140,242, 90, 71,219,203,229, 10,174, 18,129, 89,223, +123,244, 67,159,207,171,218, 9,203,188,109, 91,153,254, 41,134, 53,169,184,229,235,212,104,219, 22,239,189,251, 8,111,191,243, + 16,219,205, 22, 94,109,123, 85, 85,163,235,123,161,208, 25, 85,196,235,193,251,224,254, 3, 52,205, 2, 94,113,164,233, 83, 61, +106, 56, 20,148,163, 74,109,102, 9,219,112,206, 96,217, 44, 80,213,181,138, 28, 67, 94,127, 5,150,173,106, 8, 41,247, 61,157, +189, 6, 47, 94, 94,224,246,250, 34,163,121,119,187, 45,186,190, 19,129,161,174, 28,140,238,235, 7,175, 93,177, 2,124,164,184, +169,189, 81,113,183,172, 59,112,103, 45,188,106, 54,130,174, 39, 82,225, 76, 22, 67,103, 12,156,238,180,115,228,106, 10,205,226, +241,148, 44,199,227,172,170,242, 0, 82,177, 24, 52,106, 84,118,203,136,178,210,136, 68,240,131,199,110, 96,252,240,212,227, 15, +255,244,143,113, 25,223, 69,220, 93,101,193,164, 80, 0, 45,154,218,129, 77, 45,116,187,224,197, 9, 1, 66, 31, 25,125,215, 1, +236,179,184, 50,198, 88,216,130, 85,252,166,113,166, 33, 74, 46,186, 83,193, 27, 24,133, 85, 87,166, 7, 80,198, 73,130, 59,165, + 78,123,156,224,210, 94,238, 68,234,192, 83, 19,104, 13,178,205, 13,202,152,207, 12,125, 50, 9,114,174,235, 38,221,235, 35, 33, +121, 53,198,149,121,156, 26, 16, 77,113,218, 48, 88, 16, 99, 87, 49,118,126, 5,187,219, 1,216, 20,235,131,153,166, 44, 87,216, + 89,183, 52, 47,234, 31,127,248,222, 39,126,167,182,156,136,140,130,205, 79,129,202, 17, 57,229,240,149, 18, 62, 51,229,158, 97, +210,217,115,177,216,156, 0, 90,120,127, 76, 61,247,126,207, 11,158, 57, 40,116,163,137, 16,111,174,135, 99, 42,199,192, 52,118, +247,133, 86,224,144,178, 47,249,205,137, 3,118,219, 14,189,167, 73,208,196,212,125, 53,238,241, 73,197, 84,229,149,194, 76, 68, +100,211,177, 51,205, 46, 49,163, 72, 78,136, 80,194,114,103,172,154, 6,239, 52,192,122, 59,160, 39,139, 74, 49,124,165, 48, 49, +119, 54, 58,199,183,105, 92, 88,172, 25,120,226, 17,167, 61,157,218,232, 79,167, 73,140, 40, 10, 65, 80, 74, 63, 42,215, 27, 25, + 79, 75,229,244,102,156,159,164, 15,205,189, 85,141,198, 25,172,251, 97, 98,253,200,156,130, 34,221,109, 46,164,255,239, 41,226, +119,237,163,104,126, 73, 1,112,187,190,197,175,254,135,255, 17,255,199,191,249, 63, 49,244, 45, 46,207,207, 85,184, 20,101, 92, + 24, 21,195, 99,147,236,141, 52,216,102,244, 59, 28, 47, 87, 66, 20,243, 1,117,189,192, 7,191,247,123, 88,175, 55,216,172, 55, +210,149,131, 50, 13, 77,176,200,210,129,120,181,138,149,211,175, 16, 2, 22,139, 5,250,174,197,167,159,254, 35, 62,251,205,103, + 56, 59,123,140,103,207,158,226,197,139, 23,184, 82, 34,153,181, 50,162, 77,158,244, 87,253,227,156,195,243,103,207,112,122,122, +138, 95,252,226, 23, 56,191,184,128, 15, 1, 93,219,229,142,213, 7, 25,119, 19, 40,135,154, 64, 59,103, 25,171,199,156,170,198, +170,102, 15,106,249,147,201, 5,103, 49,150, 81,228, 39, 0, 44, 22, 77, 46,254, 85,221,128, 35, 48, 12,189,130, 84,162, 22, 20, + 66, 85,215,153,230, 54,215,115,196, 24,179, 87,124, 24, 58, 84,149,195, 91,111,189,141,200,140,203,203, 75, 88, 99,176, 92, 30, +161,237, 4,193,106, 20, 89,219,247, 3, 44, 17,238,221, 59,133,117,213, 68,112, 87, 57,135,166,110, 70,212,173, 34, 89, 13,141, + 42,249,204, 14, 80,177, 95, 12,162,119,136, 42, 74, 75,151,100, 99,100, 85,195,145,177,222,108,113,113,241, 18,126, 16, 29,198, +102,187,193,102,189, 22, 97,163, 18, 4, 99, 10,246, 81, 49, 22, 41,207, 94, 18,237, 70, 59,160, 37,201,124,143, 10, 35,178,206, + 41, 69,206,103,239,127, 26, 3, 39,197,121,229,170, 81, 24,168, 59,107,131,145, 66,152, 10,159,213, 12,122,112, 74,210,171,132, +165,209,247,168,172, 16,232,134, 32, 84,183,170,170,148,149, 32,105,146,188,190,197,191,249,179, 15,241,246, 47,254, 26, 87,231, + 91,112,104,213, 61, 0, 88,226,188, 87, 39, 43, 22, 73, 89, 53, 68,244,189,228,211, 7, 47,221,108,122,109,179,101,173,116, 80, +145,198,168,199, 0, 71,156,173,101,146,216,106, 96,152,213, 46, 55,126, 14,211, 74, 76,144,253,162, 13, 17,192, 78,186,196,164, + 11, 43,143,255, 78, 58, 49,135,129,101,117,184,100,164, 87, 58,227,161, 32, 37,217,165, 91,245,249, 50,153, 61,241,184, 85,207, +112,208, 28,118, 1,233, 72, 84,177, 3, 80, 87,192,181,181,136,219, 26,166,191, 2, 76,200,237, 52,237,237, 85, 15,103, 79,150, + 59,117, 3,150, 55, 22, 71, 25, 91,148, 9, 93,166,176,122,217, 44, 48,145,255, 11,197, 94, 54,203,225,120,204,101,231, 4,182, +215, 95,143,106, 9, 73,183, 42,166,177, 83,207, 32, 25,198,164, 28,140,106,108,206,132, 55,222, 51,191,201,223, 45,153, 36,121, +220, 59,185,177,162,160, 36,209,172,101,139,152,178,254,167,212,114,231,172, 4, 26, 96, 28,233,199, 20,247, 7,181, 58, 20,109, +116,136, 5,112, 69,159,161, 35,154, 16,226,114,147, 90, 60,190, 57,148,167,252,245,206, 71, 52,247, 30,224, 47,126,244, 16, 31, +214, 17, 67, 28,127, 22,227, 24,125,180,105,177, 30,174, 84, 48,225,153,247, 6,255,147, 95,167, 66,140, 23,213,167, 89, 22,109, + 83,172, 49, 70,189, 65, 49, 65,137,242, 1, 26,163,115,227,148,120, 68,192, 77, 59,224,229,174,211,177, 93,162,237, 21, 23,147, +137, 0,143,222, 8,251,250,173,186,249,217,227,225,217, 77, 48, 42,231,252,143,254,228,231, 96, 4, 12, 33,226,195,239,127,136, +213,114,161, 59,215,132, 54, 21,219,144,188,125, 68, 92, 22, 6, 73,199, 90, 54,141,196,176, 14, 3,156,149, 61,235,131, 7, 15, +176, 90, 46, 81,185, 10, 70, 81,173, 2,147,209, 80, 23,189, 33,167, 56, 93,232,141,159, 8,168,107, 81,186,127,253,213,151,184, +184,188,144,247, 83, 85,201,248,125,181,194,106,181, 68, 93,213,122, 89, 56,120,129,223,123, 13, 34, 51, 78, 79, 79,241,183,127, +251, 31,240,228,201, 83,156,158,156, 8,179,124,185, 28, 19,174, 72,210,187,136, 8, 77, 93,195, 89,139,218, 85, 50, 30, 14, 42, +194,212,247,128,117, 38, 83,193, 72,117, 36, 70, 59,142, 52, 85,114, 78,199,212,170,214,190, 60,193, 0, 0, 32, 0, 73, 68, 65, + 84,100,142, 33, 34, 12,131,218,214, 12,154,166, 82,219, 91, 68, 93, 73,177,234,251, 62,139,189,164,155,180, 8, 1,186, 18, 25, +208,245, 45, 92, 85,225,233,179,231,120,241, 76,158,135,117, 21,252,224, 81,169,234,158,244,178,221,182, 45,252, 48,224,244,244, + 20,203,229, 42, 79,250,130,234, 35, 68,119, 32, 5,214, 90,147, 19,230,114, 65, 55, 70,231,112, 69, 98,158,230,170, 47, 22,141, +128,158, 18,189,206,138,115,226,229,249, 57,206, 47, 94,130, 99, 68, 12,140,245,122,131,118,215,102, 43,134,104, 15,164,240,198, + 40, 29,119,226, 30, 88,253, 58, 80,167,129, 85,161,159,164,212, 73,247,222, 15, 3, 98,240,249,114,149, 41, 34, 42,252,114,233, +162,161,184,222, 24,163, 52, 11,218,249,155,108, 17, 35, 12, 67, 16,117,119, 41,224,209,206, 53,157, 7,204,242, 25,136, 26,188, + 19, 35,163, 50,192,206,212,248,252,203,231,120,187,106,113,242,240, 93,172,150, 75,212,205, 50,175, 39, 36, 20, 72, 24, 2, 85, +229, 80, 85,181,192,145, 92,165,137,117,242, 24, 19,203,131,117, 87,158,184, 0, 32, 11,195,140,218,137,250,223,186, 74, 41,133, + 70,138, 59, 25, 9,121,137,138,131, 85,155, 91,250,186,242, 51,147,247,140,247, 3,134, 65,254, 63,135,144,227,176, 70,162, 40, +161,148,128, 91,102,144, 5,130, 22,246, 68,224, 19,203,186,145, 28,120,162, 60,201,142,145,244, 28,140, 57, 4, 76,133,251,242, +235, 49,130,163, 84,199, 30,140,147,200,248,206,209,128,248,240, 20,236,190, 3, 40,199,127,234, 54, 42,237,234,229,194,121,127, +133,105, 63,250,224,209, 39,109,219,107,184,251, 84,185,157, 71, 21, 52, 38,144,229,155, 96,161,152,206,137,101, 51,176, 8,229, + 41,187,201,221,236,168, 42, 47, 96, 45, 57,254,110,252,122,243, 35,157,243, 86,151,114, 91, 75,135,250, 47,154, 2,107, 80,126, +205,100, 59, 43,118,239, 84,248,201,185,192, 94,142, 48,151,113,100, 98, 10,156,236, 92,224,149,114,216,179,192,189,244,217, 23, +107,130, 88, 22, 68,236,131,104,230,234, 2,104, 23, 7, 63,224,233, 54,226,193,187, 15,241,190, 29,112,118,221, 35, 26, 26,247, + 60, 41,122, 53, 33, 30,139, 31,183,161,241, 66,147, 14,126,240,126, 51, 87, 54,190,113, 79, 88,198, 19, 85,186, 81, 14, 53, 51, +207, 60,139,188,111,197,160, 98,140,172, 15,212,166,231, 62,210, 77, 71,238,124,161,214,167, 3,157, 57, 21,174,133,223,165, 67, +103,236,183,231,133, 57, 18,126, 24,224,234, 5, 62,252,254, 7,184, 56,127,137,118,215, 97,232,122, 57,252, 45,101,178,151,213, +177,172,115,162,242, 94, 52, 13,238,159,158,162,105, 22,176,206,225,104,121,140,186,174,113,113,113,142,207, 63,255, 28,100, 44, + 78, 78,100,215, 43, 29,176,230, 84, 39, 22, 66,145, 72,134,130,168,119,255,254, 61, 60,121,252, 24, 23, 23,231, 88, 44,151,133, + 93,134, 14,174, 16, 14,128, 16, 15,254,160,235,186,198,211,103,207,112,114,114,130,159,255,252,231,184,184,184,192,224, 61,186, +182,205,172,247, 48,248, 12,199,145,168, 82, 89,239,164, 11,163,216,236, 18,147,221,170, 19, 32,100, 62, 64, 10,250, 72,115, 43, + 17,186,169, 23, 62, 74, 23,190, 80,172, 43,171,128, 73,252,224, 6,219, 93,139, 97, 24,242, 4,209, 24,163, 42,194,152,187, 48, +105,182, 4,200,115,124,124,132,197, 98,133,203,203, 75,112, 8,120,251,225, 67, 1,213, 12, 67,118, 36, 84,206,226,221, 71,143, + 96, 92,149, 65, 55, 64, 68,173,106,249,224, 61, 42,107, 97, 43, 7,231, 42, 21, 62,202,186, 66,246,219,148,139,112, 58, 63,162, +254, 28, 43,107,177, 88, 52,232, 7,209, 55,172,215,183,216,110,214,224, 16,209,117, 61,218, 93,139,161,239,209,171,101, 80, 44, +141, 94,127,238,148, 5,170,100, 36,173,175,170,170,241,115, 81,112, 13,162,166, 48, 70,133, 26, 9, 5, 47,102, 49, 85, 34,247, +213,106, 73, 75,239,173, 68,167,148, 75,101,157, 93, 22,169, 57, 75,160,151,170,178,106,243, 10,185,192,203,100, 64, 20,254,198, + 42, 26,150,165,192, 53,206,224, 50, 46,241,127,253,223,255, 9,191, 60,253, 2,191,255,175,254, 26,103, 47, 6, 96, 88,231,239, +111,245, 57, 89,107, 17, 64,232,123,175,133,213,131,131,151,247, 21, 35,175, 15, 69, 55, 23, 50,219,195,164,179,206, 90, 97,224, +235,197, 36,194, 72,198,122, 12,217,103,110, 72,210, 39,105, 50,241, 43,128,101, 70,214,130,134, 35,200,112,206,100, 79,171,176, + 34, 37,123,156,216,106,242, 91,240,105,244, 47,152, 94, 67,106, 67, 84,237,152, 73,122, 46,155,138,128, 41, 86,217,156,137,152, +166, 92,106, 71,224,190,141,216, 44, 9,155,225, 62,236,102, 11,166, 53, 64, 14,135, 54,231,147,226, 78,211, 74, 89, 55, 13,236, + 71, 31,188,247, 73,219,118,121,207, 18,181, 8, 19,166, 35,111, 46,110, 6,163,200, 95, 21,231, 19,162, 92,178,159,205,110, 24, +179, 29,110,182,143,229, 49,136,201, 80,155, 52,138, 53, 7,198,164,163,238,107, 74,136, 59, 92,216,203,196,176,113,199, 79, 92, +118,134,132, 67, 8, 59, 58, 96,155,102, 26,187, 72,179, 55,238,159, 49,230,169, 28,214, 72,138, 27,102,197,148, 39, 33, 38,148, + 89,197, 99,224,202,168,221, 38, 99,224, 66,135,175,158,223,226, 89,207,154, 28, 87,140,245,205,204,183,142, 2,231,155,189,231, +152,230,161, 31, 56,245,121,246, 26,242,108,173,194,115, 55,120, 26, 59,149,247, 40, 42,199,234, 92, 98,233,212,122, 82, 22, 84, + 42, 10,246, 8, 26, 38,218,215, 64,148,143,247,119, 46,236,124,160,147,157,125,137,170,174,241,207,159,126,138,123,247,223,194, +123,143,222,193,217,227,199,184,185, 93, 35,248,168,135,187,140,175,211,104,116,185, 92,226,104,117,132,251,247,238,193, 26,135, +231, 47,207,113,113,121,129, 39, 79,206,240,245,215, 95,227,233,211, 51, 92, 94, 94,226,250,230, 10,235,219, 91, 69,181,174,112, +124,114,146, 59, 25, 81,207,138, 8, 45,249,204,125,240,120,240,224, 1,214,183,183,248,237, 23,159,139,250,249,128,192,148,103, +207,137, 95, 51,169, 40, 95, 79, 34,194,217,217, 25,126,246, 71, 63,195,233,233, 61,172,111,215,232,186, 14,219,205, 46,123,233, +189,238,141,173, 66,112, 66,224,137,184, 50,123,163, 73,216,236,146, 25, 95,229,247,137, 81,104,138,104, 37, 68,153,221, 52, 53, + 12, 89,116,125,175,226,189, 74, 73,105, 42, 34,212,113,127,204,161, 49,177, 32, 80,154,172,150, 21,123, 98,196,106,185,192,195, +183,223,193,242,104, 5,223,123, 92, 95, 95, 97,177, 88,194,185, 10,219,237, 38,119,185, 71,171, 21, 78, 78, 79,117,236, 45,193, + 54,137, 59, 15,142,217, 30,150,198,181,206, 24, 44,151, 11, 25,167,171,111,190,174,235,124, 57,241,106,233, 51, 68,168,106, 7, +178, 14,183,183,107,108,214, 55,138, 51, 21,246,124,187,107,209,117, 29,218,174,205,103,104, 44, 96, 79,137,152,151,244, 14,117, + 37,138,126,171, 23, 9,185, 68, 37, 44,176, 8,122,201, 90,180,109,139,138, 0,178,174,176,164, 34,159, 25, 33,253,123,194, 69, +235, 36, 40,101, 65,248, 32, 93,163, 92,208, 40, 11,243,160,171, 32,240, 8,247, 50, 36, 59,230,146,116,103,228,195,128,203,235, + 45,206,158,159,227,171,255,246, 95,241,103,127,120, 10,126,255, 87,184,120,114, 6,239, 7,132, 97, 64,101, 5, 48,100,157, 20, + 64, 31, 34,250, 97, 64,223,246,224,232,243,212, 39, 93, 44,242,120,220, 72,209,182,196,136,100,243, 36, 48,167,248, 97,220,161, +151,197, 46,219,176, 83, 34, 93, 18,178,209,120, 62, 59, 35,116,184, 62, 90,144,247, 48, 38,200, 74,161,248,124, 68,150, 75,188, + 37,150,252, 3, 99, 17, 34,193,241,160,154, 3, 43,153,173, 20,199,216,112, 83, 84,172, 12,223, 26, 11,175, 73, 12, 18,213, 36, +249, 24,177,136,140,227, 69,192,229, 98, 1,191,187, 7,219, 93, 0,102, 56,236, 93,191, 99,151,200,201,210,246,241,247,164, 83, + 23,182,176,201, 74,109,123, 0, 28, 51, 22,247,132,135, 68,238,200,137, 32, 59, 92,140, 29,249,254,150,123,191,179,224, 61, 58, +218,156, 38, 55, 45,156, 6,251,187,239,195,222,100, 51,235,230,199,113,191, 41, 11, 86, 33,142, 51, 52,165,175,149,170,249, 60, +138, 46, 71,156, 37, 65,141,138,208,149, 12, 58, 41, 10, 59,141, 63,204, 67,227,224,185,211, 32, 97, 74, 38, 59,111,178,168, 72, + 19,179,178, 96,143,139, 11, 1,221,125,168, 39, 53, 60,237,191,166,184,227, 53, 44,133,136,211,230,118, 86,218,103, 2, 16,154, +203,203,231,237, 35, 79, 97, 54,129,199, 96,141, 66, 93,148, 61,166, 18,187,233,117, 12,247,223,151,234,114,144, 49,176, 71,160, + 51,224,224,241,248,236, 9,222,127,255, 3, 12, 93,139,155,219,117, 86, 33, 87, 85, 5,231, 28, 78,142, 79,113,239,244, 62,200, + 24,172,215,107,252,230,139,223,224,159, 62,251, 20,223, 60,254, 26, 47, 95,190,196,250,118,141,126,232, 85,177, 75,232,251, 30, +183, 55, 55,184,186,186,196,245,245, 21, 54,155, 53,188,247,104,154, 5,142,142,142, 80, 87, 85,246, 52,135, 16,240,246, 91, 15, + 17, 67,192, 63,252,215,255, 34,118, 45, 5,183,220,241,146,190,118, 85,145,179,165,203, 29, 92, 93,227,249,243,231,168, 92,133, + 95,253,234, 79,113,115,115,141,109,219, 9,229, 43, 9,175, 34,103, 8, 81, 58,232,141, 49, 19,108,108,226,192, 7, 29, 75, 87, +105,119,170, 63,201,152,164,227, 49,141,157,173, 42,162,229,242, 66, 96, 44,154,101,110, 20, 82,103, 29,124,208, 46, 78, 30,195, +152, 16, 55, 94,234,141, 70,141,222,127,240, 0, 71, 71,199,216,108,183,184,186,190, 70,211,212,168,155, 6,125,215, 74, 78,125, +136,120,251,173,183, 80,213,141,130, 86, 40,239,143,211, 20, 38,117,186, 73,189, 47, 17,174, 62, 59, 19, 42,237,224,219,174, 87, +107,153, 92,194, 22,203, 37,186,193,227,252,226, 2,221,110, 43,170,246, 16,208, 15, 30,125,219,129, 99, 64,239, 61,134,174,147, +125,173, 90,184,156,138, 70, 41,199, 9, 3,174,178, 10,151,161,188, 94, 75,150,188,228,187, 33, 99,176,237,122,248,174, 69, 93, + 59,176, 49,210,229,107, 1,119, 58, 22, 14,154,192,150,200,134, 6, 2,124, 1,139, 94, 66, 68,103, 34, 94,180,214,130,181,208, +203,206,221,142, 57,246,121, 95, 45,190,112,103, 12,140,179,168,157,193, 54,214,120,122,246, 2,199,124,133,207, 46, 43,216, 39, +255, 31,254,242, 47,255, 4,207,233,135,232, 46,207, 68,220, 72, 12, 91, 57, 84,214,194,213, 53, 6,182,216,238,122, 12,109,139, +224, 7,141,160,142, 48,136,218, 73,143, 76,141,196,195, 71,234,118, 11,248, 76,154, 90,229, 40,212,217,231,188,140,230,206, 21, + 76,245,207, 2,149, 49, 51, 79, 59, 70,132, 46,171,197, 56,217,117, 33,148, 61,214, 95,116,196,136,198,202,123,145, 99,238, 24, + 56, 53,172, 44, 73,165, 73,100,156,166, 3,169, 17, 34,178,153,220,234,153,112, 15, 64, 92, 6, 92,210, 61,152, 53, 64,254, 92, + 51,215, 15,147,230, 48, 59,199, 9,132,186,169, 97,127,248,123,239,125,210,247, 93,174,100,113,175, 99,163,169,101, 42,191,152, +152,174,242,139,130, 56,231,137,196,212,253, 38, 70, 57,205, 75, 26,101,112, 9, 49,205,192, 57,101,120,202, 84,156, 86,142,204, +233,192,120,162,188, 29,205,117,117,124, 64, 80,151,113,190,147, 75,195,200,238,133,122,167,247, 10, 33, 77,249,105,229,101,128, +139, 67, 55, 98,218,105,230,164,174,242, 37,204, 66,196,233, 52, 33,103,220,155,169,106, 19,234, 11,143, 41,184,128,202, 9, 6, +231,177,229,152,165, 50, 93, 93,240, 28,180,243,170,130,144,109,130,233,177,242,100,100,207,133, 39, 84,188,217,179,206, 61, 79, + 95,104,178,219,141,197,139, 68, 5,254,141, 33,222,219,163,163, 35,156, 30, 47,177,107,219, 60,101,249,182,149,156,103,194,187, +169,180, 98,140,219, 69, 33, 56,185,186,186,192,203,243,115, 60,124,231, 29,172, 86, 43, 52,106, 73, 91, 52, 75, 44, 22, 43,180, + 93,135, 47,191,254, 18, 95,252,246, 11,124,249,213,111,113,126,126, 14,239, 7, 84, 85,133,202, 85,186, 67,116,249,155,217,188, + 87,116, 24,134, 30,215, 87,151,184,186,188,192,213,213, 37, 54,219, 53, 34, 51, 22,203, 5, 6, 47, 2,163,161, 31,240, 15,255, +240,119,216,237,118,104,116, 79,127,215, 45,133, 14,195, 18,247, 46,118,124, 0, 90, 81, 85, 21,190,250,242, 75,252,224, 7, 63, +192,195,119,222,198,237,205, 45, 78, 78, 79,176,107,119,216,109,219,169, 20,135, 19,148,100,100,251,139,182, 96,100,136,167,233, +140,181, 70,126, 47, 89,128,136,100, 23,175,129, 47, 86, 61,225, 73, 11, 82, 57, 39, 35,213, 52, 94,143, 17, 67, 63, 32, 66,236, +104, 9,184,228,117, 44,156,246,159,117, 93, 97,209, 44,208,118, 61,110,110, 55,184,185,189, 70,244, 17, 77, 85,225,232,104,133, +182,237, 48, 12, 3,150,139, 26, 15,222,122, 75,173, 85,114,216, 46,151, 11, 24,107, 53,151,158,116,148,171, 89,244,214,100,152, +144,213,221,121,100, 73,191,227,200,130,230, 93, 52,176, 85,133,245,102,135,139,151,231,216,237, 54,138,178, 21, 65,218, 86,189, +255, 62,120,197,165,170, 67, 69,221, 17,146, 33, 16,224,131,151,136,217, 74,118,197,198, 58,228,189,131,238,244,211, 89, 97,201, +160, 29, 2,218,237, 22,206,161, 72, 31, 99, 29,179, 71,201, 0,136, 0,179, 40,241, 37,128, 45,228,233,138, 33,249,185,167, 51, +222, 89,161,190,181,157, 7,180,115, 54, 42, 34,140,105, 40,109,148,178,102, 13,152,101, 95,221, 52, 13,158,173, 35, 46,159,124, +131,138, 91,212, 71, 71,248,187,223, 92,225,167,199, 79,241,147,127,245, 87,120,252, 50,194,244, 55, 42, 48, 52,168,107, 11,114, + 53,250, 8,220,110, 58,180,155, 53, 98,232,229,185,234, 10, 32, 42, 16, 39, 17,253, 28, 1,209,168, 25, 95, 71,231, 73,153,110, +212, 93, 65,214,192,144, 69,229,128, 64, 85,206, 79, 15, 0,140,134,221, 8,102, 86,186, 99, 67, 12, 38, 39,197, 73, 47,139,148, +237,165,197, 10,152,120, 2,255, 33, 22, 87,192, 0, 11,246, 12, 75, 30,100, 92,138,186, 43, 34,183, 49,186,192, 76,154, 24,152, + 49, 1,115, 90, 64, 16,212,206,123, 68, 17,183, 53,163,237, 78, 97,183,183, 32,218, 74,230,250, 29, 57,171, 60,171,184, 82,212, + 63,120,244, 73,183,235, 17, 2,193,207,207, 10,125,112, 86,187,112, 20,105, 93,169,139,179,197, 8,112,204, 77,199, 4, 13,202, +123,244, 48, 2,221,161, 67,102,226,189, 96, 23, 46,130,101,128,105,183, 61,245,157, 23, 32,253,194, 76,198, 52,159, 14,148,154, + 1,168,223,190,188,109, 76,247,239,156, 85,145, 52, 27, 73,207,208,178, 5,252,166,124,158,165,112, 49,149,215,136, 41,247,158, +230,221,242,100,133, 64,147,113,189, 49, 52,129, 42, 16, 97,162,122,205,136,213, 50, 52,133, 74,244,207,184,235, 63,188,175, 17, +244,235, 62, 73,117, 54,137, 56, 48, 23, 32, 46,231, 14, 52,209, 28, 48,128, 74,215, 4, 67,142,104,228,233,243,167,105, 51,190, +107,183,248,254,199,127,128, 31,127,252, 3,124,245,197,231,136, 48,121,207,246,173,148,113, 37,168,175,116, 85,206, 49,189, 52, + 18,209,154,197, 2, 23, 23, 23, 56,123,114,134,237, 86, 60,197, 12,194,245,205, 53,126,243,197,231,248,244,179, 79,113,246,228, + 12,187,118, 7,107,173,142,101,221,204, 66, 74, 88, 45,151, 96, 78,153,228, 35,187,221, 85,149,168,151,135, 1, 55, 55,215,184, +188, 56,199,203,231,207,113,126,113,142,171,139,115,124,253,245,111, 49, 12, 61,154,102,161, 54,179, 3,245,156,238,240,224,191, + 18,198, 51,253,236, 56,231,112,123,123,139,203,171,107,252,252, 79,126, 14, 70,196,197,197, 21,174,174,174,115,129, 45,111,236, + 82, 36, 66, 46,234,172, 1, 50, 41, 17,142,149,166,231,156,205, 23,189,100,107, 74,244, 61, 73, 60, 83, 56,139,118,132,131,151, + 76,244,190,151,160, 28,231, 36,138, 53, 79,141,162, 20,148, 52,146,119,149,131,181, 14,139,166, 70,179, 88, 96,187,221,224,246, +230, 90,124,217, 77,141,197,162,134,177, 78,237, 98,140,119, 30, 61, 66,211, 44, 68,245, 29, 34,156, 37,212, 77,131,200, 82,196, + 83,104, 78, 83,139, 29,144, 33,221, 58,171,170,191,169, 43, 13,120,145,130, 44,159,127, 73,214, 59,127,121,142,190, 19,159,252, +224,133,136,215,118, 3,118,187, 22,155,205, 6, 93, 43, 42,124,161,151, 89, 29,163,203,197, 36, 68, 81,129, 87,214,194, 85,117, +126, 79, 86,117,149,181, 71, 80, 53,189,209,105,104,223,117,112,102,228,223, 15,131, 87, 49,171, 81,203,159,136,232, 42, 55, 10, +254,132, 81, 31, 51,229, 47,157, 25,253, 32, 59,121,137, 0, 15,250,117,144, 29, 3, 46, 77, 13,184, 8,140, 81,114,100,103, 44, +206,158, 94,193, 95,157,193, 84, 14,181, 33,172,177,196, 55,159,126,138,127,253, 39,167,224,247,255, 37,118,231, 79,101,204,237, + 25, 6, 30,206, 89,248,104,176,222,118,216,221,222, 2,161,203,107,130,164,112, 79,246,214,228,136,177,202,133, 48,218, 62, 19, +138, 96,158,204, 52,129, 8, 45,141,203,232, 88, 73, 87,139, 57,228,199, 88, 97, 12, 68, 21, 28,178,170,208,193, 34,214, 19, 27, +190,153,106,187,210, 42, 64,250,110, 41,236, 36, 35,125, 10, 17,108,130, 8,249, 82,168, 19,132, 6,137,188, 10,136, 89,251, 65, +229, 90, 86, 95,103,210, 61,191,103,194, 42, 2,166,242,184,180, 11, 96, 83, 1,195,121, 82,254,189,150, 52,151,199,239, 31,190, +175, 66,185,172, 36,151,234, 19,114, 20, 43,246,108,104,172,217,207,115,223,114,217, 1, 71,154,118,155,148,177,173,249, 86,144, + 21,226, 37,201,141,139, 48, 24,162,185,254,111, 90, 96,112,240, 48,147,189,208,202, 24,221, 99,115,246, 74, 27,218, 31, 95,228, +132,181,121,167, 61, 43,178, 84,192,229,203,209,187, 33,236, 45,203, 71, 81, 93,122,189,104, 70, 85, 43, 58,195,244,186, 48, 50, + 52, 71,185, 51,123,129, 52,121, 39,150,119, 92,242,198,136, 60,130,112, 38,126,247, 61,101, 36,237,101,173,240, 29,197,157,247, +113, 53,123,251,109, 42, 43,203, 30, 62,103,204,134,159,112,248,213, 2, 99, 74,112, 78,202,226,158, 12,205,180,224, 88,135,237, +118,141,103,207, 94, 40,110,213,252, 78,222,181,156,207, 83,254,236,153, 95,123, 27,168,235, 10,193, 15,184,188,188,192,139,151, + 47,240,236,249, 83,156,233,142, 60,117,244, 9, 78, 50,231, 59,141,145,152, 70,242,166,231, 84,190, 98, 42,224, 84, 65, 27, 66, +128,247,157, 88,175,140,116,110, 99, 97,221,239,206,185,216,218,188,234,170, 19,239,176,239,165,255, 94, 46, 22,248,234,171,175, +176, 90, 29,225,199, 63,249, 9,190,249,230, 27,116, 93, 43, 62,109, 40,132, 38,137,177,244,242,216,123,175, 5, 90, 68,116,201, + 31, 29,162,207,201,112,233,155,141,246, 51, 25,223, 87,181,131,173, 68,112,149,108,101, 33, 4,196, 16,177,219,237, 16,189,151, + 11,143,218,217,140,138,209, 70,238,130,102,160, 87, 14,171,213, 50,175,184, 86,171, 37, 42,167,191, 70,132,229, 66, 66, 90,142, +143,143,241,224,193,219,168, 84, 11, 17, 35, 75,209,100,233,156, 43, 87,101, 16,144,179,226,175,174, 43,201,201,102,181,232, 37, + 24,143, 49,163,103,223,135,136,155,219, 53,218,221, 6, 78,211,219,140,174, 41,118,219,173,138,227,186,252,218,164, 8,101,163, +194, 53, 25,251, 27, 61,183,237, 36, 61, 77,154, 99,171,124,132,144, 41,114,221, 16,208,119, 59, 88,167, 9,100,198,170,229, 50, +192, 57, 81,241, 71, 16,134, 32, 81,171,198,184, 44,228, 35,235,178,178, 62, 9, 18, 51,164, 70,211,238,172, 33,212,149, 67,132, + 68,209, 58,107,114, 88,132, 80, 18,117,100, 95, 59, 60, 95, 51, 46,206, 30,195,241, 26,100,132,209,176,106, 12, 62, 59, 55, 88, +188,252,123,252,213,191,254, 5,158,154,143,112,243,242, 41,216,239, 36, 75,192, 48, 60, 12,182,219, 30,221,110,135,224,123, 25, +243,235,238, 58,217,222,108,122, 95, 48,129, 67,144,100, 58,213, 39, 57,231, 16, 52,123,157,195,152, 29, 31,153, 96,120,180, 48, +202,215, 32,144, 85, 2, 93, 20,251, 90, 36, 51,138,253, 16, 71,187,162, 25, 83, 9,161, 66, 64, 76, 88,112,105, 61,205, 32, 75, + 8,112,162,142, 55, 44,206,136, 66,147,149, 70,252, 12,245,157,231,244, 56, 32,210,184,139, 79, 53, 47, 0,176,145,112,108, 2, +214, 13, 99,235,239,193,110,118, 0, 95, 75,183,254, 6,189, 75,211, 52,176, 63,252,222,187,159,116, 93,159,173, 80,113, 6,109, + 25,125,232,194,114, 79,157,115,156, 88,225,167, 65, 47, 99,103, 54,237, 40, 81, 28,240,229,222,149, 38, 93, 97, 25,247,202,179, +145,126,217,114,239,247,152,196, 17,145, 42,216,166,198, 59, 21,195, 6,198, 78,199,255,134, 15,116,158,229, 1, 60, 3,222,204, + 41,118,121, 87, 82,196,146, 16,141,143, 41,239,233,153,246,124,251, 84,132,214,100, 34,122, 94, 87,140, 2, 57, 91,142,169, 13, +129,253,128,155,157, 7,172,133, 51,156, 71,142, 25, 53, 72, 69,170, 94,217,137,205,224, 37, 40, 71,203,119,220,240, 38, 43, 3, + 85,215,210, 1, 33, 26, 29,184, 68, 77,126, 30, 60, 37,216, 81,209,253,115,226,158,207,174,156,204, 50, 74,107,148,144,197,179, +253,246,208,183,216,238,118,154, 16,246,122, 0,205, 94,225, 44, 11, 59, 24,111, 98,111, 47, 61, 14,148,186,106,181,178, 9, 27, +189,206, 10,230, 59, 63, 97,250,141,164,139, 58, 44,234,227,153, 78,193,104,231,149,189,230,135, 30,236, 44, 54,160, 92,221, 28, +170,236,204,123,242,198,253,159,165,162, 50,191,248,226, 11,188,243,240, 33,222,122,240, 0,237,110,135,161, 31,176,221,182,232, +251, 30,174,114,153,156,102,173,236,109,193, 17,174, 18, 44,106, 55, 12,233,100, 29,225, 67, 80, 66, 26, 72,195, 68,164,219,174, +154, 70, 71,178,233,240,148, 3, 58, 38, 27,166,106, 41,188,118,189,201,219,159, 94, 53,107, 44,150,171,133, 88,249, 82, 20, 38, + 67, 11,250, 2,171,163, 35,132, 16,112,122,114,130,247,190,243, 30, 8, 22,214, 73, 42, 92,208, 0,148,213,234, 88,188,203,131, +207,132,184,196,103,144, 41,130,211,139,168,162, 84, 35, 52, 66, 87,158,230,224, 35,110,110,111,208,110,215,176,198, 96,240, 1, + 78, 59,178,182,235,209,117,194,112, 39,237,158,141,181,121,146, 17, 98,204,226, 48,107, 68,181, 76,198,102,123,157,117, 90,176, +244,179,200, 58,246,142, 32,236,182, 59,128,125, 30,235,138,136,110,116, 79,144,234, 2,162,134,174, 36,230,187, 49, 14, 93, 63, +128, 56,228,206,143,138,219,118,154,208, 25,167,126,116, 68,248, 40,150, 93,227, 44,130,103, 88,138, 48,206,193, 89, 66, 75, 14, +103, 79,174, 16,174,207, 84, 0, 55, 54, 47,174,105,240,247,159,189,192,175,223,189,198,251,191,250,223,240,248,108,141,198, 95, +225,222,201, 18,177, 90, 98,211,121,108,119, 29,134,118, 7, 63,244,170,128, 31, 91, 9,217, 38,202, 5, 74,194, 87,164,232, 59, + 67,168,172, 5,108,165, 9,104,113,140,146, 86, 27,168,209, 93,117,174, 78, 58, 82,143,172,151,235,114,207,174, 12,251,202, 64, + 69,112, 22, 14, 94, 46, 1, 24, 87,130,227,191,115,177, 82,100, 12, 76,160, 0, 88,242,128,113,179,124, 17, 86,207,188, 29, 27, +156,252, 44,149,138,168,150,106, 34,249, 83,158,128, 37, 91, 24, 23,112,101,107,240,182, 1,245, 23,128, 9,152,145, 90,166,145, +172,147,162,254,193,163, 79,218, 93,135, 16, 24, 65, 51,229, 99, 62,180, 77,246, 18,151,132,155, 81,200, 54,203,221, 34,154,188, +152,177, 24, 97, 32,191,184, 60,139,204,222,175, 50, 84, 92, 24,152, 74,120, 44, 79, 44,106,152,239,218,139,226,217, 6, 70,199, + 12,207,227, 15,128,248,112, 87, 58,233,196, 49, 21,215,241, 4,166,195, 7,198,238, 26,187,170,105, 70,160, 3, 60,123,218, 95, + 59, 80,158, 16,232, 27,185, 16,246,177,238,227,226,226, 20,127,252,225, 61,184,110,141,139, 65,125,145, 51, 79,117, 9,180,201, +195, 2,162,153,130,159, 15, 40,190,169, 72,145, 27, 47,112, 0,233, 14,145,178, 56,240, 46, 87,128, 88, 27,139,236,102,208,193, +226, 51, 87,219,115,169,200,215,164, 47, 34,225,161,139,231,118, 90,152, 41, 21,185, 55,248, 71,254, 28, 31, 44,108, 9, 49,154, + 64, 28,119,121,190,230, 83,167,137,187, 33, 9,115,238,250, 75,186,131,224,217,123,235,110,149,190,234, 33,166, 30,208, 81,252, +248, 26,242, 61,207, 31, 40,189,122,143, 78,251,247,130,145, 70, 85,213,216,237, 90,124,249,229,151,248,224,253, 15,208,212, 53, +118,109,171,108,114,171,100, 56,205,219,142, 17,141,142,135, 7, 47, 29,118, 84,113, 88, 10,109, 73,251, 95, 31, 5,151, 74, 32, + 37,231, 25,165,184, 73, 55,108,140, 88,210, 82,204, 40, 17, 52, 83,126,196, 49, 11,249, 77,254,188,181, 6,205, 98,145,211,210, + 18,122,182,170, 37, 51,190, 89, 44,132, 72,167, 46,130,251,247, 31,192,168, 40,198, 89, 7, 50,132,197, 98,137,109,219,225,246, +230, 70, 47, 81, 70,119,220, 4, 87, 73,199, 22, 52,248, 39,161, 74,119,109, 43,105,123, 12,244,222, 99,189, 94,163,221,109,117, +132, 43,227,220, 36,114,220,238,118,232, 90, 65,222, 66, 51,194,165,203,135,174, 92,188, 70,152, 42, 15, 93, 61,233,214,144, 76, +103, 88,144,174,194, 54, 39, 13,113, 1,186,174, 3,199, 33,231,202,155,164, 96,215,175, 69,133, 21, 52,147,252, 66,196,178,174, + 17,137,164,168,233,215, 78, 22, 49, 82, 22, 71,132,209,136, 93, 17,116, 25,125, 13, 44, 69, 24,227,244,162, 16,176,172, 12,170, +197, 18,103, 87, 1, 87,103, 95,162,194, 14,108,170,201,210,181,177,140,139,176,196,243,207, 63,197,159,255,252, 45,248, 71,191, + 4,110, 47,113,116,188,128,119, 43,220,174, 59, 92,223,172,209,111,214, 64, 28, 84, 91,163,159, 81,200, 52,207,251,168, 36, 70, +206,107, 68,147,167, 29,226,187,151, 40, 85, 37,150,242,216, 4, 38, 84,107, 36, 41,252, 17, 52, 70,190,178, 81,242,219,184,190, + 96,114, 57,212, 6, 41,173, 79,191, 71, 42,252,169,131,231,210,216, 76,128,143, 6, 54, 6, 24,203, 50,250,199,184, 15,205, 66, +195, 92, 63,120,140, 99,229,176,247, 41,148,221,186,193,137,137,216,214, 17,155,112, 2,179,241, 64,184,206, 89,242, 7,202, 74, + 94, 69,212, 77, 13,251,131, 15, 30,125,210,183,189,140, 34,202, 18,160, 42,111,155, 8, 63, 84,170,198,229, 73,197, 73, 97,165, +195,177,171,147,225,186, 90,213, 40,113,224,203,125,248,236,176, 49,178,175,231,188, 43,231,209,112, 79, 51,235,218,252, 58, 16, + 3,134,136,188, 66,200, 40, 90,194, 12,107, 50,165,188, 97, 82,192,161, 54,187,148,234, 85,228,201,143,213,102,202,101,215, 34, + 29,185,236,136,247, 47, 11,153,154, 84,164,215, 17,141, 66, 66, 16,129,124,139,120,255, 67,252,244,199,239, 98,115,246, 21, 94, +116, 22,181, 53, 99,162, 87, 49,213, 72,254,120, 99,104, 58, 90,166, 67,227,241,125, 85, 85,249,156, 98,100,172,142, 78, 80, 89, + 66,219,245, 51,158, 63,221, 49, 44,161,172,158,163,195,171,246,241, 22, 80, 50,249,139, 11, 23,107,228,231,212, 1,240, 45, 86, +231,218,205, 29, 29, 31, 35,134,128,193,135, 49,207,126, 38,126, 36,122,181,237,107, 46,210,124,227, 44,247,194,197, 87,170,248, + 95,247, 87,168,216, 11,150,184,251, 87,174, 7,232,141,126,105,166,112,193,193,142,189,188,158, 54, 77,131,151, 47,207, 97,173, +193, 47,127,249,115, 92, 94, 94,104,151, 26,115,214, 58,145, 81, 49,159, 40,199,179,175, 62, 65,135,212,250,101,180,227, 76, 1, + 46,178, 3,183,249, 53,106,154, 58,167, 61,166, 75,238,152, 77, 63, 46, 12, 40, 33, 87,139,174,171,105, 26, 1,220, 88,202,226, +179,202, 89, 28, 29, 31, 33, 68, 66,136, 1,171,213, 10,195, 32, 66,177,166, 89,228,231,185,168,107,116, 67,192, 87, 95,127,141, +151, 47, 94, 32,114,196,201,241, 49, 22,139,165, 42,249,157, 16,244,148, 20,215,182, 29,174,175,111,112,123,115, 45,222,105,107, +209,181, 29,182,155, 13, 98,244,112, 85,157,197,108, 62, 4, 12,131, 23,113, 94,223,139,242, 91, 71,234, 65,199,196, 80, 55,128, +181,178,130,180,214,229, 29,189,202,175, 53, 98,151,139, 32, 17, 33,252,121, 63,228,116, 52, 67,138, 76,133,192,104, 18, 94,213, +144, 36,251, 73, 33,146, 83,148,201,162,237, 7,105, 12,156,153,124,110, 68,201,238,198,194,169, 44,126, 50,144,181,138, 66,116, +157, 19,150,191, 53,140,219, 88,225,236,241, 75,240,237, 83,152,202, 29,124,223,173, 26,139,127,122, 22,241, 96,251, 25,126,245, + 47,127,142,103,253, 35,244,219, 43, 16,123,244, 17,184,190,109,209,175,111, 0, 30, 50,249, 77,143, 85, 48,100, 61, 65, 28, 68, +203,198,170,237,178,201,114, 39, 83,133,132,143,229, 34,115, 87,232,168, 33,191, 95, 2, 75, 82, 34,171,203, 34,139,147, 83,147, + 65,132,192, 86,197,122, 12,207, 6, 20, 2,172, 9, 96,227,212,199, 46,171,129,140,155, 75,142, 2, 2,172, 5, 2, 52,202,149, + 99, 78,141, 99, 98, 16,155,172,140, 55,154, 18, 7,205,117, 55, 38,234,186,197, 78, 38,171,129,129, 5, 24,182,138,184,180, 53, +194,110, 5,211, 94, 1,166,211,193,255,221,159,113,237,212,223,249,164,219,117,185, 67, 47, 67, 82, 98,105, 1,162,100, 61, 82, + 63,123, 2,226,211,225,125,107, 44, 13,222, 68, 7, 78,158,187,108,111,251,138,119, 20,133,125,158,162, 6,162,125, 1, 16, 81, +177,251, 43, 11,123, 65,132, 43, 46, 19,243,200, 82,154, 36,212,141,171,128,137, 2,188,180,135, 81, 49,112, 39,154,238,202,203, +201,120,246, 79, 74,151,226,244, 54, 16,117, 34, 66, 5, 68,198,184, 26,102,119,133,191,251,244, 12, 55,188,192,189, 70,118, 96, +113, 2,170, 41,198, 65,251,125,116, 81,208, 49,205, 92, 63,144,234, 6,140,174,134, 97, 24,208, 15,126,242,124,247,187, 87,154, + 76,108,246,199,201,251,223,135,177,239, 79,207, 99,103,204, 30,235, 29, 35,245, 57,128,102, 46,112, 75, 7, 49, 79,118,207,227, + 90,131,249,205,198,239,251,162, 50,122,163,130,158,213, 71,111,242,119,138,251, 59,205, 46, 73, 7,133,238,140,169, 37,145, 94, + 83,208,153,247,186,243,215, 93, 2,160,135,247,229,213, 21,254,236,207,254, 2,223,121,247, 29,188,120,241, 66, 3,102,100,255, +235, 67,148, 72, 90,125,204, 86, 59, 93,168, 7, 93,212,237,172,187,105, 81,154, 75,126,122,178,136, 5, 84,117,133,170,174,100, +188,158, 57, 11, 52,129,132, 48, 35,219, 1,229, 51, 38, 22, 45,241,185, 55,218,165,199, 73,219, 32, 23, 7,233, 80,143,150, 11, +132, 24,177,221,110,112,255,222, 61, 84,117, 13,107,128,163,163, 99, 92, 92, 94,226,250,234, 18,204,140,190,235, 1,150, 75,128, +100,136, 19,218,110, 64,187,219,225,230,230, 22, 87, 87, 87,216,237, 54,176,122,233, 25,134, 1, 93,215,193, 15,131,142,213,147, +205,140,208,119, 1,183,183,183,104,219, 29, 56, 4, 52,141, 4,169,244,253,160, 77,145, 92,204, 35, 51,162, 15, 88, 52,181,194, + 92, 98,118, 21, 12,131,215, 73,217,232, 52,241,145,209,247,189,120,178,193,168,157, 5,200,106, 52,176,114,205,245,149, 72,121, + 4, 9,150,147, 60,246,105,181, 6,166, 60,117,145,113,186, 80,221,210,229, 41,133,247,140, 98, 90,153,226, 26, 48,140,179,232, + 35,225,236,197, 26,235,103, 95,163,182, 62,239,123,231,171, 47, 67, 0,215, 11,124,241,249, 51,252,226,187, 29,238,255,248,127, +194,246,122,131, 72, 30, 55,109,196,213,213, 26, 97,119, 43, 97, 46,137, 78,200, 99,180,110, 18,168, 49,137, 24,179, 50, 98,139, + 35,178, 8,108, 64, 49,162,170, 12,200,213,249, 2,159,173,214,154, 54,103,116, 95,206,100, 16, 3, 96, 72, 20,244,169,240,198, +100, 61,203, 44,124, 25,137, 79, 66, 97,140,205,150, 54,225,168, 21, 17,227, 44, 30,122,227, 12, 60,156, 40,226, 49,232,235,111, +133,216,151,224, 52,170,186,151,247,179,205,211, 4, 34,155, 57, 45,121, 66, 29, 25,199,196,232,106,198, 45, 31,195,108, 34, 40, + 92,106,179, 61, 59,111,245,168,239, 25, 96,167,234,247, 93,215,231,211,120, 68,170, 30,242,199,236,239,200, 39, 59,200, 49, 58, +124,244,143,167,131,180,120,131,236,121,214,139,177,248,164,107,164,253,227, 53,239,189,137,246,186,252,233, 1, 70,211,218, 81, +230,148,207,186,116, 38,154,136,185, 82,129,150,238,215, 98,229, 12,170,132,128,229,169,234,188, 4,233,164,174,126, 12, 56,153, + 22, 49, 75,102,130, 90,205, 99,114, 98, 13,129,161, 25, 64, 36,162,177,172,183,101,206, 99,181, 84,152,140,209,140,222,146, 20, + 87, 22,128,196, 64, 46,200,108,229,170,196,208,254,234, 97,252,224,243, 84,169,185,247,197, 15,117,156,251,124, 1,158, 23,240, +116, 89,122, 77,101,229,131, 59,252,195, 99,236,242,215,146,168,172,244,205,227,119,180,182,191,154,215,118,151,101,108,238,132, +231, 87,123,230, 11,111,221,216, 61, 20,167,121,241,143, 31,250, 44,158, 42, 47,139, 68, 4,126,195,215,242, 77,174, 25,214, 57, +188,120,254, 28,239,188,253, 16,255,235, 95,254, 21, 46, 47,207,177,221,110, 20, 2, 83,100, 12, 36,204,106,148, 80, 18, 48,161, +107,135,194,239,155,118,227, 49,231,203, 27, 35,212,141,186,174,242,164, 11, 64,206,101,151,139,173,116,203, 78, 97, 37, 73, 39, + 24,212,135, 61,146,221,108, 78, 37,147, 0, 22,217,125, 59, 87,193, 18, 99,185, 92,193, 84, 21,110,174,111,209,247, 29, 30, 61, +122,136,147,147, 99,212,205, 18,235,245, 6, 55, 87, 87, 88,173, 22, 88, 44, 22,104,219, 29,140,181, 88,174,142,113,125,179,198, +213,213, 21,218,221, 22,187,221, 22, 97, 16,177,152,173,212,123, 31, 99, 30,192, 82,209,245,117,221,128,205,118,135,182,221,102, + 27, 85, 12, 18,167,106, 84,228,150, 70,250, 81, 67,111,234,102, 1,171, 94,228,168,137,119,105,122,227,172, 92,254, 67,144,181, + 6,135, 33, 91,174,130,166,252, 17,113, 38, 27, 86,186, 54, 24,188, 87,109,128,250,221,161, 26, 1, 99, 69,168, 26,124, 70,250, +138, 55,221,130,245,241,248, 64,224, 40, 34,205, 72, 9,119,154, 46,148, 17, 67, 96,220,236, 34,206,159,191,132,233, 46, 4,243, +154, 28, 82,206,170,229,119,124, 55, 46, 28,225,233,174, 70,247,228,115,252,203, 95,124, 23,195,131,159, 98,189,217,224,197,229, + 22, 55, 47,207,129,110,157, 59,115,102, 61, 95, 67,132, 53, 81, 60,224,145,149, 92, 41,182,222,218, 57,176,113,185,153,136,250, + 1,119, 70,113,173,122, 86,165,184, 92,214,203, 8, 89,185, 8, 68, 21,172,150, 67,113, 66,122, 95,235,216, 94, 95,251, 64, 6, +134,229,177,144,113,217,117,147,249,240, 41, 3,131,229,191,173,194,108,210,100, 3, 9, 88,198,102,164,216,231, 21,158, 92, 22, +164, 1, 54,153, 49,146, 62,247,145, 9, 11, 0,181,139,184,170, 44,250,221, 9,194,246, 6, 62,110,208, 71,135,214, 51,218,158, +209, 15, 17, 97, 8, 48,195,128, 19,238,240,221, 35, 3,251,195, 15,222,253,164,107,197, 82, 48, 30, 50, 35, 49,174,236, 2, 9, +135,160, 48,211, 17,188, 60,232,196,123,223,247,172,243, 60,111,124, 98, 99,162, 73, 97, 0, 29, 26, 19, 82,182, 54,204,220,224, +251, 59,241, 25, 70,147,103, 19, 5, 59, 1,101,211, 65, 76, 14,167,132, 50,205,114,143,156,132,128,101,166, 59, 79, 58, 35, 67, +197, 42, 64,133, 55, 14,148,137, 90, 9,102, 16, 83, 8, 74,138, 35, 77, 24, 67,146,255, 6,233,141, 90,133, 53,163,120,204,225, +225,178,198,146, 24, 59, 61, 8,193, 5,188,237, 64,215, 60,181, 19,206,147,241, 14, 79, 91,112,176, 60,149, 19,143, 59,236,120, + 7, 6,214, 83,236,237,116, 61, 81, 58, 11, 14,186, 26, 94, 81,196,177, 87,244,167,218,178, 61, 11,222, 43, 42,219, 92,123,255, +109,238, 2,156, 99, 86,139, 55, 52,189,170, 45,230,241, 61,143,169,157,111, 62,118, 79, 93,204, 71, 63,252, 8,214, 26,220,220, +222,230,194,158, 47, 47, 7,254,206,155,140,231,239, 84,203, 51, 99,187, 93,227,151,191,248, 83, 60,124,244, 46,252,208, 99,187, +221, 10, 65, 45,121,149,139, 23, 46,121,213, 57,120,248, 48,192, 90, 11,167,170,236,224, 35,156, 51, 9,180,160,254,116, 41,240, +156, 25, 48,177,136,214, 36,132, 40,163,214,144,194, 56, 82,104,138, 42,211,147, 37,139,244, 51, 66, 36, 93, 52,200,162,107,119, + 56, 57, 57, 66,211, 44,208,107,250, 89, 8, 3,142, 86, 75,156, 62,120, 11,195,208,163,110, 26,172,215,183, 32, 34, 84,117, 5, + 87, 85, 50, 82,111,119, 88,223,174, 49,180, 91,212,181, 19, 38,187,142,183, 23,154, 73,223,118, 67,198,146,202,122, 87, 56,239, +237,110,135,245,250, 86,161, 61,200,138,116, 20, 22, 90, 41,254, 29,192,140,186,110,192, 36,249,230, 85, 85, 97, 80, 93, 66,186, +136, 91,245, 97, 7,150, 20, 51, 2,103, 59,218,224,125, 70,243,210,164,193, 33, 13, 48, 17, 69,251,160,233,109,172,123, 98,177, +183,118, 85,118, 35, 0, 0, 32, 0, 73, 68, 65, 84,141,171, 12,214, 4, 50, 97,247,203,247,138, 62,104, 84,173, 20,234, 33, 18, + 12, 6, 48, 73,130,220,229,109,139,221,229, 11, 56, 18, 43,215, 40,227, 49,217,190, 92,190,219, 22,141,195,103,103, 45,222, 55, +143,241,193, 79,255, 8,207,111,107,236,110, 47,224,119, 27,221,167, 35,179,210,243,133,209,104,222,101,214,191, 72,113,119,142, + 0, 35,157,121,227, 36, 3,129,201, 98, 8, 18, 29,156,105,167,170,236, 15,201, 35, 71, 10, 26,231,136, 33, 74, 54, 6,120, 76, +112, 99,117,104, 25, 10,202,146, 23, 47,124, 48, 21, 16, 25,198,176,102,173,235,250,152,160,170,246, 17, 16,100,136,192, 6,224, +104, 96, 89, 33,244, 90,224, 77, 94, 43,168, 9, 92,113,184,130,103, 31, 19,243, 70,253, 19, 3,100,113,108, 8, 93,205,184, 14, +199,104,110, 13,142,251,167,120,232, 54,248,222, 42,224,247,238, 71,252,232,109,131,159,189, 95,225,167, 63, 56,194,207,126,255, + 33,126,246,211, 15,101, 2, 28,153, 38,163, 15, 46,137,236, 76, 19,213, 48,151, 7,115, 78, 33, 67, 49,110, 31, 99, 91,167,163, +244,226,118,196,152, 9,224, 48,118,111, 60, 38,164,153, 3,214,170,244,152,146,127,145,178,197,139, 39, 96,146,185, 2,157,115, +224, 76,193,170,207, 57,232,242,130,134, 57,154,150, 0, 4,143, 46,232,212, 32,249,245,211,222, 60,245,101, 5,126,181,196,163, +178, 86,152,168,232, 64, 66,132, 97,185,144,132,130,158,150, 87, 29,197, 46, 54, 63,255,124, 81,208,241,114,100, 44, 22, 53,190, +247,246, 2, 23,231,215,120,210, 49, 26,123, 32, 28, 60,219, 8,167, 35,244,180,124, 74, 94,255,114, 68, 31,203, 11, 27,239, 11, +201, 70,230, 64,218, 13, 21, 37,137,231,162,194,233,212,163,172, 44, 73,164,150,245, 25, 60, 31, 70, 79, 47, 6,124,199, 88, 25, +175,248,117,158,219,190,246, 77, 2,119,138,202,105,111,235,204,251, 35,109,154, 47,209,139,219,195, 36,152,249,112,195,158,110, +230,201, 53,146, 10,124,228,120,215, 16,160,128,244, 20, 99,117, 21, 24,189,234,245, 57,148, 43,127,232, 66, 87,254,218,106,185, +196,227,199,143,241,217,231,255,140, 63,248,195,159,225,225,187,239, 97,183,107,193, 79,159, 34,198,128, 33, 4, 65,175,242,184, + 43,238,250, 30, 31,127,252, 17, 66, 12,248,199,255,246, 79,176,141,114,200,173, 22, 94, 99,245,125, 46, 5,203, 58,171,227,119, +202,197, 42,104, 66, 89, 8, 61, 42,103, 80, 87, 78, 86, 65, 74, 68, 20, 48,140, 81, 65, 26, 11, 9,211, 26, 84, 86,198,230,125, +223, 33,120,143,161, 23,128, 74, 93, 59, 88,195, 88,173, 30,224,234,230, 22,174,126,129,102,177,194,205,205, 13, 78,239,157,226, +234,242, 82,114,231, 85,141,159, 50,217, 87,171, 37, 92, 37, 1, 51, 33, 6, 84, 78,138,122,175,151, 26, 86,229,244,162, 89, 98, +219, 5,108, 55, 59,108,182, 91,244,125, 87,128, 83,144, 53, 6, 49, 70,144, 35,244, 65, 10,237,178,105,100,119, 30, 34, 6,237, + 80, 67,156, 6, 14, 15,189,199,114,217,128,130, 83, 56,141,248,209,147, 51,162, 76,159,204,227,111,232,101, 64, 47, 70,131, 22, +244, 0, 2,115, 16, 77,142,126, 86,253, 32,105,109,181, 27, 67, 99, 12, 1,108,173, 76, 18, 98,132,135,129, 33,134,143,132,208, +245, 8,100,176,219,182, 48,126, 7, 84, 35,126, 44, 48, 1, 62, 76, 4,196,233,159,202, 48,194,242, 20,255,246,223,255, 22, 63, +253,245,191,195,233,195,191,198,205,229, 18,166, 94, 0,221, 22, 20,251,140,160,245, 12,248, 62,192,113,144, 49,121,206,221, 48, + 50, 74, 79, 62,107, 86, 11,154,179,178,183, 54,130, 28,142, 42, 76,244, 12, 80,244,176, 70, 56,240, 33, 74,186, 28, 89, 66, 13, +139, 72, 34,222,116, 26, 80, 83, 89, 43,207,155,197, 94, 24,145, 66,196, 34,122,111,176,240, 61, 76, 21,192, 84,165,120,245,137, +144,149,117,194,105,201, 74,120, 93,116, 34,101,206, 25,235, 25, 58,154, 29, 95, 40, 32, 97,162, 79,179,160, 8, 68, 13,152,233, + 35,128,129,241, 17,121,252,242,123, 91, 28,127,248, 54,172,253, 99, 52, 13, 97,181, 58, 65, 92, 54,232,237, 49, 34, 86,240,100, +208,163,198,109,117, 10,151,110, 36, 28, 53, 7,155, 38,168,110,129,152, 20, 29,224, 28, 35, 75,243,129, 54,143, 30,117, 83,236, +161, 89,169, 53,201,175, 94, 66,117, 70,235, 27,231, 93,244, 93, 98, 30, 20,187,250,148,209,110,230,221, 79,145,221, 62, 71,191, +206,141,109,102,126, 72, 30, 16,147, 17,201,253,138,185, 16,245, 36, 65, 6,143,157,102,226, 10,199, 60,162,231,156,179,235, 33, +172, 97, 67,144,253,148,238, 34, 67, 82,125,166,215,149,198, 67, 63, 11,251,104, 52, 15, 14, 12,172, 22, 21, 28, 34,110,135, 56, +178,191,243, 69,169,176, 1, 22, 23,140, 56,177,150,165, 98,128, 9, 32,199,204,107, 16,207, 2, 98,179,187,128,139, 75,147, 36, + 5, 24,163,177,145,172, 41,195,123, 25,184,170, 10,103, 26, 1, 22, 69, 7,109,238,228,208,255,142,163,115,194,100,175, 62,167, + 29,222, 41, 92,223, 91,208,188,226,210, 48, 47,149, 84,200,209, 95,241,205,120, 18,134, 48,154,231, 57,242,157, 19, 8,107, 9, +159,127,254,207, 10,185,105, 70, 7,193, 27, 94,120,230,170,126,126,197,197, 38,178,248,152,119,187, 29, 62,251,252, 51,252,225, +207,254, 8, 0,240,214, 59,143,196, 62,246,244, 9, 46,175,175, 17, 56,140,233,125,117, 37, 98,181,102, 81,172,170, 98,254,140, +249, 16, 52,169,144,116, 36, 76, 57,183, 29,170,194,238, 7,143,161,235, 97,173,147,177,179,170,233, 73, 71,201,145, 67, 30, 43, +131, 72,188,193,172, 68, 59,171, 23,252, 24, 36,179,188,151, 36,174,213,209,145, 10,188,128,193, 7, 92, 94, 92,160, 90,116,120, +242,248, 27,172, 86, 18,143,107, 85,120,215,251, 0,110, 59,144,145,176,155, 16, 25, 93, 39,121,236,198, 58,116,131,172, 22, 22, +139, 6,219, 93,135,198, 57,192, 24,120,223,106,226,151,196,186, 38,165,125,140, 81, 59,117,241, 59, 7,142,130, 5,214,176, 22, +103,109,190,252, 39, 96,141,161, 81,171, 99, 34, 97,215, 14, 24,134, 30,206,146, 38,223, 49, 98, 44,244, 7,202,108,135,250,174, + 19, 75, 32, 49,222, 9,105, 12,173,232, 91, 35, 66,176, 97,240,112,137,181,143, 68,155,147,175,231,172,168,198,125,100,192,251, +220, 72, 85, 6,216,121, 96,104,119,194, 73,207,217,157, 83,109,207,161, 11,233,233,202,224,239, 95,212,248,242,191,252, 71,124, +240,191,255, 57,190, 48,167, 8,195, 99, 65,237, 70,181, 20,234,247, 14,134,208,123,134, 51, 67, 94,181, 68, 22,203,151,177, 6, +156, 80,181, 54,130,157, 69, 12, 6,214, 18,156,171, 48, 68,150,221, 57,100, 37, 36,235,142, 32,138,126, 4, 48,137,194, 63, 5, +194,112, 12,136, 28, 64, 73,220,169,227, 50, 3, 2,179,133,141,140,104,162,124, 77, 14,114, 49,101,146, 14,155,130, 58,105, 72, +215,163,128,229, 32,175, 55, 9,117,143, 74,133,187,214, 4, 17,230,169,209,141, 32,177,174,186, 38, 96, 67, 48,106,139,142,196, +232,153,208,244,192,241, 98,139,213, 59, 43,236, 78,127,140,155,248, 29, 92,251,136, 16,122, 12, 3, 48, 12, 4,244, 29, 16, 54, + 88, 44, 59,216,143, 63,212,241,123, 44,104,113, 60,134,178, 28,154,136, 18, 70,244,171,153, 23,116,140,169,110,102,210,249, 20, +227, 95, 42, 99,229,104, 34, 62, 75, 79,188, 20,185,209,235,124,210, 19, 76,171,178,163, 85,165, 27,103, 99,102,154, 96, 88,147, +112, 97,106,117, 43,191,150,161,113, 68,108, 40,111,210, 38,171,101,166, 49, 81,131,104,223, 91,159, 58, 42,102, 72,160,133,126, +109,103, 12, 26,253,239, 56, 19,128, 69,154,141,173, 21,181, 89, 85, 21,222, 63,174,176, 91,239,240,120,227,149,231,204,186,219, +225, 61, 87, 64,105, 11,156,163,108,203, 71,152,246, 69,119, 1,103,112, 64, 48, 70,121, 18, 81,136,189,239, 42, 21, 52, 93,237, +164,187,148,217,255,129,222,249, 56,222,108, 14, 94, 62,199,153,167,243,117, 26,183, 9,161,225,205, 10,229,168, 94,163, 55, 83, +201, 31,140, 82, 27,129, 46,175,179,235, 17,153,125,167,200,155,189, 36,223,250,159,182,235,176, 90,173,240,231,127,241, 23, 0, + 8, 79,159, 61, 21,207,190,118,114, 41, 91,222,169,250,153, 1, 60,123,246, 28, 79,207,206, 4,220,146, 68,181, 49, 69,201,106, + 12,167,179,112,186, 83,151, 84, 52, 81, 94, 39,150, 58, 20, 24,194,172, 30,255,180,195,102,205, 62,215,125,126, 84, 66, 95,202, + 13,151, 4, 47,225, 29,116, 58,118, 63, 57, 94,161,110, 42,116,109,175,217,244,140,237,102, 13,231, 68, 93,237,172, 69, 85,215, + 24,130,196,142, 26, 67,168,156, 3, 10,150, 61, 88,184,235, 41, 61, 76, 10,233, 56, 52,105,187, 30,125,215, 10,146, 53,237,117, + 13,114,212,105, 10, 22,233,250, 65,196,118,203,133, 4,216,148,246,206,124,177, 37,245,200,203, 55,232, 7, 9, 60,169,235, 6, + 65,125,231,129, 9, 62,120, 69,241,138,122, 62,164, 88,212,132,110,214,203,130,196,154, 42,237, 47,178,130,100, 44,192, 30,206, + 25,193,209,210, 92,136, 57,126, 34, 12, 34,152, 68, 28,233, 12,176,238, 9,155,171, 11,216,216,103, 32,205,155,188, 1, 45, 1, + 87,222,193,222, 62,197,159,254,236, 61, 92, 47,255, 0,235,139,231,216,110,183,224,161,149,142, 58, 55, 15, 98,131, 68, 24, 4, + 28, 67,182, 16,100, 58, 84,214,160,174, 12, 76, 85, 1,228,224,153, 16,125, 0,113, 16, 11,115,140, 32,138,186, 14,208, 48, 28, + 14, 19, 29, 8, 71, 17,205,165,145,122,194, 85,167,156,121,214,228, 63,210,174, 58,133,254,112,102,130,142,204,248,169, 85,153, + 11,146, 92, 90,191, 66, 40,120, 84,164,241,101,223,187, 86, 3, 22, 1,165,136,193,237,136,170, 37,131, 1, 6,215, 3, 48,108, + 34, 66,187, 67,215,109,209,238,182,240,187, 53, 66,183, 70, 24,214,240, 67,139,224,123, 56,195, 24, 53,147, 37,160,165,200,186, +230, 3, 35, 75,105,186,104, 26,240,193,233,239,149,204,179, 18,130, 50,235,134,105,196,190, 48,207,197, 60,148,187, 66,240, 97, +209, 84,185, 34, 96,189, 76,140,113,121, 14,214, 89,156, 16,195,233,239,153, 57,171, 30, 50, 62, 11, 58,161,160,148, 18,116,224, +168, 52,217,138,167,187,111,142,197,152,180, 24, 63, 43,221, 13, 69, 17, 79,187,238, 66, 84, 32,234,202, 24,176,243, 1,187,148, + 76,132,113,188, 30,244,239,196, 52, 13, 40, 70, 13,206, 90, 12,253,128, 23,155, 30, 62,219,233,120,244,202,166,221, 12,151,211, + 11,126,173, 50, 58, 89,137,168,216,225,230, 63,195,163,112,112,146,242,150, 14,164,244,220,227,225,145, 56,207,252,214,105,186, + 96, 85, 60,200,121,253,192, 51, 93,194,239,168,110,163,137,203,238, 91,252,213, 41,133,143,249,117,212, 57,220,225,236,120,117, + 97, 77,239,107, 42, 70,232,252,102, 68, 28,165, 51, 30, 46,214,123,123,245,217, 75,114,104, 44,127,208, 26,168,255,222,212, 13, + 46,206,207,177,217,172,165,192,116, 61,250,161, 21, 15,120, 93,163,174,235,156, 3,206, 81,118,154, 9,233,105,244,127, 33, 68, +212,154,137,205,144,241,110, 8, 17,100,172, 64,124,156,147, 14, 54,248, 12,221,113, 70,224, 62, 2,184,177,163,162,219, 24,101, +180,139,160, 44, 6, 25, 84, 58,181, 99,117,157, 36,196,129, 4, 87, 27, 84,157, 78, 36,204,125, 74,209,166,208,208, 30,205, 8, + 15, 33,102, 46,187,115, 14,117,179, 64, 12, 65,166, 4,198,192, 57,202, 92,250, 65, 45,101, 85, 93,131,201, 98,179,237,176,221, +172,181,211, 21,101,255, 48, 12, 24,122, 47,164, 50, 13, 65,233,186, 1, 28, 60,170, 90,124,249,164,112,152,168, 5,207,169,136, +208,234,168, 46, 68,241,230, 55,149,197, 98,185,148,130, 67,164,145,164, 49, 11, 7, 99, 84, 22,189,122,214,141,238,131, 35,203, +126, 62,197,226, 38, 79,111, 55, 72,212,169,117, 14, 67,144,245,162,240,226, 1,171, 77, 11,199,128,138,228, 18,230,163, 36,200, +113,144, 8,222,174, 31,192,161, 7, 27, 42,148, 86,175,255, 76, 74,183,110,241,159,190, 50,248,252, 63,254, 59, 60, 56,190,133, + 89,220, 71,237,170,140,117, 77, 69,215, 16,137,186,223,202,138,133, 57,192,104, 72, 77,237, 44,234,218,161, 89,212,168, 23, 11, +152,170,206,133,146,201,192,105,236,105,178,137,101, 59,182, 78, 73,211,247,136, 48,240, 94, 46,109, 33, 51, 22, 24,221, 16,224, +187, 30, 20, 7,157,154,136, 39, 62,192, 96, 8, 26, 71,171, 68,189,172,128,199,248,249,101, 26, 39,145, 28, 57,215,129, 17,230, + 70, 57,122,149, 38,151,249,177, 41,142,249,179, 46,154,171,192, 12, 31,128,117, 31,208,237, 58,196,238, 6, 49,118,240,145, 49, +132,128,224,133,121,192, 49, 0,250, 62,200,231, 82,130,153,164, 8,214, 88,164,177,149,187,102, 97,193, 51, 76,209,223, 76,197, +111, 52, 41, 98, 49, 93, 28,184,204, 12, 47, 19,214,226, 68,228,197,123,197,119, 58,250,223,247,221,242,104, 12, 98, 49,245,119, + 1, 88,243,235, 71,142, 4, 33, 21,141, 66, 65,221,119, 39,118, 92,122,204, 90,176,147, 54, 32,237, 41, 98,241,104,141,102, 65, +199,201, 46,185,172,236,197, 30, 30,242,225, 28, 66,132,207,251,120,206,227,237,100, 3,138,169,184,235,117,195, 15, 61,190,186, +222,225, 58, 0, 21, 21, 49,165,152, 66, 93,246,148,232,204,123, 98, 65,230,105,111,200, 60, 94, 34,104,162, 21,224, 28,110, 16, + 11, 69, 30,207,156,220,211,231, 57,109,151,101,189, 83,190, 2,242,188,134, 24,103,151, 11, 70,211, 44,208, 84,213, 36, 97,234, +119,237,216,223,188, 83,229,241,178,152,247,212,252,237,190, 1,223,125,139,160,242,242,203,179,119,199,155,182,219,132,187,130, + 15, 95,249, 80, 51, 86,216,208, 43, 59,120,158,189, 71,140,179,216,110, 55,216,110,214, 82, 88, 21, 28,195,202,216,118,149, 40, +130, 13, 36,118,212, 24,171,252,114, 85, 39,147,201, 72, 85,107, 82,230, 1,171,120, 77, 58,118,177,131, 73, 21, 19,133,182, 17, +124,172,146,212,172,181, 10,190,177, 89, 77,111,212,214,147,104,158,193, 71,248, 68,171, 51, 86, 3, 95,196,130, 39, 64,155,136, +197,162,198,114,185,208,142, 53,100, 69,254,122,179,193,208,183, 88,165, 96, 23, 21,228, 25, 99,225,135,160,177,158, 50,190,174, +157, 67, 83,215,240, 33, 98, 24,122,189, 56,244, 64,148,132,177,160, 19, 5,209,158,233,104,150, 12,134, 97, 0, 16, 81, 55, 21, +170,170, 22,246,123,229, 64,214,230,216,233,168,130,173, 20, 26,227,189,120,221,145, 59,125,177,154,213,181,203, 23,166, 90, 95, +191,168, 34,184, 49,190, 84,222, 99,150,140, 38,207, 97,146,133,157, 80,182,117, 93,229, 72, 82, 1,220, 8,231, 94, 38,177, 34, + 82,244, 62,202,229,200, 0,108, 28,130, 15,160,156, 67,255,250,233, 82,121,224, 52,150,113,109,143,241,239,255,246, 51,156, 92, +254,103, 44, 78, 31,200,100,131, 92,118, 85,228,179,212, 88, 24, 91,103,108,174,133,240,219, 43,235,112,180,112,112,139, 37,156, +173,208,212, 14, 84, 53, 50,194,142, 17,198,112,206, 91, 79,235, 87,103,245, 82,104, 93, 78, 61,115, 70,108,104,164, 52, 58,142, + 17,196,162,221,232,131,176,248,225, 59, 24,138,112,198, 42, 15,193,100, 48,152,120,234,131,158,217, 38,219,184, 35, 51, 40, 6, +169,105,105,146,201, 65, 11,124,208,203, 22, 96, 98, 80, 81,158,201,116, 57,196, 0, 82,189, 70, 84, 75,157,165, 8, 54,132,142, + 9,173, 7,186,118, 0,186, 14, 54,236, 0,242,186, 38, 0, 44, 2,106,138, 32,203, 73,121, 95,164,202,112, 65,115,227, 2,139, +170,221,187, 37,236,197,159,146, 14, 37,242, 97, 0,134,101,228, 14,205,228,209,243,252, 0,163,189,142, 61, 78,200,117, 36,224, +129, 89, 33,185, 59, 62,147, 71,101, 97,244,232, 25, 26, 82, 83,250,229, 83, 71,142,252, 67, 24,187,201,162,179,205,116,189,177, + 11, 13, 96,132,108, 7,227,188,171, 24, 5,132, 35,231, 62, 22,130, 65,154, 5,150,242,204,122,103, 84,100, 17, 11, 91, 33, 23, +132,165,148,237,236, 33,217,213, 33, 5, 1, 36, 25,130,254, 4, 45,237, 39,147, 78, 66, 76,152,225, 99,196, 16, 11,170, 31,143, +177,154, 89,177,203,211,199, 90,232,235,242, 20,101,156, 8,240,126,231, 87, 42,193,147,165, 78,161, 57,101, 97, 63, 20, 82, 98, +140,140, 28,187,193,231, 15, 28,102, 93,252,157,133,139, 95, 49,234,190, 11,134, 83, 78, 38, 10,242, 30,189,214,202, 70,179,146, +201,111,112,131,152,171,226,211,107,207,111,230, 71, 43, 28, 14,229,207,246,174,195, 53, 63, 66, 45, 12,143, 30,189, 43, 40,222, + 16,222,232,154, 99, 20,213,218,117,125,230,164, 39,132,103,213, 52, 88, 44,150,178, 63, 38, 20,240, 42,233, 82,146,223, 59, 51, +184,157, 4,221,248, 33,160,170, 44,142, 87, 75,212,117,157,227,108,179, 31,221, 16,134, 65,190,167,247, 1, 33,248,124, 66, 85, +169,227, 87, 96,138,181, 50,190,239,135, 94, 50,187, 93, 37, 98,171, 65, 8,101,253,208, 99, 24, 6, 57, 87, 52,106, 53,117,227, +198, 26,212, 85,133,213,114,129,166,110,144, 88,242, 66, 86,139, 58,185, 26,227,102,119, 93,135, 16, 2,234,186,134, 81,219,204, + 48, 12,114, 65, 8,114,154, 68,205,250,174, 43,217,153,135, 8, 85,158, 7, 84,206, 96,217, 44, 68, 16,104, 70,230,164,116,211, + 81, 3, 75, 36, 28, 38,228,238, 75,208,187,134,160,204,122, 17,238, 57,231,100,106,168,217,239, 86, 59,202,160,221,255,148,127, + 41, 59,223, 16,188,172, 53, 20,127,155,226, 85, 93,229, 50,137, 50,234, 41,238,163, 92, 90, 12,226, 24,177,171, 0, 46, 31,162, +118,169,116,192,190,121,119,151,158, 14,239,147, 35,135,255,240, 5,240,197,255,251,255,224,225,233, 22,212,220, 7,138, 73,169, +136,250, 4,116,100, 17,181, 8,219, 81, 0,104,229,103, 87,213, 21,170,170, 65,229, 28, 22, 77,133,170,174, 1, 91, 33, 48,233, +235, 9,249,179, 90,184,162, 94, 28, 98, 72,103,107,200,250,159,244,117, 37, 75,125,132,217,116, 33,194, 15, 30,204,189,224,105, +157, 5,172, 69,100,241,253, 7,117, 37,145,190,230, 52, 57,223, 99,158, 10,144,146,237, 34, 43,215, 91, 63,243, 81,233,114, 96, +155,149,239,163,147, 74,180, 87, 49,253,121, 37,215,117,158,209,245, 61,120,232, 81,193,163,113,132,166,118,176,181, 3,185, 90, + 46,138,204,148,243,172,211,143, 41,238,245,181,148, 49,123,204,132,136,187,198,172, 99, 7, 18,102, 85,197,140, 38,185,153,162, + 61,249,196,213, 79, 88,118,199, 32,212, 74, 14, 66, 17,132, 50, 62,198,253,115, 59, 23,103, 50, 26,229, 90, 42,243,139, 81, 63, +143,197,125,162, 36, 46,187, 73,158,118,175, 28,121, 44,188,233,209,235,229, 37,178, 20,252,146,229,205,133,218,126,108,216,227, +120,155, 6, 84,248,146,246,210, 81, 45,111, 92,136,230,116, 76, 23,211,101,129, 71,145,158, 86,117, 86,219, 79,122,117, 99, 28, +191,126,246, 51, 48,224, 25, 56,169, 29, 30,214,148,163, 51, 83, 33, 79, 44,234,114, 84, 27,131, 92, 52, 74,106,222,168,212, 46, +232,130,204, 83,225, 24, 23, 23,177, 34, 99,184, 68, 39, 78, 89, 45,211,113,127,240, 9, 23,122,247,126,251,240, 40, 57, 61,119, +126,163,197, 60,163,180,130, 81,254,121,211, 12, 3,252,250, 78,132,222,120,244, 94,206,209,191, 13,162,102, 98,108,152,193,234, + 94, 43,142,211,136,188,155,155,219, 60, 82,126, 51,221, 0,233,133, 54,104,240,136,149,247,154,122,195,173,181, 56, 90, 29,201, +142, 93,127,102, 18,161, 90,129, 21,184, 2, 64, 59,119, 74, 35, 47, 44,154, 26,139,213, 74,210,217,162,234, 73,244, 51, 18,116, +140, 79, 76, 8, 28,148, 59, 32,239,163, 24,198, 79,184,177, 18, 84, 98,212,146,182, 88, 46, 97,156,140,191, 67, 26,123, 70,198, +102,189,133,239,122,196, 16,243,206,222,232, 4, 33,130, 96, 93, 5,207,140,219,205, 14, 93,215, 11, 21, 44,200, 88,214, 89,131, +170,170, 96,212,155,238,253, 32,212, 67, 50,216,108, 59,236,182, 27,236,118, 45,162, 94, 60, 98,178,223,121, 61,236,105,244,130, + 91,235,164,200, 24, 43, 69,223, 57, 56,103, 80,215,149, 8,193, 98, 49,114,141,114, 73,112,206,232,231, 48,228,247, 75,226,185, +187,202,201,116, 32,196,204,121, 39, 45, 2,146, 62,150,154, 17,229,167,131,132,206,166, 69, 47, 68,198,144, 9,115, 66, 77,235, +123,143,224,251,177, 17, 96,160,114, 36, 29,174,190,255,228, 66, 24, 14,112, 61,238,150,156,148,127,104, 97, 25, 55,246, 4,255, +246,111,126, 3,243,244,111,224,142, 78,101, 13, 83, 57, 56, 91,229, 12,130,228,184, 18, 81,154,132, 0,213, 6, 88, 44, 44,162, + 93,192, 69,198,162,150,203,165,117,149, 0,116,212, 94, 23, 24,136, 62,192, 82, 0,172,131,248,204, 56, 19,247,100, 50, 75,240, +158,225,135, 65,245, 9, 81, 94, 11,189, 92, 70, 0, 49, 26, 12, 94, 94, 39,223,247,114, 57, 51, 4,231, 44, 96,205, 56, 62,231, +152,215,159,185,241,100,202,141,218, 56,134,167,124, 38, 6, 16,124, 52,136,158,129,232, 1,120,140,191,205,147, 73,177, 52,218, + 1, 30, 17,125, 48,232, 6,200,165,183,107,193,161, 83,160,142, 3,155, 10, 68, 53, 92,196, 72,210,201, 74,228, 52,215, 47, 32, + 33, 57,170,116,230,231,205,233, 56, 58, 99, 13,179,251, 10, 40,249,168, 15,219,174,166, 98, 48,206, 69,146,161,196, 29,140,161, + 50,156,212,243, 60,210,236,204,193,157,101,233, 60, 31,131, 84,246,144,176,243,241,100, 86,153,143, 80, 24, 78,214, 52,157, 70, +208,136,172, 25, 11,243,196,154, 53,158,188,227,135, 35,137, 3,203,187,237, 8, 61, 32,146,160,147,152, 64, 22, 60, 66,255, 71, + 54,188,142, 30, 57, 42,204, 32,229, 82, 83, 30,217,251, 28, 26, 50, 13,143,201, 62, 86, 6,154,102,137, 37,119, 56,239,122,101, +183, 79,189,210,105, 12, 8, 38, 84,150, 16,250, 22,183,222,226,222,209, 2, 86,247,116,124,224, 53, 76, 59,119,202,115,131,113, + 60,199, 60,117, 59, 76,173,101,124, 64,119, 70,175,245,132, 83,193,122, 46, 99,106, 41, 95,220,248,181, 95, 39, 19,156,242,216, +153,179,250,251, 91,203,236,249,110,217,218, 33,148, 49,242, 78,110,180,137, 30, 44,200, 52,181,232, 77,196,245,252,250,130, 94, + 26, 5,215,235,219,204,190,127, 19, 33, 96,136, 17,203,197, 10,167,167,167,184, 93,111,176,109,119,122,177,149, 66, 67,170,186, + 62,189,127, 31, 87,151,151, 64,223,137, 31,157,129, 97, 8,168, 82,222, 53, 73,152, 10,179, 7,123,175,157,178, 85, 17,145,100, +125, 27, 16, 6,221, 71,215,138,158, 53, 49,169,222,229, 98, 1, 5,177, 24, 24,244,125,143,197, 98, 1,160,198, 48,120,241,191, +219,113, 26,231,156,140, 95,125, 24, 38,135,107,242,247, 71, 31, 1, 14,240, 94, 5,127, 58,198, 7,128,168,143,173,114, 46,127, +246,171, 74, 38, 15, 62, 50,110,111,182,184,190,186, 66, 12, 67,126,207, 36, 54,125,140, 64, 55, 12,136, 49, 74,210,153,142,182, +171,186,209,162,226, 97,140, 92,122,210,158,190,237,132, 20,103,156, 69, 28,100, 10,209,122,101,201, 91,125, 61, 35, 35,244, 61, +234,202, 10,160, 37, 53, 88,193,231, 61,124,154,162,112, 12, 42,138, 3,154,202, 33,146,129, 13, 1, 49,136,112,206, 24,209,179, +136,187,192,131,169,130, 15, 81,160, 52,218, 29,139,163, 37,181, 99,177,112,242,112,241,201,126, 67,169,102,209,208, 51, 3, 39, + 43,131,127,120,218,224, 95,252,231,191,193,163, 95,191,143,199,139,123,176,241, 28,204, 78, 2,113, 98, 4, 87, 14,209, 3, 21, + 7, 16, 89,212,142,176,170, 13, 22,203, 26, 84, 45, 80, 25,177,222,133,232, 96,173,135,179,189,140,220,137,208, 56, 66,240, 34, +230, 76, 41,104,164,190,112, 17,117, 64,167, 0, 64, 96,185,176,197, 24, 1, 19, 64,228,244, 61,100,181,246,169,157, 47, 6, 80, + 16, 64,143, 51,162,251,136,112,234, 55, 71, 81,176,163, 90,222, 24,134, 98, 6, 19,145,214,183, 8,181,175, 35,194,144, 45,234, + 2, 21,130,222,146,172,153, 88, 2,210,200,118,145,129,158, 65,228, 65,212, 35,194, 10, 66,158, 34,136, 44, 98,112,208, 31,219, +190,234,145, 83, 7,151,142,105, 66, 49, 70, 38,253, 49,147, 10, 5,246,182,181, 83,235,153,238, 99,109,193,231, 69, 81,104, 39, +135, 79,185,103,143, 17,109, 68,206,121,167, 25,156,134,249,112, 68,232,124,224, 61, 45,246,211,239, 93, 54,100,114,187, 26, 59, +254,168, 35,100,131,162,123,211, 11,137, 45, 60,237,229,255, 76,250,250, 5, 33, 40,143,180,185, 92, 88, 20, 88,196,178,179,229, +209,203, 31,116,215,159,139,110, 28, 63, 72, 49,139,201,120, 50, 57,201,244,190,244,248,245,131, 24, 24,168, 44,225,114,189,193, + 87,235, 33,231,154,207,231,214, 57, 80, 38, 12,104,185,194,255,252, 39, 63,195,159,127,124, 31, 93,215, 73, 7, 68,229,212,131, +247,246,176,242,182,142, 99, 7,142,113, 47,207,111,184, 60,158, 23,252,196, 29, 63,216,177, 23, 22, 76,142,251, 26,129,210,246, +189, 47, 36, 27,129, 15,252,109,244,246, 92,172, 24,192,251, 59,143,215,116, 46, 66,236,195, 68,204,248,186,203,192, 4,136, 72, +111,182, 67,159,175,224,109, 1, 42,121,147,127,134,190,199,195,135, 15,113,124,122, 15,183, 55, 55, 24,218, 14,195,208, 35,250, +144,217,228, 98,101,148, 46,216,168,173,170, 31, 6, 16,241, 24,144,226, 28, 22, 26,192,210, 84, 21,156,138,230, 66, 84, 46,123, + 93,193, 88, 3,239, 83,204,167, 0, 84,132, 65,174,204,249,192,242,153,211,120, 90,232,207, 86,178,215, 59,116,221, 78,124,244, + 49, 98,185,104, 80, 85, 53, 34, 51,218,182,197,237, 70, 34, 80,211, 37,176,170, 28, 22,139, 70,198,255, 36,106,249,166, 22, 92, + 43,153,226,194,106, 76,142,123, 5, 67, 19,235, 58,108,183, 27,120,223, 1, 28,209, 84, 50,242,143, 49, 8,213, 44,119,211,102, + 92, 69, 84,181, 98, 65,197,189,226,117, 15,153, 46, 88,181,162,109,135, 65, 20,248, 94, 81,184,214, 36,238,123,250, 12, 9,149, + 47, 69,244,202,229,197,234,185, 69,121,213,130, 66, 15,227, 35, 84, 1, 47,161, 48, 38, 37, 74, 90, 3, 87, 89,157,106,132, 60, + 41, 77,217,246,105, 58,147,117, 45,144, 84, 58,153, 74,148,181,226, 77,202,250,244,160,118, 96,116,245, 2,191,249,167,151,248, +201,242,183, 56,250,232,199,136,177,206, 54, 95, 91, 85, 32, 83,201,138,193,200,234,198, 89,139, 85,237,112,116,180,194,209,106, + 9,119,180,130,107,142,224, 42, 7,227, 68, 24,109,171, 74, 46, 36,250,119, 34, 57,196,192,170,132,151,195, 34, 93, 86, 64,162, +103,176,206,194, 26,151, 85,246,172,194, 73, 14, 17,145,131, 34,100,145, 1,100, 67,136, 8,253, 0, 10,157,218, 54, 13,124,208, +105, 74, 12,170,126, 2, 56, 10, 23, 32, 42, 63,101,106,153, 77,172,122,193,216,146,129,140,254, 53, 93, 14,138,175,141,108,245, +120,137, 89, 73, 31, 9,104, 35, 97,215, 49,186,182, 69,215,111,208, 15, 3,134,193, 99,232,123, 12,190,131,113,134,178,231, 60, +157,166,105,151, 92,132,191, 76,138,223,116,139,194,217,227,156,201, 57, 7,230,134,251,155, 67,158,216,231, 38, 10,100, 66, 14, +119,157,143,123,129,113, 84,111, 14,136,232,242, 45, 50, 89,173,138, 55,158, 33,236,237,205, 75, 29, 0, 10,161,224,184, 39, 39, + 69,176,254,255,204,189, 91,175,100, 89,114, 30,246, 69,172,181,119,102,158,186,116, 79, 79, 55,103,200, 25,106, 46,228, 92,196, +185,208,132, 68,209,134, 77,208, 4,168, 7, 3,126,243,139,127,206,252, 9, 1,122,149, 97, 63,202,128, 33, 72,166, 72, 27,148, + 12,209,162, 44,138, 4,135,166, 64,147, 38,104,243, 58,211,211,151,234,170, 58, 39, 51,247, 94, 43,194, 15, 17,107,237,181,118, +238, 60,231,212, 12, 9,184, 6,131,238,174, 58,149,151,157, 59, 87, 68,124,241, 93, 22, 61,185, 40,144,124,116, 42,154,208,198, +230, 31,104, 59,219, 78, 35,176,132,222,240,170,161, 33, 92, 50,250, 22, 82,158,125, 89, 43,191, 93, 23,100, 69, 21, 29,156,175, +171,253,179, 54, 12,250,217,247, 51, 1,203,181,225, 6,110,111,243,198, 99, 96,164,187,151,248,189,215, 35,126,234,239,253,125, +252,196, 19,193,221, 57, 85,155, 75,125, 96,210,171, 94,121,171, 31,214,198, 44,229,122,141, 47,175,223, 14,175,155, 39, 79,241, +238, 59,111,215, 24,202,139, 70,173,177, 37, 94, 99,130,138,109,119,182, 37,209,169, 91, 4,189, 17,169,110, 25,157, 31, 62,218, + 22, 38,189,246,122,187, 71, 55, 17, 27,178, 61,213, 7,183,253, 15,189,178,251, 26,173,148, 38,188,247,222,123, 70, 40,123,253, + 10, 79,159, 61,197,211,167, 79,113, 56,236, 45, 93,205,147,205,114, 74, 53,167,188,172,169,114, 86,223,137, 11,142,231, 19,142, +147, 57,135, 89, 70, 57,144,231, 84,119,214,133, 75, 19,153, 45, 39, 59,155,197, 42, 59, 19,142, 93,167, 79,108,255, 31, 29,122, +127,125,119, 7,149, 92,155,149, 18,243,202,193, 34, 70, 85, 45,239,252,124, 62, 2, 16,164,148, 49, 77,147, 59,193,113, 45,224, +182, 67,158, 17, 67,201, 80,183,231, 49, 50,157, 53, 48, 73, 50,230, 36,184,125,245, 10,121, 62, 27,148,188,219, 65,193, 72, 30, +221,122,158,146, 39,204, 69,183,250, 20,236,118,163, 21,144,146, 97,238,136, 2, 59, 1,108,246, 66, 48, 12,131, 17,165,156,217, +111, 59, 97,139, 90,181,189,186, 37,165,221,157, 38,228,148, 16,216, 8, 96,228, 73, 98,115,202,198, 18,103,114, 98,153,217,210, +150, 36, 72,147, 83,177, 17, 26,125, 39,111, 4, 70,174,103,124,140, 1, 49,122,147,225,205,131,233,200, 29, 37,177,165,244,227, +123, 95,221, 44, 24, 80, 0,207,247,192,255,241,193, 19,220,253,225,239,224, 63,253,217, 3,248,211,223,192,200, 25, 66, 1, 44, +130, 49, 88,190,124,242, 9,120, 23, 9,135,195,128,155, 39, 59,196,155,167, 64,184, 65,246,149,162,168,186,177, 11,129, 60, 37, + 77, 97, 97, 43,196,253,158,171,174, 26, 37,215, 85,133, 53, 79,126, 61, 66,116,142, 7,213,148,210, 33, 90,243, 20,130, 53, 23, +182, 87, 39, 68,100,196, 8, 71,157,236, 32, 74, 66,174,121, 95,236,117,139, 81, 81, 65, 95,139, 24,156, 90,179, 42,207, 82,177, +245,136,175, 84, 37, 91, 48,141,136,239,232,157,227, 64,140,147, 16, 78, 19,144, 78, 19,116,186,133,228, 51,178,204,144, 44, 46, +186, 35,170,110, 55,229,250, 7, 52, 18,174,242,223,157, 52,108,129, 60,185,241, 78,191, 36,232, 74,221, 39,200,138,149,221,239, + 96, 55,168,119,149,117,191,144,232, 90,107,209, 42,159,107, 66, 58, 20,253, 36,223,195,158, 75, 90, 91,105, 12, 10,252,121,145, +192,214,238,217,101,153,166, 85,115,195,150, 95,200, 94,173, 7, 52,123, 54, 46,175, 72,116, 80,113,130, 69, 89, 41,172,139,243, + 66,204,211,198,132, 71, 32,203, 97, 41,104,204, 99,164,129,138,251, 73,184, 85, 49, 44,251,236, 69,101, 80, 27,148,238, 96,151, +250,243, 2,198,126, 63,224,253, 63,252, 29,252,147,127,246,111,241,193, 52, 98, 55,114,231,229,223,214, 27,209, 94,154, 88,112, + 29, 1, 86, 55, 76, 91, 76,180,243, 47, 95,231,147,215,226, 75,209,246,122,186,198,146,182, 11,249, 5, 57,189,198,174,210,102, +149,212,123,179, 75,175, 20,243,106, 5,171,143,146,166,231, 60, 59,233, 75, 27,153,231, 27, 18,250, 59,151, 60,189,183,246,211, +143, 88,208,203,138,227,199, 62,243, 25,100, 81, 39, 90, 81,229, 44, 20,238, 65, 22,179, 46,221, 29, 14,230,213, 30, 66, 35,171, +178,207, 55, 37,155, 34, 74,100, 41,220,160, 37,240, 0, 34,147,123,229,148, 92,118,230,153,245,220,250,219, 83,221, 39,219, 62, +254, 9,206,211,236, 89,238,177,202,211,198,113,128, 16,225,120,116, 51, 24,223,117,146,250, 68, 63, 77,206,160, 54, 72,127, 55, + 12,184,217, 31,140, 4,235,182,171, 37,243, 93,253,224, 39,135, 86,231, 41,225,116, 60, 66, 37,185,247, 55, 33,137,224,120, 58, + 98,154, 38,136,199,132, 78,201,154,135,133, 63, 73,216,143, 1,251,253, 30, 28,173, 97, 24,135,136, 48, 88,218,150, 90,180, 23, +146,199, 13,103, 81, 68,182,130, 54,207, 25,243, 52,155, 47,123, 49,141,202, 69,146, 71,216,237, 45,131,189, 64,123, 54,165,251, +170, 48,144, 23,162, 80,179,232,201,119,212, 69,194,197, 30,250,210, 82, 98,205,243, 61,120,226, 88,145,251,154, 52, 79,253, 51, +165,110, 78,127,195,166,212,255, 57, 48,112, 62,220,224,159,253,198, 95,227,103, 62,249, 13,124,251,151,127, 1, 79,223,253, 50, + 14, 79,158,248,125,228,228, 74,182, 16,159, 65, 19,158, 29, 34,198, 39, 55,160, 97,103,208, 53,155,107,222,121, 74,200,211, 4, + 86, 39, 85, 54,156, 19,162, 50,178,185, 74,131,129, 33, 88, 51,163, 76,238,246,151,221, 83,192, 24,159,236,126,250, 28, 44,128, +200,124,218, 25, 68,209, 86, 73,129,129, 16,145,192,134, 32,193,155, 9, 10,117, 5, 66,154, 1, 94, 76,181,132, 22,136,158,144, +151, 49,148,185, 35,170,195,137,214, 1,130,192,118,102, 41,115, 55,240,145, 79,242,231,204,152, 39, 5,230, 19, 72, 78, 32,216, + 26,137,139, 37, 41, 81,123, 94, 81,135,235,147,135,127,180, 46,114, 92,123, 13,109, 44, 87,169, 51,157,193, 74, 18,166,186,189, + 57,164, 21, 66,211,193,232,212, 18,224,218,201,220,141,240,169,149,147, 93, 30,108,210,188, 22,169,108,254,117,154,153, 94,200, +187, 8, 11, 90,160,144, 70,230,183,192,182,109,106, 93,150,197,152,166, 53,212, 41,180, 66,209, 86,163,236,250, 88,233, 41,204, +237, 36, 90,118, 45, 82,244,223,218,255,221,170,121,175,132,190, 30,233,162,213,251,107,137,132,109, 7, 36,205,123,232, 40,214, + 94,216, 15, 67, 64, 60,189,194, 57,155, 86,148, 86,153,232,253, 68,216,163, 8,229, 95,234,126,125,211, 49, 77, 47,136,114,237, +175, 16, 2,110, 95,189,192,251, 63,248,192,164, 69, 88, 88,248,218, 73,235,122, 20,188, 52, 98, 61,243,156, 55,106, 54,117, 77, +223,195,229,185, 29,189,129,149,117,222,230,129, 54,167,140, 31,255,241,159,192,123,239,126,218,204, 84,222,128, 30,183,245, 20, +162,143,217,221, 63,174, 77,185,175,129, 24, 98,196,243,183,222,198,221,221,177,178,180,231,121,178,130, 87, 86, 83,108,110,112, + 97,136,136,195,208,226, 75, 70,198, 74, 9,199,243,185, 50,184,207,147, 57,198, 17, 7,164,108,177,166, 92,179,207,185,154,181, + 20,125, 53,193,140,101, 84, 4, 67, 8, 8,113,192,237,221, 9,146, 51,134, 33, 26, 23, 69,204, 62,180, 24,193,204,231,201,208, + 65, 49,180, 32,165,108,132,182, 52, 87, 86,126,145, 45,138,163, 82, 55,135,157,103,143, 79, 80, 53,134,241, 60, 79,230, 42, 55, +153,239,253, 52,157,113,158, 28, 30, 87,197,221,241, 8,145,180,216,128, 6,243,128, 31,124,245, 80,204,171, 66,113, 58,147,236, +201,157, 37,165,139,234, 30,254,246,238,132,187,227,209, 72, 97,254,169,165,172, 16, 73,245, 3, 28,135,136,113, 55,186, 12,140, +145,230,108, 33, 39,187,193, 81, 0,223,253,122, 35,146,178,152,175,123, 48, 84, 34,169, 41, 11, 36,153, 61,172,105,225,197,253, +247,237,254, 63, 39,193, 60, 25, 26, 48,207, 9, 44,201,146,208, 56,150,249,108,203,117,228,135,186,191,222,189, 81,252,111, 31, +124, 10,191,243,207,255,103,252,151, 95,252,115,188,251,141, 95,198,167, 63,253, 14,110,222,126, 7,113,119, 48,107,222, 33, 96, + 63,142, 8, 49, 98, 24, 24,227,254, 0,142,123, 87, 93, 24,225, 81,201, 10, 63, 73, 2,179,154, 41,142, 67,237,102,230,179, 52, +244, 70, 12, 12,160,104,107, 32, 4, 67, 3,212,157,231, 10, 97, 92, 26, 14, 65, 82,251, 44, 32, 98, 5,153,140, 20, 61,103,194, +148, 4,121, 78, 8,154, 60, 7,192, 28,250,230, 76,206, 83,144,230,177,168, 91,253, 74,167,248,178, 58,106,223, 39, 71, 80, 44, +240,221,131, 95,130, 71,206,106,173,119,194,192, 41, 51, 78,103,130,158,207,190, 18,200,224, 11,253,178,162, 87, 89,107,157,183, + 43, 41,172,200,176, 10,240, 44,126,177,134, 70,171,222, 66,241,116,207,198,178, 85,236,174, 77, 53,168, 33,158,113, 7,173,163, +217, 81,175,118, 3,221,174, 94, 87,147, 75,223, 88, 72,159, 32,191,250,127, 15,197,227, 66,159,189,222,203, 46, 70, 43, 1,189, +142,155, 33,139, 76,174,149,146,161,236,129,219,247,184,220, 0,117, 34, 43,187,243, 98, 71,219, 53, 24,107,114,224,242, 58,105, +115,215,222, 78,175,210, 21,143,197,232,102, 97, 15, 11,145,195,117,168, 33, 22, 23,147,180,246,215, 79, 21,117, 5, 65, 88, 50, +178,239,155, 14, 11, 83,119, 11,150,103,118, 5,196,170, 9,168,143,215, 48,253, 93,253,129, 24, 92,118,216, 46, 4,114,190,232, + 42,233,106, 58,241,149,189, 32,240,232, 29,122,219, 68, 37, 1,146,188, 65, 84,252, 21,211, 37,136, 62,170,237,208, 7,213,124, + 15,191,135,130, 62,157,142, 37,200, 69,235,228,193, 76, 93,212, 38, 51, 99, 24, 70, 63,104, 25,228,146,177, 24, 2, 32,217,100, + 56, 10,220,236,247, 62, 1,145,219, 6,219,238,156, 30, 72,104, 25, 0, 0, 32, 0, 73, 68, 65, 84, 66, 52,131, 22,127, 76, 17, +211,224,198, 33, 0,190,139, 38, 14,184,189, 61, 66,114,178, 48, 18,209, 26,244,194, 49, 98,206, 9,105, 58, 87,227, 21, 21,155, +132, 83, 78,238,208,102, 69,223, 24,242,192,221,221, 9,243, 52, 33, 4,243,158,223, 31,246,102,193, 11,219,171,158,206, 19,142, +119, 71,204,167, 51,142,199, 19,238,238, 78, 72,243,140,156,103, 71, 95, 22,189, 55, 66, 48, 95,118,168,185,229, 57,203,125, 28, + 71,220,157,103,164,249,140,113, 8, 8,209,140, 86,198, 64,120,250,244, 6,227,206, 44,127,231,105, 70, 78,246,254,167,148, 33, + 98, 68,195,154, 63, 47,110, 46,227,146,190,224,250,118, 67, 53,200, 87, 31, 70,170, 43,166, 41,217, 89,244, 62,106, 34,137,153, +236,192,253,206,197,215, 91, 89,115, 85,191, 64, 21,145,213, 86, 4,100, 22,180,204,134,192, 40,155, 77,222, 99,182,233,173,140, +237, 26, 77, 62, 2,136,207,247,248,239,255,245,107, 12,255,225,127,192,183,190,253, 14,158,125,230,171,120,246,214,219,120,254, +236, 57,110,158, 60, 69, 28, 15,136,113,192, 48,238, 16,195,136,195, 8,240,238, 0, 38, 43,118, 44,132,145,197,115,207,203,226, +143, 93,121, 96,196, 72,165, 96,245, 40, 48, 18, 49, 82,182,251,130, 84,204,186, 59, 68,100, 71, 48,202, 62,157,104,201, 54,207, +217, 81, 16, 73, 32,228, 26, 94, 83,149, 4, 57, 65,188,176,199, 64, 32, 30,205,172, 38, 89,168, 78,158,205, 66, 24,154,124,192, +165,186,123, 23, 63,103,181,154,127, 21, 40,190, 60, 62,154,122,167,125,112,151,147,163,143, 9, 56,157, 50,228,116, 2,201, 17, +177,192,163,129,109, 23,144,176,236,211,213,221,114,114, 83,208, 47, 38,108, 47,234, 92, 9,119, 84,255, 76,138, 60,124,101, 59, +187,117, 59,148,195,149, 26, 87,187,222,126, 78,251,155, 5, 10, 85, 94,216,219,132, 14,138, 23,244,113,170, 23,254,244, 40,200, + 66,113,145, 91,182,222, 23,154,103, 90,138,174, 21,227,242,229,209,142,173,173,133, 63,208,145, 10,171, 90,116, 97, 73, 82,111, +221,208, 89,228,170,237,251,165, 65, 73, 90,189,113,113,182,227,141,199,211, 46,172,206,155, 17,162, 75, 93, 54,168,147,153,105, +155, 54,231,252,135, 34,167,214, 54,196,187, 35,178, 93,198,177, 58,244,211,193,234, 90,195,127,214, 5,101, 9,228,185,132,229, + 55, 88,240, 87,156,219,180,193,165,141,184,153,145,105,192, 23, 62,255, 57,188,252,248, 3,124,248,226,149, 39, 83,233,197,114, +165, 79, 25,120,200,104,166, 55, 84,106, 92,125, 54,255,170, 54,238,123, 97, 8,248,254, 95,253, 5, 20,230,196,166, 15, 25,219, +232,234,109,106, 35,147,124, 4,201,248,225, 41,233, 49, 5, 29, 72, 41,227,229,203,215, 96,182,184, 78,242,105, 88,107,230,117, + 49,162,113, 15,118,104,221,213, 14, 62, 73,176,155,206,204,211, 4, 82,193,205,211, 27,140,187,177, 66,216, 70,144, 51, 7,136, +156, 18, 16,205,147, 59,120, 22,123,150,140, 49, 70, 16, 15,120,117,123, 11,201,201,118,197,176,215,199,204,216,239,134,186,159, +100,247,246, 38,247,155,135,123, 29,156,166, 25,131,239,150,130,239,179,247,187,209,156,232,166, 9,115, 22,223, 75,155,203,164, +101, 98, 4, 28, 79, 39, 76,238, 84, 39, 57, 35, 70,242,248,210,140,192,140, 57,217, 46, 77,189, 96,134,192, 53,123,123, 28,108, + 29, 32, 57, 97, 55, 90,211, 51,139,101,161, 43, 51, 78,231,100, 5, 3,140, 33,154, 94,121, 78,158,234,166,130,209,119,240,240, + 52, 71,130,233,237, 99,224,154,174, 38,112, 35,147, 16,161, 72,128,136,187,221, 69,204,105, 70, 22, 11, 45, 17,138,149, 52, 90, +114,202,197, 83,208,170, 10,199, 87, 84,196,102,197, 27, 41, 67,133,221,245, 78,125, 82,236, 93, 7,183, 67,143,174, 28,242, 27, +206,164,239, 30, 20,191,253,254,167,241,171,255,244, 95,225,191,253,249,223,196, 95,252,244, 47, 35,221,125,128,145, 18,120, 24, +144,241,202,131,102, 50,118, 35, 35, 12, 59, 80, 30, 0, 4,140, 44, 56, 13,209,215,115, 12, 81,134,230,212,156,161, 37, 55,157, + 48, 43,129, 61,208, 6,106,236,247,228,185,246, 76,106,153,233, 98, 77,102,118, 35,152, 0,128,130,217,242,154, 17,140, 13, 57, +101,226, 30, 96, 97, 49,194,138, 89, 8, 57, 1, 67, 72, 24, 66, 64,162, 1,146,212,148, 8, 69,141,131, 84,173,198, 77, 21, 38, + 75,176, 21,181,138,150,133, 0, 93, 8,117,229,159, 4,234, 8,235, 32, 67, 92,142, 25,144,179, 96,119, 58,131,179,218, 94, 34, +195, 37, 85,110,167, 23,157,108, 81, 7, 19,135,155,251, 9,145,124,223,190,200,224,164,153, 70,185,250,223, 54,132,166,149,129, + 70, 39,105,107,143,173,213,207,181, 36,179,110,194,215,203, 32, 22,110, 38, 86,189, 42,119, 43,107,130,133, 59,192,213,145,174, + 55,147,233,166,201, 2,147,151,102,128,184,155,144, 85,196,172, 94,219, 73,147,168,154,246,132, 85, 64,206, 2,177,219,245,205, +104,246,253,210, 78,161, 84,155, 10,105,244,242, 11, 41, 80, 23,228,161, 69,216,181,213,145, 95,162, 11,104, 86, 35,232, 32,237, +214,249, 78,123,123,216,110,135,175, 93,113,173,211, 63, 97,115,215,191,254,134,223,199,138,111,145,128,251, 72, 97,181,249, 40, + 9,119, 42,248,224,227, 79,112,119, 78,206, 66,190, 36,155,235,163,202,228, 10, 79,234, 8,138,122, 15, 49,190, 49,149, 33, 59, +136,247, 55, 7,124,250,157, 79, 85,249,225, 67, 79,215,242,239,116, 29, 6,247, 35,252,122,172, 59, 95,241, 86,255,139,191,252, + 75,192, 9,110, 57,101,204,105, 70,202,217,101,100,168,153, 1,236, 59,240, 24,130,197,129,114,172, 94, 8, 28, 2, 56,114,181, +188,140,195, 0, 34, 96,183, 27, 48,196,136, 33,154,190, 56,142,195,162, 14, 96,143, 93, 21, 91, 95,156,167,147,217,174,178,183, +225,140,154, 63, 94,160, 74, 49, 47, 85,107, 18, 10,193,205, 37,107,121,158,145,210,108,196,189,211,185,154,189,100,135,232,111, +111, 79, 56, 29, 79,230,205,224,150,155, 57,219, 78,251,116,154,112, 62,159,171,129, 82,206,230, 96, 39,158, 54,152,230,212,216, +204,134, 26,253,201,193,138,116, 12, 4,144,165,189,237, 6,155, 48,167, 89, 48,207,103,164,233,108,141,195, 52,185, 23,187,123, +210,147,177,213,179, 75,253,202, 36,151,221,250,181, 38,178,121,113, 46,186,122, 34,246,224,151, 37, 63, 61,101,227, 7, 48,156, +128,199,238, 8,226,135,181,197,130,114, 61,168, 83, 54, 87,180, 16,108,191, 94,144, 15,155, 34,249, 1, 22,231,149,206,244, 74, +183,201, 10, 60,121,107,196, 63,249, 45,194, 95,253,218,127,135,159,251,242, 29, 14,159,253, 38,194,112,192,211,195,136,167,207, +158, 33,238, 15, 38,113,214,140, 24, 35,110,134,128,221, 62, 2, 97,135, 73,109, 34, 14,174,164, 0, 17, 34, 21,233, 98,168,251, +109, 14, 70,188, 28, 73, 77, 58,232,147,118,206,100, 22,187,200,238,128, 88,194,134,108,173, 3, 17, 68,118,239,133, 24, 49,107, + 64,158, 25,200,166, 45, 55,106,124,132, 80, 64,202,132,105, 18, 80,154, 48,114, 54, 54,126, 24,109,234, 22, 79,242,146, 12,169, +213, 97, 89, 1,233,170, 38,224, 66, 96,147,235, 98,171,102,109, 96,137,169, 21, 98, 28, 51,112,119, 86,132, 47,127,254,189,239, +156,110, 39, 99,171,186,235, 27,161, 53,146, 41,105, 94, 27,250,222,134, 57, 46,205,135, 72, 77,250, 58, 81,239,180,211,126,192, + 61,109,105, 29, 40,210, 20,240,117,226, 23, 53, 90,239,246,181, 16, 86,236,114,106,210,206,122,167,226, 37, 79,188,120, 2,211, +170, 64,161,121,158,203,198,160,107, 70,219,189, 56, 90,159,223,133,159, 64, 14, 9,181,100, 64, 90,201,248,150, 63,100, 96, 67, +183,216, 6, 7,160, 34, 31,237,117, 90, 12,115, 43,177,102, 67, 89,192,104,179, 8,104, 67,250,215, 71,156, 96,227,250, 95,124, + 79,105,249,188, 85,183, 29,161, 31,150, 83,209, 35,224,105,234,124,221,117, 45,249,242, 87,127,188,187, 53,120,212,131, 57,186, +148, 74,234, 83,214,136,112,225, 97,173, 85,221,176,137, 43,110, 92, 43,244,186,121,162,229,243,129,130,217,200,126,243, 60,221, +127,202,173,179, 81, 59, 67,138,199,182, 31, 63,202,182,179,127,176, 57, 37,124,245,107, 95,131,170,224,116, 58, 98,118,151, 54, +114, 47,153,148, 76,147, 61, 39,155,180, 85,205, 51, 61, 57, 67,123, 73, 99, 3,210,156, 48,140, 35,158, 62,127, 14, 10, 30,164, +225, 94,218,226, 80,186, 89,195, 26,204, 27, 8,181, 1, 40,205, 72,240, 4, 52,109, 37,163,141,197,108, 69,129,200,204, 63,202, + 79, 21,242, 85, 65,157,138,157,114,245,144,119,169, 86, 74,150,235,144,146,224, 60, 77, 72, 41,153,222,217, 93, 17,139, 92,205, +118,214,118, 90,150,243, 35,184, 26,128,136, 48,198,136, 57,171, 17, 0, 99, 0,152,240,236,102,135, 48,238,145, 82,174, 49,211, +167, 57,227,120,188, 5,139, 5,172,132, 24, 43, 15,165,216,140, 70, 82,140,227,128, 57,163,230,156, 3, 86,172,169,192,192,121, +118,150,123, 48,169, 91, 96, 80, 8, 62,157, 75, 37,215, 69, 15,190, 41,152,100, 8,132, 12,182,207,193,157, 42,139,172, 45,149, +228, 19, 85, 68, 2, 78, 26,240,234,147,215,224,116,123, 53,204,101, 77, 99,121,140,195,210, 33, 2,127,122,187, 71,254,243,255, + 27,255,245, 47, 28,112,247,147,255, 16, 31,127,240, 26,124,126, 1,138,140, 44,140,168,130,247,158, 7, 60,123,239,211,152,194, + 59,200,115,134,228, 25,231, 36,152,238, 78,192,124,135, 12, 69,202,234,188,132,106,151,234,193, 81, 90,125, 79,137, 25, 89,172, +201,130,100,244, 86,102,203, 56, 83,138,104, 73,183,204,204,150,149, 46, 25,130,100, 87, 85, 60,187,221, 31,129,155,128, 46,134, + 41, 58, 2, 45,193,227, 4,117,107,216,197,130,189, 13,120,129,234,245,139, 70,168,105,118, 29,194, 72, 75, 29, 9,113,135,240, + 83,159,127,239, 59,230,138, 68, 72,101, 18,247,105, 91,186, 51,124,129,108,181, 41,102,133,225, 44, 23, 90,229,246,103,169,145, + 24, 97,187, 40, 52,187,250, 11, 28,144,214,147, 89,195, 98,111,226, 99,150,130,223, 22, 30,221, 44,156,186,113, 18,234,134,161, +130, 18,109, 54, 34,107,170,245,186,248,213,107,230,204,255,174,159,165, 94,199, 86,210,158,168,105, 16,212,159, 91, 43,181,239, +130, 1,183,200,233,154, 12,243, 98,186,210, 94, 19,162, 75, 3, 20,166,158,128,213,226, 18, 75, 86,248,234, 91, 73, 91,133,188, + 93, 49, 95,198,135,221, 87,200,183,255,108,173,144,216,130,149,169, 99,104,183, 79, 91,158,186, 55, 89,209, 14, 9,106, 33, 44, +108,188,159, 11,180,223, 11, 65, 81,121, 44,235,131,254,125,148,232, 74,172, 52,169, 37, 72,228,116, 62,249,207,242,227,170, 51, +225, 13,204,225,187, 62,224,135,222,163,119, 59,207, 24,241,193, 7, 31,226,115,159,251, 28, 62,251,217,207,224,163,143, 62,130, +200,226, 60, 89,236, 88, 37, 43,206,231, 83,213,142,159,206, 39, 67,165,162,185,158,193,201, 91, 41,101, 16, 3, 55,207,158, 97, +140, 35, 78,167, 9,211, 52, 87,159,116, 43,206,206,200, 97,151,246, 64, 92,255,238,242, 35,151,175,229,226,173,238, 82,184,253, +126,143,185, 18,235, 66,109,132,146,179,188,199, 49, 90,179,172,132, 97, 48,100, 96, 24, 34,118,187, 1,227, 56, 56, 41, 45, 99, +246,201,126,158, 19,210,156, 61, 18, 85,220,241, 44,122,163, 82,246,213, 90,137,125,133, 24, 71, 76,150, 91,128,128, 57, 77, 56, + 12, 17, 74,140,195, 46, 34,238, 14,184, 61, 77, 6, 3,131,240,234,238,132,219,219, 87, 24, 72,140, 25, 95, 45,185,125,173,232, + 41,114,204, 17, 2,207, 98,159,167,106,125,154,179,214,181, 72, 33, 80,134,146, 2,230,232, 86, 40, 55,179, 7,199, 88, 65,119, +159, 13, 14,230, 67,226, 40, 64, 25,132, 2,147,195,209,185,254,126, 8,150, 22,246,242,213, 17, 56,191,222,116, 37,236,136, 88, +111,232, 75, 51,142,140,239,254,185,224,107,250,127,225, 23,126,233,103,241, 98,255, 77,220,189,124, 1, 73, 71, 76, 2,228, 41, +227,237,113,198,225, 83,207, 49,133, 79, 33, 21, 14,130,223, 23, 73, 50,166, 36,208,148, 0, 73, 85, 70, 86,206,240,226,197, 46, +206,113,130, 51,231, 43,233, 83, 96,220, 39, 82,139,103,109, 73,227,174, 74, 16, 49,190, 20,113, 70,166, 0, 18,170,126,238, 65, + 45,214,150,162,217,194, 38, 98, 32, 3,172, 9, 49,170,125,190, 60,212,179, 71, 29,198, 47,231,145,247,184,205,170,141,186,248, +235,146, 38, 87, 81, 97,223,235,115,173,127,246, 56,227, 48, 46,167,139,172,116,101,101, 7,110, 13,101,221, 8, 55,122,238, 5, + 75, 47, 58,193,178,208, 23,237,113,246, 53,105,173,133,204,215, 18,184, 77,118,252, 34,229,235,182,223,109, 41,226, 11, 34, 28, +213,221, 17,161,117,162, 91,171, 43,218,199,105,244,230,237,206, 89,183, 57, 0,253,194,128,112,197, 59, 12,197,227,219,236, 96, +253,231,152,186, 53,193,165,188, 79, 59, 11, 83, 93,177,167,168, 54, 12, 61,115,191,141,121,109, 53,251,218, 53, 89,139, 86,252, + 82,228,165,157, 23,250,114,125,181, 18,244,176, 34,228,105,219, 20,181, 95,106, 92,243,108,167,141,161,151, 22, 89, 96, 5, 44, +184,227, 20,172, 22, 8,117,191, 7,185, 31, 8,124,112,162, 64,175,239,239,215, 21, 27,236,124, 90,239, 16,215,127,182,240, 43, +234,106,195,141, 52,238, 35, 24,117, 13,175, 62,174, 16,235, 99,127,239,135,192,238,153, 25,146, 19,254,227, 31,252, 71,236,198, + 29,130, 7,122,168,239,148,107, 35,161,102, 68,147, 82, 50, 82, 26, 7,196, 97, 88, 96, 98, 11,176,182, 85, 68,202, 38, 27, 10, + 6,235,102, 39, 47,218, 46, 89, 17,227, 96,206, 89, 94,236, 11, 25,142, 24, 8, 49,212, 12,246, 24, 67, 93,125, 29,246,123, 99, +211, 59,153, 79, 11, 84,236, 65, 50, 28,216,144,200,121,134,136, 5,188,152,196, 49, 64, 17, 48,229,197,183,129, 8, 30,234,146, + 16,163, 77,182,165, 73,176,156,121,107, 14, 36, 75,213, 70,155, 51,155,212,251, 32,171, 57,204, 5, 50, 62,197,147,155, 17,135, +155, 27,156,103, 65,158, 78, 32, 50,105,223, 60, 79,230,160,198,182, 6,152,230, 84, 37,108, 75,188,179,105,228,179, 91,153, 18, +212, 27, 14, 99, 91,115, 73,158,115, 95,119,109,191,119, 34, 30,205,234,154,124, 54,210, 88,100, 35,236,153, 36, 43,215, 38,158, + 92,177,144, 83, 50,235, 81, 10,221,106, 99, 8, 10, 30,134,199, 57,201, 61,194, 22,190, 93,163,222, 4, 69,126,254, 22,254,209, + 63,255, 8,223,251,213,127,140,111,124,254, 14,239,126,225,103,176,127,242, 14,118,187, 17, 52, 68,124,116,199,152, 94,190, 66, +208, 91,131,187,149, 49,137, 35, 10,236, 77, 87, 12,230,127,206,206, 22,175, 86,174, 77,138, 39,140, 68,203,129,160, 20,235, 46, +189, 20,203,224,188, 16, 43,238,140,192, 10, 79,180,241,100, 60, 5,107,225, 38, 40, 6, 38,148, 91, 60,147, 34,129, 45,241,148, +128,179, 16, 78,179, 66,211,140,128, 12, 13,140, 76,177, 74,164,197,211,248, 76, 6, 89,252,226,217, 51,215,139,242,201, 82,225, +168,157,204,105, 53,136, 53,168, 97,248,210, 79,190,247,157,211,105,114,148,197,253,105,209,106,164,151,209,190,221, 5,107, 67, + 14, 99,223,171,235,106, 82,160,134, 48,119,193, 51,166,203,161,100,107, 30,187, 6,189, 99, 13,211,211,229,196, 89, 36, 76, 76, +151,243, 76, 59,221, 86, 82,130,155, 13, 16,174, 5,110, 93,102,149,119, 28,170,246, 96,214,214,166,148, 54,216, 76,212,172, 15, + 20,232,204, 85,219, 41,154,214,168,243,106, 53, 65, 23,175, 77,239,153,134,137, 86, 88, 67,145,222,233, 5,186,222,161, 21,145, + 24, 35,195,125, 11,180, 97,113,234, 37,145,204,255,108,107, 16,223,154,206, 55, 61,222,155, 98, 89,255, 92,239,233,254,238,181, +151,165,238,126,124,163,242, 86,110,124,208, 61,252,128,141,103,212,213,139,188,188,153,183, 15, 56,237, 21, 10,111, 2,185,255, +168,123,244,205,105,125,176,105,253,167,191,242, 21, 60,123,254, 12, 63,248,193, 15, 60, 19, 64, 42, 20,158,230,217,184, 36,115, + 90, 34,137,221, 49, 13, 88, 53, 0,146,177,191, 57,224,240,228,105,253, 84,166,169, 64,250,118,207, 84, 41, 91, 12, 78,168, 99, +247,176,231, 10,138, 22,120, 43, 4,194,225,176,199, 60,155, 55,123,201,108, 47, 28, 21,246,169, 53,120,194, 25,121,226, 26, 51, + 59,163, 88,160,190,179,206, 41,131,212, 86, 14, 41,153,244, 80,178,105,196,179,187, 26, 22,169,164,136,201,159, 76, 95,238,223, + 5, 21,236, 92,107,207,197, 71, 28,132,253,126,103,146, 36, 8, 98, 8,238, 55,225,140,247,156,234, 52,156,197,214, 0,195,104, +211, 61, 42,100, 30,144,132,160, 57, 89, 50, 27,199,154,215, 94,238,128,192,168,105,111,129, 44,168,165,246,153, 30,224,162, 46, +169,179,107,226, 5,170,174, 40, 22, 14,141, 22, 85, 24,216,185, 1, 86,224, 50, 17, 94,222, 38,228,219, 79, 76, 58, 6,218,100, +201,252, 80,123, 30, 40,158,140,192,159,188,222,227,197, 31,255, 17,126,229,103, 50,246, 63,245,159,227,110,138,144,243,201, 76, +122, 38,193,123,135, 51,244,249,219,120,117, 62,224,124,247, 26,167,211, 17,167,227, 9,243,233,206, 39,247,180, 72,103,125,141, + 93, 89,229,117,128,181,221,145, 58,209,185, 68,169,146, 79,142, 54,203, 47, 57,233,170,141,150, 71, 23,150,186,210,194,245, 42, +153,233,130, 96,103,159,203,223, 10,202,103, 46,146, 82,211, 11, 91,181, 84, 69,122,125, 85,162,212, 24,159, 41,249, 32,157, 11, +249, 1, 37,139,165, 87,143,217,107, 29,198, 1,225, 75,159,123,239, 59,199,211,180,152,154, 96, 29,113, 74, 87, 60, 61,168,209, +136,183, 19, 96,255,103,237,228,140, 43, 59,245,107,207,181,253,215,250,189, 48, 45, 14, 3, 27,115, 50,213,124,219,182,224, 45, +147,188, 94, 17, 3,109, 65,214, 61, 92, 78,235,150,132,180,203,227,174,152,122,167, 89, 71,125, 78, 82,244,145,181, 74, 29, 51, +253,242, 90, 45, 69, 82, 91, 50,211,186,209,216,154,108,233, 18, 20, 70, 3,203,117,235,102,234, 35, 85,187, 47, 2, 8,209,223, +124,214,102,143,238,111,104,139,125,253,216, 34,254,240,206,157,250, 75,122,181, 70,210, 69,115,242, 6, 6,176,143, 40,155,143, + 11,111,169, 13, 19,189, 65,245,109, 9,135,143, 68, 27,104,235,121,239,225, 0,188,233,175, 16, 34, 94,124,252, 2,207,223,122, +142,175,127,237, 43,120,255,253, 31,224, 60, 77, 75,192, 11, 80,247,206,229,144, 74, 73,124,146,164, 74,184, 3, 44,178, 50, 39, +243, 59,120,250,252, 25, 66, 24,170, 30, 58,165, 92,223, 69,206,217,200,115, 28, 60,233,109,129,136,155,101, 23, 24,100, 83, 92, + 28, 48,207, 22, 78, 18,152, 23, 26, 82,206, 14, 67,103,220,236,119,134, 2, 52,150,195, 67, 12,230,142, 55, 26,169,207, 34, 82, +151,137,110,158, 18,114, 50,126, 64,242,215,174, 82,179,181,144, 44,245,163,154,223,236,199,136, 56,238, 60,251, 92, 49, 12, 86, +128, 99, 40, 78,109, 3, 56, 68, 39, 26, 78,102, 67,238,110,118, 57, 11,134, 96,142,111,134, 4,180,190,210,102,116,163, 57,153, + 28,208, 13,101,218,148, 68,109,162,163,217, 45, 79, 1,170, 50,182,200, 11, 18, 70,108,136, 7,123,184,118, 33,117, 22,183, 76, + 38,212, 93,187, 22, 77,149,127,255, 95,221,206, 72,119,159,120, 74, 37,221,115,243, 63,124,191,215,134, 93, 23, 33,201,126, 31, +241,251,223, 35,156,254,244,187,248,197,159,125, 11,251,191,243,243,120,117, 6,210,249,132, 65, 51, 62,117,200,200,207,222,198, +221,116,131,249,248, 26,167,105, 66, 62, 27, 9,114,154, 51,242, 52,193,204,208,187,229,111,227, 23,218,103, 62,100,113, 27, 86, + 42, 12,116,174,249, 6, 69,190, 87,174,139, 74, 6,171,175,136,136, 59, 4,181, 69, 40,217,141,169,216,125, 28, 64, 92,243,231, +217,149, 4,197,223,161, 58, 33,170,177,225,213,141,224,202,231,202,133, 37, 95,247,240,212,216,138, 47,242,225, 18, 7,190, 27, + 6,132, 47,255,228,123,223, 57, 29,207, 21, 1, 22, 45,133,129, 26,134,123, 47, 32,215,238, 48, 95,158, 0,234,188, 1,127, 49, +151, 90,219,166,175,160,203,253,116,187, 31, 39,244, 1, 88,212, 21,241,166, 5,104, 8,111, 53,237,109, 21,231, 90,205, 96, 90, +102,252,149, 6,131,188,216,147, 46, 5, 82, 47,134,109, 90,224, 14,234,129,252,182, 8,111, 77,196,168,187,242,229,204, 45,186, + 71,162,109, 62, 1,249, 14,188,151,159, 45,215, 81, 47,246,221, 13, 57,144,154,120, 86,106,143,196,126,128, 92, 18,135,174, 53, + 3, 54,249,204, 46, 93, 42,133,103,201, 93,239,201,120,143, 33,193,221, 55, 89,211,125, 28,136, 55, 41,209, 43, 54, 29, 61,182, +178, 18,176, 34, 12, 60,234,121,151,157, 23, 93,172,154, 30,122,186, 66,222,123,147,130,190,246,120,127,172,234,254, 77,127, 29, +143, 39,124,235,219,223, 70, 96,224,245,171,215,198, 44,119,146, 27, 26, 25,171,170, 26,129,204,125, 7,164, 73, 11,179,105,216, + 38,162, 39,207,158,130,131, 21, 99,243, 75,207,117, 63, 29,221,201,171, 24,113, 20, 67,149,210, 24, 4,182,172,112, 98,198,126, +127, 64,202,130, 52,207, 96, 98,203,124,135, 71,173,170,218, 68, 43, 54,153,143,227,224,236,117,155,240, 99, 8,190, 87,223,227, + 56, 37,156, 79,103,204,105, 46,176,143, 49,231,115,242, 9, 61, 89,129, 35, 96, 55, 14, 80, 48,230,121,194,232,228, 59,130, 69, +125, 10,156,185,238, 7,118, 12,140, 33, 70, 95, 63,176, 55, 65,150,195, 94,220,243,140,169,111,136, 0,113,112, 50,156, 27,123, + 5, 50,120,185,152,152,136, 86, 39, 56,162,133,197, 30, 60, 14, 54,144, 33,142, 57,139, 23,103,211,167,179, 10,194, 48, 44, 70, + 86,222, 80,192, 73,164, 89, 22,147, 44,214,108,201,109,162, 24, 72,144, 41, 66, 82,194, 24, 21,119, 18,113,247,242, 21,130, 78, + 29, 19,126,189, 30,124,164,196,226, 98, 88, 10, 4,240,126,196,255,254,199,103,204,127,244, 91,248,229,191,247, 12,251,159,254, + 47,240,226, 21, 65, 78, 47,113,136, 2,218,239,113, 59,239, 48, 31,111,205,239,252,108,159,219, 60,103,104,178,245,133,144,169, +144, 52,107,213,156,151,149,101, 97,241,151,149,138,145,235,146,161,144, 62, 48,219,208, 46,203,249, 70,168,105,111,197, 97,142, +155, 63,140,205,116, 91, 46, 65, 6, 60, 12,198,126, 51, 22, 83, 47,231,141, 16,147, 59,215,177, 91, 9,243,178, 50, 38,172,194, + 93,176,228,174, 87,228,129, 58, 5, 18, 65,109, 82,255,226,231,222,251,206,241,120, 54,202,253, 18,208,221,147,196,154, 2, 78, + 45, 65, 10,107,205,245,226,203,174,155,211, 18,117,197,143, 46,183,231, 15,192,239,205,174,124, 85,141,203,227, 15, 68, 8,164, +173,147,123,227,242,198, 30,106,223,175, 3,104,163, 16,215,169,151,250,215,219, 74,225,116, 69, 46, 83,186,143,137,188, 76,237, +221,102,152,108,129, 81,118,199, 76,151,200, 0,220,209,111, 81,220, 45, 72, 72,167,176,167,109, 70,122, 87,142,168,231, 78,182, + 57,243, 11,173,156, 46, 30,167,220, 26, 68,218, 52, 53,165,169,235,159, 71, 55,152,250,219,141,194,195,172,247,174,113,211,246, + 57, 23,126,234, 53,168,191, 37,198,233,170, 17,122,212, 96,254, 67,141,248,203,250, 65,233,113,127,189, 34, 90,122,217, 28,190, + 9,211, 93,255, 6, 97,247,118,210,143, 49,226,253,247,223,199,167,223,253, 49,124,249, 75, 95,196, 71, 31,125,104, 14, 94,206, +109, 40, 59,234,226,171, 93,242,219, 11,121,171, 20, 15,246,117,152,138, 21,152,253,225,198, 44,100,231,212,100, 49,104,101,128, +199, 33,186, 38,188,132,199,176,123,153,219,190,113, 28, 2,216,167,244, 82,112,161, 62,217,183, 94, 25, 37, 72,196, 33,105,245, + 60,240, 16, 24,207,158,220, 96, 24,119,120,245,250, 14,105,158,172,121,117,247,188,242,218,164,217, 59,171, 26,132, 46, 48,253, +121,201,222, 54, 91, 91,193, 16, 3,118, 59,119, 43, 35,139,153,165, 48,152,180, 44,205, 0, 41,230,164,152,230, 12, 70,198, 48, + 12, 80, 98, 68, 55,243, 81,143,167, 45,133, 99,206, 48,107,216,226, 79, 65,168,238,149,234, 81,181,129,164,202,217,136,138,115, + 98,179,172,163,197,227, 51,112, 73,121, 19, 39,128, 73, 13,129,129, 79,145, 74,140,148, 20,131, 57,182,216, 89,235,143,119,151, + 25,199, 87,175,193,114,244, 0,146, 70, 45,244,134,223,146,246,252, 34, 90,228,162, 35, 43,198, 39,123,252,214,159,158,241,253, +239,254, 22,126,241,171,132,183,190,246,159,225,147, 87, 1,135,244, 2,195, 77,192, 81,110,128,243, 29, 68, 39,156,146,163, 42, +243,140,156, 38,100,181,247, 52,103,133,166, 12,166,217,174,129, 79,124, 74, 75, 16, 89,185,111, 73, 44,166,204, 38,108,238, 24, +229,197,207,164, 16,147,203, 23,187, 6,164,234, 82,101,132,141,173, 47, 89,107,206, 58, 68,193,146, 65, 16, 8,155, 57, 14,212, +138,189,138,216,126,158,141,224, 25, 67, 0, 7, 87,121, 80,112, 57, 28,106, 98, 92, 35,238,174, 43, 0,105,138,253,110, 55, 32, +124,225, 39,222,251,206,249, 52, 45,176,180,110, 72,172, 26,236,186, 78,210, 68,171, 66, 76, 53, 53, 12, 13,191, 88,251,182,160, + 43, 6,116,121,124,111,129,157,171,195,145, 86, 42, 47,135, 53,136,177, 11,132, 17, 46, 7,172, 69,110, 9, 92, 89,118,231, 13, +139,208,133, 8, 88,201,154,188,212, 54,165,129, 87, 30,247,180, 32, 4,171,162, 79,155,171,133, 53, 67, 95, 59,233, 24,105, 65, + 19,122,130, 0,131, 46, 26,158, 53,171,189, 99,187,211, 6, 63,191,223, 4, 44, 59,102, 15, 19,208, 77, 62, 63,109,163, 41, 84, + 16, 16,186,168, 62,244,200, 9,253, 90, 17, 47,239,131, 54, 9,100, 77,247,122,133,226, 77, 68,219,195,118,183,218, 89, 75,213, +180, 15, 42,199,154,173, 70,125,120,249, 61, 71, 84,103,254, 67,141,145,210, 99,224,118,237, 63,175, 55, 41,232,127, 83,196,184, +237,150,200,158, 69,210,140, 79, 94,190,194,183,190,245, 77,156,207,103,188,122,245,202, 93,204,236,222,154, 39, 75,138, 42,111, + 36,139,177,214,219,137,189, 40, 21, 68, 76,134,118,120,114,131, 24, 7,156, 78, 39, 35,180,213,233,201,244,200,197,115, 62,132, + 80, 61,231,199,193,160,231,156, 19,158, 28,246,152,147, 96,154,166, 42,105,203,174, 93, 31, 66,180, 3,188,184, 29,178,201,204, + 56,184,119,183,146, 75,200, 6,156,231,140,200,246,216,149,203, 81,246,222,179,237,189, 69,212, 53,249, 22,244, 82,138,162,136, +201,199,118, 99,196, 48,142,136, 67, 68, 28, 70, 4,207, 74, 7, 5, 15, 23,177, 64,149,148,213, 93,237, 38,135,242, 93, 87,239, +251,255,228, 44,108, 51,222, 33,144,152,254, 92, 10,167,217,181,231,154,147,125, 58,146, 93, 50, 23,205,118,186, 6, 85,195, 35, + 64, 5, 33,216,193,239,217,200, 94,212,164, 58,176, 17,204, 35, 63, 16,204, 53, 78,221, 76,204, 89,249,230,249,110,136,192, 36, +192,237,237, 17, 52,223,218,122,228, 71,192,132,168, 54,228, 23,190,159, 24, 89,177,123,114,192,111,255, 89,198,247,255,195,191, +198,175,252,221, 35,158,127,227,151,112, 62,237, 17,226,132,204, 79,113,158, 50,238, 82,194,233, 44, 72,167, 19, 36,157, 23,238, + 67, 54, 66,166,241, 21, 60, 9,205,139,105,185,103,139, 63,136, 21,243, 98,191,204,230,207,194,138,140,176,144,145,197, 16, 38, + 91, 41,241, 18, 87,222,216,117, 23,119, 56,246, 5, 54,123,252,106,102, 2,193, 3,114, 96, 57,237,101,143, 47,170,152, 75, 50, +156,152,201, 76, 34,130, 34, 32,144,153, 20, 89, 97,183,159, 71,107,242,230,239,137, 26,156,110, 55, 68,155,212,207,167,169,113, + 98, 91, 50,212,181,251,113,123,140,232,118,176,209, 89,130,107,232,175, 94,176, 70,175, 78, 27, 5, 19,221,254,182,103,239, 93, + 20,194, 43, 83,189, 82,145,191, 44,147,110, 86, 69,110,157,216,104,121, 30,161,203,199,231,246, 80,166, 21,154,176,218,246, 87, +143,124, 90,105,147,219,235, 68, 88,101,206,119,222,105,171, 33,122,139,175,192,141,119,126,121, 77, 90,201, 65,125, 77,243, 6, +140,168,255, 90, 53,143, 27, 54,224,255, 11,136,190,225, 65,172,202,116, 51, 6,234, 5,167, 64, 9, 43,173, 59, 93, 41,238,143, + 47,236, 91,127, 70, 43, 69,195,125,118,235,107, 34, 96,219,212,233,189,248, 60, 53,190,246,171, 54,147, 30, 98,160, 83,229, 75, +144, 82, 79,130,105, 52,245,189,187, 95,163, 8,121, 36, 83,248,177,133,254,111,172,160, 55,187,189,113, 28,240,254,251,239,227, +221,207,124, 22, 95,252,194,231,241,225,135, 31,214, 64, 18,179, 24, 21, 75, 34, 27,140, 50,107,108, 94,237,248, 46, 38, 77,203, + 38,195,113, 66,221,225,112, 83, 19,209,138, 85, 41, 19, 99,154,147,155,205,152,208, 53, 57,110, 60,196,136,236,100,228,113,183, + 55,150,124, 74,117,197, 6,247,104, 40,107,193,224,170,131, 24, 3,246,187, 29, 66, 12,158,231,110,185,216, 67,140, 75, 58, 91, +136,254, 16,226,172,114,173, 6, 92,234, 41, 91,230,231,109,133, 86,137, 23,125, 50, 89,131, 64, 94,152, 83, 74, 94,131, 3,152, + 2,178, 95,199, 57, 9,114,154,170,236,104,118,198,126,246,160,150,150,253,108, 48, 59,234,110,155,200, 26, 13,170, 62,225,140, + 16,216,134, 24, 47, 38,204,228,177,207, 90,207,145,172,228,211,184, 52, 38, 77,112, 40, 62, 35, 6, 0, 20,171,153, 14, 67,113, + 24, 35, 40,142, 16, 49, 16,122, 74, 25, 72, 9, 20, 9,183, 71,129,156, 94,213, 38, 7,215,164,213,244,208,189,218, 15, 44,107, +107,227, 8,197,225,233,136,223,253,222,136,247,127,231,223,225, 31,126,243,136,195, 55,126, 5, 31,189,222,225,116, 60,226, 60, + 39,220,158, 38, 76,199, 59,228,233,104,161, 73,146,145, 61, 10,149,145, 17, 72,106, 51, 89,174,136, 54,100, 78, 41,202, 40, 88, +204, 56,164,216,187,180,217, 38,197,212,106,113,127, 3, 49,164, 89,183, 49,172,233, 43,142,243,230, 24,215,164,202, 56,145, 50, + 67, 93, 10, 39,128,102,127,108,245,201, 61, 99,206, 51,210,108,164, 77, 73, 25,164,179,163,163,229,115,150,197,128,166, 14,103, + 62,252, 17, 16,199, 17,225,139,159,127,247, 59,231,243,100,249,175,197,201,172,154,152,184,110,145, 44,238,240, 16, 8, 55,129, +113, 19, 8,123,235, 61,154, 80,147,134, 96,183, 50, 2, 89,179,144, 47,224,229, 13,246, 59,175, 32,120,221,188, 95,168, 58,200, +214,206,169, 77, 91,163,118,183, 76,117,103, 73, 85,115,191,132,213, 80, 83, 40, 55, 52,255,254, 97,182, 70, 54,218,155, 38,209, + 37, 65,139,112, 93,215,126,173,149, 97, 55, 0,194,197, 32, 76, 75,209,184,194,114,191,168, 11, 77, 24, 79, 37, 44, 86, 40, 93, + 27,147,152, 21,121,110,179,200, 82,215,196,116,112,251, 38,241,241,145,133,124,163,177,161,245,207, 82, 95,216, 31, 5,141, 87, + 5,194, 5, 78,114,255, 95, 42,175, 71,245, 30,244, 97, 53,107,235, 10,109,160,254,222,220,108, 58, 26, 91,200, 55,173,231,247, +137, 0,254, 70,108,231,208,170, 44, 23, 4, 41,167, 25, 31,126,252, 9,190,253,237,111, 65, 37,225,120, 60,185,220, 75,125, 31, +188,100,136,171, 74, 13, 43, 41, 80,120,221,225,250,231, 17,152,112,243,228, 9, 66, 28,204,237,205, 11, 97,206, 70,110,139,158, +210,165,158, 57, 48,248,164,157,230,132,195,110,180, 98, 51,205, 11, 87,134, 96,174,108,108, 69, 52,103,117, 27,217, 17,129,163, +235,201,109, 31, 78, 42,136, 49, 98, 24, 70,140,251, 61, 64,140,187,227,201, 88,239,206,152,175,108,119,226,202, 9,128,152,173, +104, 8, 92,215,101, 67,180, 34, 92,245,204,121,198, 97, 55, 84,141,124, 86,134,228, 25,115, 54, 8,190,186,217,169,185,209, 5, +202, 14,173, 27, 57,173, 83, 42, 19, 35,168, 96, 24,130,171, 80,236,141,230,146, 41,193,161,190,247, 96,169, 50,198,104,119,254, + 77,206,158, 24, 86,247,195,189,113, 73, 73,218,171, 95,255,106, 21,107,241,182,226,133, 36,231, 4,214, 4, 10,140,215,103, 32, +221,221,130, 57, 65,125,207,124, 1, 31, 61, 36, 51, 41, 82,216, 78, 2,186, 65,212, 4,112,243,100,192,239,126,127,135,143,190, +251,239,241,159,124,245,136,233,199,127, 17,175, 62, 78, 56,221,125,136,124, 62, 33, 77, 19, 52, 77,152,114, 70,154, 5,200, 25, + 65, 51,136,178,213, 50,151,166, 81,123,160,250,196, 46,234,126,246,154,205,153, 77,225,150,176,174, 0,240, 41,187,216, 31,131, +109, 96, 21,247,117, 37,111,166,180, 68, 5,211,194, 80,111, 7,158, 50, 48,150, 12,147, 8, 5,187, 61, 59,147, 15,166, 30, 7, +204, 32, 68, 21,179,149,133, 23,126,150,101, 12,149, 34,229,205, 70,176, 83, 5, 40, 91, 35, 52, 58,252,126, 60, 78,238, 79,187, + 76,154,182,131,176, 47,200, 16, 35, 14, 67,192, 97, 12, 56, 68, 15,110, 81, 96, 22, 96,114, 66, 64, 11,213, 46,186, 71,189,167, +176, 97,155, 94,126,157,103,133,237,224, 76,106,146,229,176, 10,127,105,223, 80, 9,224,107,111,231,165,240,111,174, 2, 72, 87, +119, 93,123,102,246,108,116,186,194,188,190,104, 66,186, 98,164, 23,251,113,169,135, 42, 93,202,241,136, 58, 51,157,203,168,216, +229,137,185,249, 94, 73, 67,200,107, 24, 6,155,124, 21, 90,173, 87,168,191,210, 23,110,127,111, 90,180,183, 97,118, 2,209,181, +230,158,122,235,249,181, 34,130,232, 74,193,211,206,234,151,232,145, 4,185,173,169,153,238,163,215,173, 38,124,234,221,255,244, + 30, 52,161,254, 61,122, 51,250,223,223,234, 14,189,125,228,142,180,161,216,237, 70,188,255,189,239,227,230,217,219,248,187, 95, +255, 10, 62,250,240,227, 10,111,179, 71,100,166, 57,185, 37,167, 21,139,114,168, 77,201,136,102,129,201, 93,217, 44, 50,148, 3, + 99,119,216,251,132, 14,196, 16,253,159, 46,221,241,253,252,110, 48, 11,217,115, 74, 32,207, 41, 79, 98, 19,146, 29,140, 6,139, + 26,211,220,160,203, 57,219,115, 70,159,238,203, 33,171, 40,169,138, 75, 67, 62,121,114,153,133,254, 88,241,158, 82,194,221,241, +132,243,233,236, 99,173,253,253,209, 13,101, 10, 81,112,191,223,129, 56,186, 23, 61, 33,122, 44, 42, 60,117, 46,146, 49,229,207, +167,179,133,122,136, 57,215,169,204, 22, 40, 82, 38,110, 48,166, 41,131, 52,129,163,193,233,228, 44,125, 26,118,152,178, 58, 98, + 64, 22,205, 25, 92, 96, 74,166,199, 87,182, 52, 49, 53, 74, 55,178,147,222, 66,108,226,112, 81,153,204,126,227, 73,195, 68, 55, + 84, 0, 10, 4, 5,146, 75,184, 40, 16, 82, 6, 8, 25, 33, 48,238, 18,227,124,251, 10, 92,200,114,244, 24, 25,198,234, 62,237, +200, 49,215,227,135,212, 11,251,225, 38,226,119,255,106,196,243, 63,255,109,124,253,167,206,184, 61,124, 21,243,105,194, 60, 29, + 49,167,132, 60,103, 76, 57, 35,207, 25, 33, 79, 32,182,201, 91,132, 93,182, 38, 6,139, 19,215, 76,115,168, 35,187,238, 57, 96, +124,130, 18, 71,166, 30,151,186,196,169, 22,255,125, 38,182,162, 95, 36,152,190, 54,170, 94, 42,229,207,120,137,183,134,146, 89, +175,147,214, 52, 55, 45, 80, 62,185, 14, 65, 25,177, 32, 52,129,173, 65,141, 1, 20,108,117, 67, 28, 16,137, 17,130, 33, 85,228, + 72, 17,123,122, 26, 19,155,249, 76, 19,212, 85, 71,250,186, 53,102,118,184, 42, 24, 17, 3,192,156, 21, 47,103,197,135, 89,241, + 82,129,249, 98,119,222,236, 47,169,175,246,235,140,150,246, 35,236,204, 81,232,250, 57,123, 57,213,104, 23,205, 42, 10, 36, 93, +242,202, 11,243, 81, 87,230, 38,139, 75,155, 9,252,115, 67, 72,227,238, 89,151,221, 51, 90, 35,125, 44, 74, 1,166,150,253,169, +151,242,228,102,119, 74,171, 11,192,144,205,216,217, 18, 21, 43,218, 55, 20,210,196,163,174, 77,113, 90,243,177,101, 21,210,104, +171, 11, 65, 6, 43,119,187,141,200,218,234,115,222, 56, 22, 73,251,217,108,154,242,232,229,160,184, 33,207,210, 11, 47,249,203, +232,219,229,114,234,197, 32,112, 95, 33, 91, 37, 8,248,235, 94,188, 2,113,245,177,180, 57, 92, 86, 48, 64,243, 26,214,254,239, +107,227, 31, 85, 65, 9, 65,184, 86,100,101,229,197, 95, 81,122,194,255, 47,126,169,244,102, 72,165, 73, 81, 37, 60,125,114,192, +111,254,155,223,196,247,126,240, 2, 63,249,249, 31,119,178, 39,234,180,206,129,160,130, 42,215, 33,103,106, 91,225, 10, 86,128, + 66,168,209,185,119,183,183, 72, 83,194,205,225,128, 39, 79,158, 84, 91, 95,230,136,192,193,225,104,115, 56,155,147, 32, 77, 54, + 5, 19, 7,228, 52,187, 69,171,121,166, 15, 49, 86, 35, 24,142,132,195,110, 68,140, 1,226,144,185, 66,220,194,214,244,217,105, + 54,143,247,125,100,220,236, 6, 51,132, 10, 1,162,100, 36, 43,241,211,176,200,152,216,166,224, 18, 43,171,217,118,209,199,211, + 12, 82,155,216, 3, 91,104, 79, 33,248,185, 49,105,117,214, 27,162,237,244, 35, 41,118,227, 0, 26, 6, 55,180, 9,126, 31,152, +109,109,154, 83,181,104,157,146,224,124,158, 16,201, 39, 72,168,167,166, 5, 39,113, 25, 34, 32,238,100,215,167,161, 0, 0, 32, + 0, 73, 68, 65, 84, 22, 98, 76,120,247,220, 8,161, 49, 94, 33, 79,217,179,247, 6, 55,200,161, 18, 1,171,182,195, 15,200, 72, + 0,242, 44, 32,157,141, 69,238,250,124, 82,193, 97, 31,128,225,208, 89, 45, 95,235, 11, 55,127,155, 86,131,147,110,143,234,218, + 21,118,197,254,217, 14,119,159,236, 48,124,255, 55, 17,134,247,161,225, 6,160, 1,100,206,237,128, 88,177, 37,182, 85,171, 32, +248,231,100, 65, 61,102,138,150, 42,112, 77, 85,114, 22,106, 96, 74,112,248, 69,168,140,228,101, 71,111,159,119, 78,102,178,100, +141,128, 33, 54,112, 78,131,157,215,206,183,112,196,155,137,173, 16, 19,144, 97,251,243,164,102,100,227,250, 66, 4, 24,185,155, +139,131, 27, 9,132,128,164,193, 72,119, 96, 16, 5,179,156,141, 4, 10,209, 86, 69,113, 0,194, 14, 74, 35, 20,177, 26, 92,177, +177,193,181,217, 28,195,255,144, 16,193, 54,145,231,140,219,243,132,151,199, 25, 31,157, 50, 94,204,130, 59, 1, 18, 86,174,108, +205,212,219,196,105, 47, 50,199,170, 47, 93,206,207,139, 34,221,212,197, 22, 70, 7,173,208, 0, 44,182,168, 53, 38,180,113, 3, + 43,166, 57,236,144, 54, 53,249, 40,221,227, 52,137, 67, 11,233, 77,107,120,202,150, 74,163, 48, 38,219,206,228,130,233,174, 27, + 77, 9,173,247, 79,139, 41,138,234,150,204,115,237,130,167,189, 51, 95, 23, 45,187,148,223, 26,128,162,109,221,214,138, 2, 20, +215,191, 54,188, 5,186,184,238,213, 73,223,157,194, 90,124, 76,165,117, 7,212,134,181,124, 79,129,190,150,151,190,110, 12,154, +207,175,227, 82,168, 94, 56, 18,174, 63, 15,221, 76, 50,211,139,207,172,106,156,219,100,187,182,155,236, 34,147,232,162, 97,233, + 60,151,181,185,160,229,177, 43,226,165,247, 79,218,186, 28,148,111, 58, 67,175,227,118, 85, 31,111,138,243,208,207,174,215, 43, + 61, 22,175,216, 29,110,112,126,253, 2,191,254,191,252, 6,246,135,103,120,231,237,183,144, 82, 50,232,123, 24, 44, 34,149,200, +228, 69,168,135, 76,117, 38,179,212, 44, 15,218, 32,198, 60, 39,124,242,201, 39,230,205, 62,140, 56,236, 71,220,220, 28,188,120, +186,235,155,231,164, 79,243,132,195,200, 56,220,220, 88,156, 38,115,117,175, 36,143,123, 37, 39,231, 25,243,221, 66, 81, 4,236, +198, 43,246,243, 4,231, 3,177, 67,176,176,131,178,144,214,114,202,152,167, 51, 84, 77,106, 22, 60,115,251, 60,153, 22,126, 55, + 70, 12,193, 80, 1, 37, 50,214,188, 38,236,247, 22,221, 26,139,235, 90,117, 96, 84, 12,209,215, 0, 33, 66,201,156,221,146,144, +243, 1,164, 34, 82,187, 33, 34, 12,131,105,238, 93, 46,151, 69,144,231, 9,145, 20,113,127, 0, 56,214, 3,214,252,219, 25,167, + 76,200,211,100,104,164,103,141,147,223,175,213,131,191,177,138, 13,108,239, 57, 59,126,201, 0,198,200,216,143,134, 10,100,101, +176,204, 54, 68,100, 75,108,203, 96,228, 89,176, 15,138,176, 63, 24,116,189, 61,145, 60, 14,107,122,195,123,159, 33,136,195,128, + 48, 30, 16,135,136, 16,198, 10,147, 19, 51, 66,105,138,216,210,237,202, 90,162, 20,236,133, 24,151, 27, 68,147, 16,130,161, 28, +162,132, 0,245, 41,184, 64,238, 22,227, 28,203,116,236, 15,170, 30,248, 50, 59, 33,143,117,177,237, 22,231, 56, 72, 35, 25,228, + 80,248, 21, 17, 16, 53,169,100, 74,238,185,239,181, 55,144,123, 16, 88,211,155, 65,134,134,207,138,211,148,113,158,147, 53,182, +106,174,117,118,253,141,124, 55, 11, 97,206, 46,215,252,210, 79,188,251,157,211,105,110,166,178, 37,179,219,146,194,164,238,180, +230, 46, 69,108,101,171,186,177, 95,212,149, 39, 54,117,250,187, 75,216,119, 61, 67,213, 60,242,106,247,186, 61,101,173, 25,249, +107, 18, 88, 27,124, 82, 22, 2,218,236,155,187,199,242,223, 15, 77,129,144,141,251,145, 54, 94,113,139, 40,173, 25,227, 23,221, + 1,109,179,180,177, 41, 87, 67,151,185,190,245,119, 8,180,233,210,167, 23,204,244,222,247,124,177, 97, 45,228,194, 69,154, 88, + 96,242, 26, 44,226, 95, 2,189,106,208, 67,219,170,134, 71, 64,242,215,126,175,253,215,173,213, 7, 54, 26,156,109,190,198,138, +127, 80, 86,129, 45,251,191,189,105, 30,210,149,181, 97, 43, 63,170, 26,156,126,184, 31, 37,160,218,253, 62,230,151,168,226,176, + 27,113,115,179, 55,130,150,104,175, 24,216,132, 78,151, 34, 95,154,192,195, 97,143,191,254,203,191,192, 25, 17, 63,247,237,159, +193,233,246, 22,167,105,174,159, 87, 22,129, 36,199,253, 60, 9,205,136, 94,182, 67, 76,238,100, 22, 61, 27, 60,103,131,155, 21, +214, 24,112, 24, 76, 23,238,146,173, 57,153, 45, 42, 65,240,252,233, 83, 80,220, 89,162,154,103,140, 43, 19, 36,171, 23,106, 43, +236,150, 91,110,249,216, 68,106, 83,206, 48,120, 62,184,199,137, 50, 33,132,104,147, 40, 76, 67, 95,144, 44,114,127,246,147,179, +250, 37, 39, 4,216,107,166, 56,248,110, 30,152,102, 67, 11,134, 33, 98, 24,247,152,179,173, 24, 66,140, 53, 19,221,224, 83,131, +201,179,147,232,114, 78,110,122, 66,174,227,215,218, 4, 20,115, 19,155,176,109, 42, 7,177,231,172, 11, 6, 86,119,156,179,130, +157,192,200,243,140,125, 84, 36,183,242, 13, 62,177,171,218,128,150, 17, 0,103,204, 39,129, 17,177, 0,176, 59,169, 73,145,105, +177, 57,162,141, 44,160,200, 80,101,176, 42, 12,233,183, 48, 19, 30, 8,175,231,128,244,250, 37,152, 82,159,220,246, 24, 91, 88, +255,222,245,136,189, 62, 64, 91, 81,156, 19,225,107, 79, 18,190,254,205, 27,156,126,236, 31,224, 60, 61, 71,158,110,161, 57, 97, +206,130,115,158,145,140,184, 0,209, 12,205,126,122, 19, 47, 81,213,142,188,160,102,162, 55,169,155,190,171, 46, 49,179,117, 85, + 73,182,235, 54,127, 17,163,207, 5,146,234, 62,199, 5, 17,166,133,112,107, 22,190,197, 41,154,234, 38,183,100,212, 11, 19, 84, +131, 35, 8,226,142,115,182, 30,145,130, 26, 87, 73, 29, 60,250,215,121, 30, 41, 67,115,118, 7, 66,151,144,170, 17,240,134, 24, + 29,125,168,249,228,182, 31, 87,181, 41,124,130, 66,200,114,100, 7, 42, 26,112, 43, 44,188, 98,198,183,145,170,218,238,182, 27, +210, 92, 27,252,162,212, 59,216, 53,246, 0, 23,187, 86,162,203, 96,152,109,162,101, 13, 51, 53, 47,234,172,152, 26,102,119, 97, +240, 87,147,131,139, 21,234,242,197, 74,181, 59, 84, 4, 93,215,100,194,229, 22,104,217,171,114,137,197, 43,239, 76,117, 59,181, + 12, 27,137,111, 13, 28, 47,221,207,105, 79, 70, 92,189,110, 45,153,187,171,125,122,191,230,186,132,237,197, 35,117,123, 40,217, + 35, 1,171,191,241,150,197,170,214,233, 87, 86, 48, 75, 95,103,174, 77,238,171,215,215,192,218, 45, 12,172, 77, 12,225,250, 49, +215, 85,124, 29,147,187, 36,217, 95, 22,183,156,181,194,224,197,192, 65, 91, 88,233,161, 98,189, 72,250,113,197,243,248,254,105, +123,221,208,210,195,162, 57, 93, 29,140,242,134, 99,190,177,124, 25,231, 84, 76, 57, 46, 87, 34,151,112,200,114,244,238,198,193, + 44, 67, 65,120,251,249, 83,252,251,127,251,155,248,157, 63,248, 19,124,249,203, 95, 70,228, 80,173,145, 11,219, 60,198,176,248, + 47, 52,132,160, 24, 67,109,210,119,227,104,154,226,211,209,200, 96,234, 86,169,113,196, 56, 12, 24, 35,227, 48, 14, 64,217,151, + 15, 3,142,231, 9, 41, 77, 14, 29,115,149, 17,101,135,203, 57, 4,204,115, 2,187,249, 11, 51,129, 99,244,195, 54,120,222,185, +253,108,202, 25, 36,150,129, 29, 98,168,247, 68,136, 3,166,172,238, 34,151, 49, 48,155,123, 93,136,184, 59, 30,241,250,238,174, +249,126, 16, 52,155,252,205,118,242, 54,221, 71, 55,157, 81, 53, 84, 32,171,130,196, 51,215, 37,155,157,107, 12,224, 96,107,131, +234,236,166,203,119, 66,138,211, 39, 7,235, 53,115,194, 57,171,147,219,180, 26, 42,141,145, 33, 60,216,164, 6, 65,140, 0,130, +125, 94,179,195,234,209,179,199,163, 11,228, 72,178,145,111,221, 20,199, 32,230, 4, 66, 70, 38, 70, 18, 67, 4,212, 37,113, 55, + 3, 99,124,114,131, 24, 70,236,118, 3, 36,236,107, 19,244,166, 44, 79, 82,170,248,226,214,215,172, 59, 95,169,245,151, 32, 76, +179, 96, 58,159,145, 37, 35,169,241,190, 56, 70,128, 71,219, 61,187,219,157,208, 98, 34,179,132, 88,121,212,120,118,219, 86,183, +195, 37, 37, 87, 26, 16,114, 82,144, 38,211,128,107, 48, 14, 68, 89, 63,120, 1, 87,159,102,153,125,210, 15, 4,225,128, 18, 68, + 94,222, 39,163,236,221, 45, 48,109, 22,241,240, 24,135, 77,124,237,226, 31, 0, 32, 9,201,185, 1, 50, 39,168, 36, 63, 99,173, + 1,177, 96,153, 12,201, 9,146,102,204,217, 9,166, 57, 1,152, 1, 54, 68,170, 22, 56,130, 57, 15,169,152, 12, 34,129,144,200, +247, 21,126,184, 15, 32,219, 1,248,158, 99,225,200,235, 5,241,140,154,134,161, 77,221, 88,159, 31, 93, 81, 93,165,130,109,238, +137,113,153,139, 78,171, 37, 76, 86,133, 6,194,179, 1, 56,144, 24,219,208, 83,148, 34, 45,105,112,114,177, 65, 53,116, 66,212, +246, 42, 54,205,187,100,161,190,110,221, 56,112,117,245, 79,234,223,223, 69, 17,187,143, 83,178, 70, 60,208,217, 17,234,198,177, +171,141,236, 70, 55, 90,143,106,194,209, 64,199,218, 93,178,165,248, 82, 3,245,139, 46, 48,149, 93, 3,217,164, 74,235,125, 83, +243,106, 47,221, 53, 0, 29,111, 80, 59, 8,126,185,110,219, 59,247,229,247,245,226,179, 88,130,109,228,122,145,116,200,108,136, +161,121, 31,122,157, 65,174,219, 31, 17,145,118, 74, 6,210, 7,206,180,102,125, 95, 95,135, 62,120, 14,246,150,149, 63,140, 46, +152, 25,231,243, 9,167,187,219,199, 57,220,116,187, 9,216, 1,228,246,164, 97, 24,241,108, 31,240, 47,255,197,191,192,239,255, +209,159,225, 43, 95,250,201,186,210, 24, 6, 99,169,151,191, 22,156,244,134, 70,226, 99, 36, 47,207,238, 38,139,101, 37,133, 65, +212, 49, 32,137, 32,101, 51,162,217,237,119,184,217, 69,236,118, 59,100, 37, 32,155,239, 58,177,157, 53,145,128, 97, 24, 23,127, +115,166,106, 81,203, 33, 26,243,185,172,160,220, 18,116, 24,162,241, 97,220,228, 38,249,141,110, 28, 51, 99, 77,231, 60,131,144, + 45,213,141,108,148, 97,102,236,199, 17,154, 51,210,116,194, 24, 3,134, 97, 64, 24, 6,119,210,179, 48,150, 2,219,219,101,204, +200, 78,234, 27,134,232,242,186,209,243,182, 7,136, 88, 97,200, 21, 82, 71,229, 39, 24, 35, 91, 60,175, 93,160, 28,108, 98,155, + 39, 0, 2, 35,123,103,159,230,128,160, 25,187, 72,144,176,195,156,220,248, 39, 11,128,236,206,105,190,170,112,242,156, 40, 87, + 79,120,109,120,188, 89, 0,157, 39, 16, 82,205, 3,153, 69,161, 8, 24, 57,224,201,205, 0,218, 63,169,235,227,135,118,233, 29, +152,167,143,156,208,155, 63,229,114,174,139, 21,182,148, 18, 78,231, 9,119,199, 25,167,187, 35, 36,157,141, 87, 64,132, 9, 12, +201,132, 80,217,107,139,105, 12, 67,161,108,242,176,156, 4,144,180, 20,118, 8, 34,169,173, 71, 4,136,206,165, 96,127,114, 75, + 10,204, 62,204, 88,236,170, 89,205, 18, 72, 8, 65,201,119,250, 10, 45, 43, 15,119,226,204, 37,173, 83,140, 95, 65,146, 17,145, + 13, 65,242,176,163, 50, 80, 71,255, 44, 50,236, 53, 74, 78,118,207,139,128,164,148, 40,191,215,189, 25,156,115,198, 60,103,204, +217,115,229,185, 97,135,115, 99, 50, 79,106,240, 77, 38,130, 56,201, 34,178,177,223, 11, 36,206,101,122,111, 32,242,222,218,165, +213, 45,232,134,164,145, 86, 59,109,186,216,149,202, 61,112, 46, 55,127,183,211,143,135, 1,251,167, 1,207, 15,140,155, 72, 24, + 96,108,208,172, 75,196,172, 77,238,188, 16,122, 58,153,154,122,115, 96,187,141,242,231, 37, 7, 89, 55,103,153,165,148,234,138, +182, 85,202,173,220,179, 86,162,245,238,188, 76,193,186,141, 38,108,237, 87, 33,254,103,173, 59,153,234,229, 94,186, 41, 94, 29, + 98,210, 78,223,126,168,103, 21, 15, 70,160,126,247,125, 95, 97,223,250, 25,108,144,251,218, 61,122, 83,185,106,178, 92, 7, 57, +108,237,160,181, 78,173,107,134, 65, 69,121,154,199, 91,183, 98, 68, 54, 41, 93,146,243,180,115,121, 91,223,147,221,109, 93,199, +246,237, 68,191,205,173, 0, 93, 74,122,174,165,172,210, 10,209,120,156, 60,239,202,243, 23,105,206, 22,217,144, 86,221,241,234, + 9,206,231, 83,141,250, 84, 85,140,251, 27, 12,122,194,175,255,218,191,196,251,175, 19,190,240,185, 31,183,105, 79,201,173, 47, +151,152, 90,166,197,156,170, 24,152, 73,217,104,179,133,186,220,222,222,214,239, 49,147, 33, 93,243, 52,131,153,241,252,173,103, + 24,119,123,204,211,140, 16, 24,129, 3, 66,136, 96,102,219, 97, 83,192, 16, 44,169,139,188,192,149, 48, 15,103,211,217, 97,183, + 58, 43,178, 2,211,156,161, 57,185,235,157,214,116,192,253, 56, 96, 28,119, 6,105, 70, 70,202, 2,145,140, 24, 34,158,222, 28, + 48,142,131,185,223,145, 19,178,148,234, 10,160, 22,129, 2,199,186, 83, 94, 86, 54,130,213, 16,173,184,164,108,187,226, 96,100, +100,113, 83,152, 37, 23,222,214, 9,145,205,135, 31, 0,134, 96,147,123,137, 26,149,236,201,115, 16,196, 72,160, 56, 64,133, 16, + 44, 41, 29, 67, 4, 56,142,181,193,152,147,184, 75,157,173, 37, 98,228,218,112, 21, 51,150,253,192, 24,157,144, 72,126, 93, 50, + 24, 41,157,145, 36,227,201, 64, 24,111,158, 66, 48,192, 42,205, 27,232, 42,168,172,189, 20, 15, 45,228,173, 1, 94,206,169, 57, + 19, 56,205, 24,249,108, 46,124,200, 56, 78, 9,243,241, 4,164,179, 59, 28, 18, 52,205,128, 38, 63,219,217,153,253, 38,177,148, + 98,246,229,204,119, 72,174,123, 90, 55,209,243,149,130, 86, 36, 99, 96, 70, 12,102,227, 91,212, 68, 90,254, 5,226,191, 39,176, +255, 89, 96, 78, 97,222,151,153, 54,168,201, 23,149,212,234,138,152,116,211,246,246, 1, 33, 26, 34,197, 98, 28, 6, 98, 53,201, +162, 26,159, 32,144, 32,176, 88, 13,142,214, 8, 70, 38, 75,137, 11,110,209,158, 0, 86,215,213,134,226, 84, 83, 52,116,218,218, +213, 91, 81,207,190,191, 26, 24,216, 19,234,196, 94, 36,247,101,226, 71,199,188, 70, 7,171,210, 21,229, 76, 91,108,164, 19, 36, +233, 37,169, 92,221,234,175, 33,207, 21,237, 53,169,152, 41,196, 16, 16, 65, 56,101,224,152, 21, 71,129,217, 7, 58, 76,221,238, +154,185,105, 68,184,129,155,203, 39, 66,171,125,177, 49,214,181, 91, 55,172, 39,176, 74, 86, 67,207,150,238,119, 20,151, 48,249, + 37,113, 80, 47,144, 13,237,174,203, 82,224, 91,136, 93,156, 40,164,173,252, 92, 55, 8,250,170,157,163,153, 54,236,108,169,176, + 44,186,248,214,142,236,165, 15, 20,242,213,223,235,137,124, 43,159,188, 21, 65,174, 56,123, 93,204,231,221,115, 52,173, 80, 7, +235, 8, 56, 68, 59, 8, 23,234,122,157,236,213,159, 40, 75,194,249, 60, 93, 57, 87,244, 10,185, 76, 23, 71,190,149, 82,226, 94, + 2,176,246, 72, 21, 20, 77, 58,162,246,107, 0,244,164,224,246, 53,208, 35,135,162,199, 18,231, 46, 95,224,245,134, 96,189,226, +120,242,236, 45,164,187, 79,240, 79,255,199,255, 9, 57, 30,240,165,207,127,214,119,245,188,172,163, 2, 99, 24, 7,176,135,140, +216,206,217, 96,240, 64,140, 64, 1,146, 51,166,211, 9,211, 60, 99,136,140,155,195, 1, 55, 55, 7, 60,123,122, 64, 86,198,237, +217, 66, 85,198,129, 49, 12,209, 2, 75, 28,105, 73,162, 54,233,251,151, 55,132, 96, 12,232,156, 59,178, 82,245, 93,241,230,171, +112, 93,178, 19,253,246,187, 1,187,253, 14, 89,128,233,124,182, 67,155, 76, 38, 6,138,224, 96, 6, 33, 89, 50, 38, 97, 76, 25, +152,147,173,249,230, 57, 67,242,108,201,108, 62,125,149,168,216, 44,185,129,153, 91, 82, 50, 99, 8,112,127,123,120,161, 15,213, +105, 76,156,139,128,226,102,231,143,171, 94,232,217,221,243, 80, 84, 23,158, 40,119,150,128, 52,155, 37, 45,133,136, 89, 3,230, +180,156, 87,145,128,193, 25,102, 89, 81,112,100, 27,146, 92,126,151,179, 32, 48, 87, 20, 98, 22, 54, 4, 83,128, 60, 39,140,122, +198,211,103, 7, 72,124,234,208,239,195, 20,148, 11,212, 78,215, 50,156,141,117,161,239,164, 11,255,197, 60,212, 5, 99, 16, 28, +246, 35, 14,251, 29,194, 48,154,199,250, 60,129,117, 70,100,183, 79,117, 25, 91, 96, 53, 2, 26,187, 79,191,136, 73, 2, 89, 64, +193,215, 35,154,221,114,213,247,232, 78,190,227, 10, 46, 25,127, 33,198,224,205,149,175, 44,100, 57,203,236,117, 42, 40,171, 33, +222,197,236,167, 70,149,251, 96, 24,150,124,116,113,181,134, 37, 19, 10, 56, 50,114, 12, 16,184,242,195, 35,115, 11, 83, 94, 64, +152,149,172, 57, 68, 0,113, 68, 8, 1,163,231, 24,240, 16, 45,122,245,236,146, 12,109, 88,236,235,128, 16,245,229,106,217,177, + 6, 50,221, 93, 37,156,109,184,193,133,118, 15,190,142, 44,237,121, 80, 27,127,123,139,132,182,142, 58,165,198,133,169,157,216, +141,206,149, 83, 70,154,179,121, 3, 19, 53,250,117, 90, 44, 85,169,119, 93,187,204, 95,163, 78,134,129,142,176,183,210,165, 19, +238,245, 48,223,138,140,221,150,234,109,122,168,174, 83,102, 55,136,111, 11,193,173, 86, 15,162, 43,207,143, 7,244,215, 61,217, +140, 87, 92,251,246,125, 87, 31,118,186,116,163,163, 43,100, 56, 85,155, 92,246,129, 12, 54,245,116, 34,197, 21,130,219,102, 18, +159,118,143, 75,157,232,144,106,195,115, 69, 45,142,203,103,163,135,221,102, 26,222,129, 62, 10,190,110, 45,149,219,191, 79,203, +122,234, 17, 59,248,191, 21,233,218, 22, 44,160,247,153, 29,111,236, 4, 20, 24,119, 35, 94,127,244, 62,254,250,163, 91,252,131, +159,255,251, 96,153,240,250,238,232,133, 84,171,149,170,193,237, 86, 44,216,229, 97,145, 25, 49, 68,100,181,227,116,183,223, 97, +127,184, 49,184,154,140,224,117,123,188,131,204, 19, 84,178, 21, 93,101,228,121, 50,133, 78,140, 85,166,197,100,204,111,246,252, +243,194,114, 23,245,195,209,247,253,195, 96, 91,229,192,110,239, 58,248,132,239,102, 57, 57, 39,164,121,198, 52,207,144,108,114, +178,121,158, 29,225, 96,156,167, 25,211,116, 6,196,162,102, 37,103,236, 98,192, 16,131, 91,207, 70, 36,159, 4, 99, 88,130, 67, +168, 70,193,182, 95, 47,103,184,103, 65,206, 22,246, 66,154, 33, 62,209, 83,241,177, 47,132,195,130,124, 64, 17,221,144,102, 96, +135,245,153,144, 57, 96,154, 5,154, 38,111, 40,188, 89,206,201,176, 17, 5, 34, 41,130,163, 27,112,167, 57,118,210, 93, 65,114, + 68,151,102, 85,201,100,113,193,167, 74,114, 45,190,198,136,151, 71, 1, 29, 95, 46,238,114,143, 32,122, 42, 61,246,158,110, 12, +186,200,136,114, 95, 28, 51,190,249,245,128,215, 63,241,115, 56, 79,159,133,230, 35, 78, 57,227,238, 88,166,245, 35,128,220, 60, +129,248,119,218, 89, 96,164,139,201,152,175,164,102, 88, 83,165,146,145,213,226,116,109,239, 77,181,184,104,179,255, 47,100, 75, + 38,246,180,186,226,152,168,203, 26,163,122,220,112, 3,193, 45,106, 39,166,130,194, 16,192,118,150, 20,162,158, 33,193, 75, 90, +155,146, 54, 41,159, 84, 45,109,165, 4, 37, 65, 33,142, 72,236,118, 59,196,234,136,221, 6, 0,248,212,158,219, 99,212,181,220, + 38,152, 55,162, 69, 96, 96, 80,243,184,205,133,229,199,192,142, 20,131, 2, 39, 53,186,253, 5, 19,187,235, 87,245, 98,103, 72, + 27, 7, 38,173,244,212,189,225,203, 74, 18,166, 25, 72,102,201,151,116, 89, 45,244,216, 3, 45,132, 35,234, 35, 63,212,255,187, + 20, 25,110,210,205,138,179, 50,145,141, 89,234,164, 8,109, 37,118,212, 67,239,220,189,163,198, 79, 94,168, 35,142,182, 39, 38, +173, 9, 94,186,152,206,172,251,218, 94,226, 70,221,126, 86, 85,220,116, 66,187,117, 69, 29,142, 55, 35, 74,123,252, 64,117,177, +216,237, 12, 29,181, 15,244,129,182,209,175,101,242,166, 94,154, 70,139,211,146,168,226,148,151, 92,104,106, 38,244,203,152,182, +102, 85,208, 48,246, 43, 36, 77, 23, 52,190,234,117,125,209,188,232,194, 84, 93,208,129, 94,199,126,181,142,149,104, 68,104,159, + 48, 3,244,217,239, 88,140, 78, 90,223,125,109,101,104,205,244,187,181, 35,255,219, 42,230,216,132,249,215, 80,154,110,125, 97, +251,218,223, 60,216, 91,159,250, 20,254,244, 15,127, 15,191,250, 27,239,225,191,249,175,126, 9, 41, 11,190,255,193,199, 72,148, + 76,179,207,132,113, 55, 32,165,236, 5,146, 60,190,212, 16, 21,118, 63,114, 77,102,232, 18, 67, 0,199,128,211,235, 19, 32, 25, +196, 54,213,198, 16, 76, 90,230,114,178, 57,155,115,195,126,103,161, 41, 89, 21, 41, 59,131,221,167,118,153,230,166, 53, 93,148, + 30, 41, 37,132, 24,176,143, 86,216, 85, 9,211,156,144,189,225,228,121, 6, 19, 89,190,249, 41, 1,146,109,231, 46, 25,187, 8, + 40, 13, 8,206, 28, 39,223,211, 11, 25, 31,160,112, 57, 52,154,222, 30,226,226, 49,118,223,112, 55,213, 41,247,111,100, 2,107, + 6, 13,140,243,196,198, 74, 15, 84, 45, 94,153, 50, 2, 7,164, 84,166, 79, 11,252, 24,163,157, 69,153,140,208, 37, 89,192,152, + 64,209, 89, 82,106,123,224,192, 86,186, 89,141,213, 62,123,101,229,198, 25,143, 66,196,156, 96,188,128, 96, 62,245, 36, 25,138, +140, 29, 43, 52, 14, 21,113, 20, 85, 60,139,130,155,231,207,240,250,229, 13, 6,189, 3, 40, 62,192, 43, 93,237,216,208,184,120, + 54, 27,118, 90,161,189, 45,108, 63,101, 2, 77, 25, 83, 58,225,227,219, 25,250,250, 14, 17,130, 97, 24, 49,113,172, 86,170,128, + 25, 34, 45,188,157,197,142,213, 2,180, 74, 76,139,147,234, 52,120, 98,107,170,235, 15,245, 8, 90, 10, 1, 80, 94, 94,171, 40, + 2, 27,103, 11, 58, 24, 73,211,255, 14,187,137, 82, 33,157,195,253,220,209, 36, 48,154,210,192, 35, 85, 61, 51,221,254,187,200, +167,114, 73, 80,175, 50,217,154,167, 66,126,134,202, 18, 72,163, 89,160, 89, 64, 44,144,148, 16,101,225,134, 57, 33, 78,193,190, + 51,206,229,163, 40, 14,117,238, 3, 60,179, 95, 14,159,114,163, 31,142,137,217, 48,127, 53,227,255, 25,203, 20, 44,197,230,212, + 79, 4, 65,239,231,141,106,140,143,206,171,187,141, 12,181,110, 28,139, 94,184,196,228,109, 16, 48,104, 35, 41,110, 77,178, 18, + 93, 17,156,168,129,233,136,160,108, 76,118,109,216,109, 84,104,253, 94, 80, 24,122,129, 34, 85,251,207,106, 71,173,171, 34, 76, + 93, 85,165, 70, 22, 77,186, 77,130,235, 11,219, 61,206,123,126, 51,162,250, 22,183,251,185, 53,233,106, 41,188,109,192, 73,253, +113,109, 73,120,125, 83,193,222,153,138,246,147,178,125,137,238, 41,246, 53,255,153,160,146,155,132, 53,183,173,173,241,244,122, +105, 84,209,189,199,181,250, 66, 46,165,110,212, 79,215, 75, 30, 59, 93, 78,252,218, 7,226, 92, 11,106,107, 89,184, 53,114,216, + 19,156,232,202,244,187,232,215,169,213,193, 45, 30, 1,143,144,175,233,223,104, 65,215,235,147,247, 86,197,215,235, 56,135,186, +237,171, 18,240,206, 91,207,241,239,254,205,191,194,215,191,246,211,248,217,175,127, 29,199,223,251, 46, 62, 17,143,103,117, 93, +250,110, 55, 84,115, 14,101, 70,202,201, 26,207,114,183,120,140,232,254,112,131,227,105,178, 29,114, 28, 64,200,120,250,228, 0, +225, 1,113, 78, 16,142,230, 76, 87, 44,108,213, 92,213, 34, 3,211,188,184, 84,164, 57, 99,136,236,147, 57,124,111,109, 75, 62, + 11,118, 49, 99, 18,114,199, 53, 85,197,116, 58,185, 89,206,136,147,206,134, 46, 4, 54,141,121,202,102,160, 19, 71,136, 36, 75, + 99,227, 96,112,171,191, 22, 21,113, 36,194,160,226,236, 56,102,136, 1, 83, 90, 38,244, 2,243, 2,140, 48, 70, 76, 51, 1,115, +194, 16,173, 16, 39, 53,168,152, 25,149,121, 29,131, 33, 28, 25, 64,240,239, 90, 18,191,142, 57,129,121,105,184, 57, 16, 2, 5, + 51,219, 41,231, 20, 17,166,100, 38, 41, 35,102,132, 33,154, 25, 10,249,116,234, 22,168,236,129, 53,170,118,239,102, 81, 39, 22, +218, 57, 41, 96, 12,164,120,251,173, 3, 94,127,248, 41,224,246, 53, 16,239,135,155, 58,155,142, 46,102, 88,175,222,110,228,171, +180,242, 31,199, 76,160,121,198,147,221, 4,196, 17,183,119, 51,166,243, 11,219, 67, 15, 1,105, 26, 33, 46, 65,100,205,182, 89, +192, 66, 68,171,249, 0, 72, 53,129,141,148, 22,174,140,107,218,139,193, 80, 61, 3,201,148,239,220,229,109,169,171, 27, 24, 1, +128,248, 20, 72,133, 85,239,223,121,110, 76,199,200,135, 70, 51,250,113,163,153,230,219,190,184,218, 1,172,132,236,196, 88,114, +210,111,246,139, 24,154,200,180,202, 38, 18, 49,205,124, 80,237, 18,213, 10, 79,189, 24,221,179,150,212, 25,173,246,137, 34,132, + 25,132, 9,132, 68, 11,228, 29,200,152,150,199, 76, 56,119, 26,118,135,190, 92, 22, 23, 89, 17, 73, 27,151,227,149,204,135, 22, +248,190,202,179,104,137,193,171,111,165,192, 19, 74,221,170,154,215,172,248, 43, 2, 33,189,232, 6, 23,127,248,198, 58,109, 37, +157,179,152,190, 78,249,212,190,206,149,238, 72,117,123,216, 89,203,249,214,194, 60,189,151, 27,170, 27,196, 52, 52,114,172,254, +253,173,229,108,178,177,227,150,166,208,244, 63, 75, 23,207,139,198,211,160, 20,106, 89, 95,163, 7,100,108, 23,238,115,205, 4, +208, 13,137,138, 11,254, 66, 47, 89,187,156, 64,175,153,171, 92,240, 58,252, 53,154,145,197, 18, 95,216,114, 3,168, 97,216, 83, +251,223, 43,115, 26, 85,189, 72,210,235, 16,165,150, 83,241,195, 16,220,240, 35,231,189,172, 10,186, 94,239, 32, 30,251, 75,180, + 35, 10,132, 97,196, 33, 42,254,215, 95,251,117,204,136,248,202, 79,127, 9,159,250,212,219,136,131, 77,226,146, 77, 42,182,219, +239,170,109,105,225, 20,196, 24,145,114,198,121,154,145,179,253,183, 40, 48, 77, 19,134,200,120,246,244, 41, 50,141, 72,115,194, +232, 12,242, 33, 70,140,187, 17,113, 28,144,242, 12, 38,155,216,152,217,251,238, 50, 65,143, 24, 98,240,148,182,232,250,222,132, +192,132, 39,251, 61, 66,136,152,147,216,212,239, 18,177, 52,207,152,179, 96, 78, 9, 36, 9, 68,108,176, 44, 17,146, 6,168,204, + 24,227, 96,147,180, 74,205, 31, 71, 97, 70, 55,247,120,105,160,179,122, 3,146,115, 13, 0,169,141,104,137, 6, 85,177,102,153, + 2, 52, 11,184,236,131, 75,204, 41, 53, 57, 15,164, 56,101,193, 60,157,193,106,142,121, 22,165,170, 30, 62,227,156, 20,182, 41, +158, 60, 20, 71, 68, 16,116, 50, 66, 88,136, 80,216,115,205, 62,153,135,104,251,222, 16, 44,239, 59, 6, 32, 81, 64, 78, 25,208, +185,158,102, 41, 43,158, 12, 25,251,183,222, 66,194, 30, 54,234,222,119,243, 45, 9,149,143,106, 83, 75,225, 47,131, 4, 1,175, + 18,227,197,139, 4, 58,125,130,195,129, 65,251,103, 56,205,140,233,238, 14, 65, 78,216, 13,132,195, 24,177, 27, 24, 8,214, 36, + 74,182,138, 86,214,196, 35, 27, 66, 97, 43, 63, 15,229, 33, 87, 60,101, 67,158, 11, 78,154, 0, 76,217,208,159, 57,139, 95,131, +106, 24,187,248,233, 55,132,115,117,253, 59,124,253, 67, 78, 26, 37, 6, 40,152, 37,112, 52,182, 27,132, 99, 45,242, 16,179,227, + 77,217,119,245,101,105,224, 43, 15, 91,121, 59, 49, 47,103,176, 36, 48,102,187, 71,156, 15, 48, 57, 82, 0, 91,233,219, 7, 37, + 14, 27,136, 19,223, 10,179,189,144,130,196, 93,198, 36, 19,102, 81,156,197,244,236,128, 32,136, 65,202, 93,138, 88,179,151, 8, +196, 24,152,176, 71,105,234,180,163, 68, 22,211,124, 39,171,250, 63,181,237, 39,156,229,220, 23,190,174, 44, 54,235, 64, 90,161, +137,221, 49, 91, 23, 59, 82,167,118, 99, 70,182, 17,163,139, 33,203, 37,195, 79,107, 26,157, 82, 79,150,171,244,200,123, 72, 77, +180, 34,126,193, 59,111, 96,219, 22,247,154,236,173, 94,141,245,148,165,168, 41, 68,184, 40,226,232, 24,250, 90,137,129, 82, 75, + 23,173,138,248, 22, 89, 45,183,197, 92, 23,249, 27, 26,226, 34,182,100,108,218, 19,192, 68, 47,139,223,154, 10, 87,148, 7,116, + 65,212,211,109,166,184,110,105,217, 27, 52,197, 9,147,180, 52,184,151,235,244, 90,188, 47, 53,244,168, 22,196,219, 51, 6, 93, +153,180, 31,187, 79,124, 19,149,208, 99,225,246,254, 90,209, 70,159, 75, 61,228,244,128,127,119,183, 56,243,142,246,233,179,183, +240,103,127,250, 39,248,189,223,251, 46,190,240,133, 47,225,221,247,222,195,147, 39, 79, 48,142,177,126,190,195, 48,184,172,205, +138,115,246, 2,203, 32,228,116, 54,194,147, 31,171, 49, 88,211,117, 78, 4, 73,147,147,149, 34, 98, 28,188, 49, 48, 98,218,126, + 24, 64,108,174,112,195, 24,221, 30,213, 29,233,192, 86,216,200,227, 73,213, 86, 98, 67, 12, 64, 48, 89,217,156,102, 39,199,101, + 8, 24,231, 36, 56, 31,111, 1,153, 17,189,120, 79,211, 12,146,140,231,163, 77,204,217, 51,220,166,148,145,115,182,232, 87,151, + 61, 65, 21, 67, 96,159,248, 76,158,151,211,140, 98,200, 51,123, 44,104,174,164, 52,203,211,182,224,150,224,197,221, 73,189,210, +192,211,190, 87, 15,102, 13, 7,205,128,230, 25,162,217,141, 80,168, 54,230,170,192,156,178, 23,181,229,163, 13,126,206,206, 26, +204, 43,221,225,222, 65,179, 61, 39,204,177,140, 69, 48, 12,132,153, 77,118, 71,146, 43, 19,158,152,145,148, 16,114,194,243, 39, + 3,116,247,220, 88,228,247,212,243,218, 51, 95,233, 34,117,163, 1,111,117,236, 68,192, 36,132,233, 40, 56,221,126,132,249,248, +202,209,244,157,193,221,243, 12, 72, 2, 71,198,184,219,225,201,205, 1,187,253,222,154, 34, 53, 43,214,125, 36,236, 6, 2,141, + 12,196, 17,160,104, 6, 63,110,140, 20,120,209, 97,129,221,108, 70, 1,202,142,158, 72, 54, 93,184, 24, 71, 65,154,212, 59, 16, + 53,241,220,161,158, 87,166,155,103,168,186, 5,177, 24, 25,209, 62, 39, 6, 35, 58,255,172, 88,207,100,139,100,205,166, 71,103, +191,174,234, 59,248, 49, 0, 97, 32, 8, 5, 75,209,211, 98,236,228,123,254, 58,149,147,120,180, 28,117, 80,237,250,144,102,136, +177, 51, 69,188, 1, 48,136,160,152, 29, 6, 6,134, 2,207,118,100, 46, 70, 38,194, 12,216,132, 15,234, 2, 21, 66, 19,128, 33, +186, 88,183, 44, 31,173,244,187,226,139, 57,141,170, 17, 67, 99,152,186, 25, 16,210, 51,125,169, 2, 24,133,173, 88,172,254,218, + 78,129,187, 67,142, 22,153,153,182,187,126,237,118,179,219,211,248,234,240,111,166, 94,129,118,204,243,251, 78,123,109, 76,219, + 47,244,223,235, 50,190,225,209,222,153,171,172, 38,232, 53,110,160,208,171,143,177,102,182,235,214,239,109,176, 95,251, 21,238, +198,227,235, 50,253,114,123,127,104,239, 7,112, 73, 94,219,184,210,107, 45,187, 72,223,156,164,185,178,136,175,211, 28,139,110, +191, 73,102,127, 68,181,189,216, 6, 60,114, 64,161,141, 79,243,161, 96,186,251,111,153,199,190, 88,197,198, 77,177,189,143,167, +254,212, 54, 34, 53, 99,140,140, 63,248, 63,127, 31,162,192,187, 63,246, 25, 28,158, 62, 3,135, 17,251,253,128,193, 37, 96,198, + 96, 39, 68, 47,240,170,140, 33, 14,128,154, 75,219,235,211, 4,205, 25, 79, 14,123,196,184,131,202,236,190,233,131,193,195,108, + 58,107, 14,198,158, 15,113,112,164, 45,187,132,137, 49, 14, 92, 39,227,156,178, 37,164,145,184,124, 40,184,159,124, 70,154, 18, +134,192, 24,130,185,221,205,105, 2,201,140, 24,236, 80,159,146,231,141,179, 98, 8,192,205,211,231,152,104,143,243,249,136,121, + 78,206, 3, 48,183,182,232,222,238, 69, 66, 85,118,226, 4,235, 28, 73,196,195, 96, 20,105,158,125,245, 32, 62,229,195,223, 83, +116, 83, 19, 99, 89,179, 67,178,133,223, 19,124,253, 51, 11, 16, 92, 71,175, 96, 48, 9, 98,228,250, 26,204,104,199, 18,200, 6, +214,154,189, 18,216,252,248,161,132,128, 4, 14, 64,224,136, 56, 48,116, 24,161, 26, 92,194,230, 6, 84, 8,136,154, 16,131, 0, +193,132,114,201,229,239,148, 20,159,190,201, 56,188,243, 14,146,238,221, 91,253,254,239, 65, 43,203,188,255,190,213,134,232,102, + 67,230, 81,129,227, 81, 65,114,135,147, 40,242,249, 12,202, 19, 66,201, 76, 87,219, 37, 27, 98, 1,140, 99,192,225,102,135, 48, +238, 16,137, 49, 6, 2,198,128, 16,119,136, 60, 66,217, 33,114,144, 7,163,152,167,190,128,171,103,126,128,130,120,201,162, 23, +101,219, 99, 75, 2,147,172,236,203,201,227,126,201,238, 51,247,129,177,166,141,151,164, 54,127,157, 1,179,165,244, 49,170, 47, + 65, 32,170, 33, 45, 2, 32, 8, 48,120,147, 87, 34, 96, 7, 2,226, 64,224, 97, 0, 33,130, 68, 65, 98,126, 44,145, 26, 15,108, + 89,201,104, 4,171,228, 53,178,244, 30,177,245,186,123,237, 22,243,124, 79,160,241,221, 73,104,184, 78,226, 26,113, 82, 65,242, +127,175,240, 5,245,147, 80,203,176, 22,215,119, 46, 14, 68,205,207,208,198, 45,227,251,100,190,150,203,126,223, 97,165,151,144, +185,108,133, 8, 53,249,216,173, 52,170,101, 56, 87,247, 53,237,137,109,186, 1,195, 75, 3,233,166,182,137,113,222, 1, 61, 48, + 45,213,231, 21,221, 30,174,180,217,233,118,251, 98,169, 13, 77, 65, 46,186,114,121,193, 54, 95,244,249, 68,235,194,222,198,193, +186,191, 1,245,205,160,174,216,241,186, 34,153, 21,141,247,122, 47,174,170,149,164,103, 55,244, 34,253,178,123,164,245, 23, 40, + 76, 97,186, 56, 26,234,117,184,200,180,237, 27,155,107,215,123,105, 32,196,249, 33, 27,242,190,149,170,163,222, 59,173, 74,224, + 30,179,186,107,177,234,180,217,170,253, 8,251,243, 45,182,192, 35, 59,142, 50,241, 19, 22, 27,225,174,145, 82,197,254,176,199, + 7,239,127, 15, 47, 95,126,130,231,111,191,141,183,223,122,134,211,237,107,104, 14,102,223,153,206, 24,198, 61, 68,128,121, 58, +215,160,148,192,132, 41, 37,188,126,125,135, 12,114,163,150, 1,146,196, 51,208,131, 65,194, 98, 69, 17, 49, 32, 75,198,126, 48, + 8,121,154,147, 19,224,108, 84,137,113, 4,179, 24, 33, 46, 4, 12,140,154,126, 6,223,153,134, 0,119,237, 34, 48, 71, 95, 35, + 42,198,221,136, 87,199,140,148, 79,102, 80, 2, 91, 29,156,178,226,238,147, 35,114,154, 65,146, 76, 39,207,128, 82,192,233,156, +177, 27,128,253,126,176,134,193, 28, 78, 48, 48, 97, 70,132, 22,217, 84, 74,136, 62,229, 5, 21,168,147,220,152,204, 1, 83, 68, +144,197, 97, 96, 39,148, 22,136, 87,157, 24,194,149,112, 42, 0, 51, 88,216,144, 54, 37, 40,179,101,193, 19,160, 33,128, 53,131, +131,121,133, 51, 53, 12,122,135,242, 19, 89,245, 32, 24, 33, 44, 66,160, 12,100, 53, 98,222, 46, 36,200, 24,145,133,145,148,145, +147,197,126, 70, 88, 49, 26, 3,225,157,119,159,227, 47, 94,188, 11,189,251,115,208, 16,239, 65,211, 31,207,123,215,213,151, 40, + 18,240, 74, 9, 31,189, 36,124,233,248, 2,225,112,198,168, 1, 41,204,200,129, 64,137,129, 16,192, 25,136, 81,145,133, 17, 36, + 97,140,128,196, 8,205, 1, 89, 51,132, 0,228, 1, 68, 69, 6, 25,170, 93,180,212,178, 43,221, 48, 96,235, 95, 66,112, 55, 56, + 37, 32,169, 32,102,131,148,217, 7, 74,241, 51,138,200, 73,212, 68, 75,106, 26, 1, 44, 84, 73,188, 86, 63,170, 70, 12,193, 7, +217,228,104, 76,177,168, 77,234,228,111, 22, 40, 69,136, 12,174,100, 48, 15,251, 16,163, 17,242, 28, 93,136,157,150,124,237,173, +214,236,176,225,246,167, 45, 28,186, 20,217,114,232, 50,148, 20, 17,102, 80, 99,230, 41,228, 12,240,165, 59,107,109, 76,203, 81, + 40,208,149,228, 77,171, 23,110,233, 84,209, 48,210,123,253,148, 94,206,150, 43,203,212, 54,214,180,151,101,105,199, 94,239,102, + 27, 89,145,192, 22,250, 93,179,127, 70, 67,152,234, 79,229,146, 89, 94, 92, 3,239,131,225, 47, 97,250,133, 80,182,236,161, 8, +155,146,128,166,146, 44,250,233,141, 10,223,202, 42, 58,174,158, 94,233,166, 55,138,120,247,154, 86, 5,159,182,174, 7, 93, 52, + 0,173, 45,170,170,174, 68,101,205,190,218,223,183, 10,144,105,139,151,224, 59,204, 21,131,188, 60,102, 33,184, 80, 3, 59,105, + 33,179,108, 82,224,112,209, 88,212,171,208,233,253,181,243,161,175, 77,144,174,109,149,174, 24, 20, 93, 33,158, 17, 45,132,125, +253, 17,247,232, 15, 31,160,107,247, 35,186,223,214, 14,141,141, 49,181,250,140,203, 87, 24, 99,196,237,221, 29, 94,188,248, 24, +159,123,235,109, 60,123,254, 28,175, 94,191,198,233,213,173, 47,187,156,230, 51,142, 32,168, 37,167,205, 9, 4,198,156, 50,224, +150,177,187,225,169, 17,145,144,221, 32,133, 49, 14, 86, 48,111,239,142,166,235, 21, 59, 8, 99, 24, 48,120,162,153, 69,187, 50, +114, 54,107,212, 34, 5, 11,113,132,128,145,243,132, 93, 52,219,213,115, 18,236, 71,179,146,157,146, 73, 49, 66,136,152,166,140, +243,121, 50,219, 84, 95, 18,227,205, 0, 0, 32, 0, 73, 68, 65, 84,255,108,231,100,167,217,160, 51, 34, 51,206,217,164,104, 76, + 62, 41, 65, 48,205,198, 90,143, 67, 0,171, 5,185, 36, 98,228,201,164,106,202,214, 52,104,224,106, 46,165,238, 2, 70, 76,230, + 21,175, 12, 21,130,164,134,231, 66, 90, 39,124, 35,247, 49, 34, 71,164, 16,144,179,133,148, 44,105,112,245,147,170,212, 7, 21, + 67, 2,163, 10,136, 66, 93,203,137,167,239, 25,203, 93,106,226,157,114, 4,170,109,172, 88, 80, 79,182,196, 51, 81, 1, 35, 35, + 4, 69, 38, 91,141,188, 51, 38,188,254,204,167,241,226,255,253, 24,163,220, 1, 60,174, 20, 52,215, 85, 30,215,167,244,190,186, + 51, 1, 39, 0, 31,188, 12,248,234,139, 15,241,236,217, 71,192,225,109,228, 20,144,101,103,126,232,147, 5,164, 4, 16,198,145, + 32,216,129, 84, 49, 4, 66, 30, 35, 36, 11,134,217,104,224, 2, 53,103, 84,246, 98,236, 40, 8,249, 90, 86,252, 62,207, 94, 38, +130, 75,199,196,125,218,129,128, 89, 24,148,125,210,166,224,147,191,161, 32, 4,241,129,100,177, 99, 51, 30, 5,251,240,185,112, +163,172,136, 11, 8,118,127,164,220,248,174, 20, 21,215,236,181, 16,217,207,229,130,190,200, 18, 84,102, 69,125,109,108,162, 23, +211,233,122, 40,110, 93,213,106, 43, 64,230,188,214,177,163, 11,137,204,167,251,212, 24,102,175, 61,231,130,215,105,193,226, 32, +132, 10,122,182, 28,245,166, 9,208,181, 54, 90,239,183, 95,213, 13, 8, 94,155, 59, 71,215, 75,120,170,123,243, 70, 49,185,128, +188,157, 44,170, 36,187, 81,149,196,213, 98,124,241, 58, 55,107,237,198, 28,213, 60,126, 39, 21,107, 26,146, 54,147, 88, 31,147, +207,189, 81,152, 55, 11,120,127, 13, 46,126,127, 45, 87,187,242, 62, 91,230,125,249, 57,193, 18,112, 80,180,204,165, 98,234, 70, +163,208,166,159,161, 97,196,183,153,180,122, 17,242,162, 93, 24, 13, 54, 27, 19,185,100,214,119, 36, 62, 90, 61,151,214,144,141, +203,125,136, 94,188,231, 69,253,112,105,169,190,134,216,137,157,116,163,242, 67, 79,229,111, 58, 13,109,236,116,182,245,107, 23, +143, 75,151,138,130,174,168, 7,124,242,201, 75,124,244,209,135,248,226, 87,190,142, 41, 41, 66, 24,176, 63,236, 64,211, 18, 9, + 52, 12,140,105, 8,120,253,250,136,172, 51, 36,153, 62, 60,229,140,195,225, 0, 38,115,104, 15, 4,135,215,109,138, 49,163, 14, +131, 56,121,136,174,217,205, 38, 67,203,103, 75,141,139,140, 33, 68,144,239,206, 77,131, 12,179,111,117,201,154, 34, 64,230, 25, + 26, 2,166,188,179,137, 30,230,226,149,100,130,164,185,255,254,170, 21,245, 16, 71, 40, 51, 88, 12,166, 15, 30,137, 90,245,228, +115,178,204,237,192,150,254, 38, 64, 32,147, 74, 33, 39,128,204, 88, 4, 98, 54,174,230,168,107,254,241,102,204, 51, 96,128,169, +135,146, 47, 95, 5,168, 54,165, 41, 11,136, 51,198, 17,246, 88,152, 43,146, 42, 98,175, 51,120, 2,157,138, 21,109,150,132,200, + 12, 98,231, 76,101, 71,157, 20, 96,100,196, 32, 8, 49,120,218,151,218, 53, 98, 64,185, 52, 69,134,114,236,216,196,206,105, 54, + 52,193, 82,220, 4,163, 36,124,246,157, 3,110, 95,127, 30,249,253, 63, 70, 24,147,157,234, 69, 73,244,192, 29,189,182,208, 94, + 16, 61,234,134,193,153,129,191,126, 29, 64, 47, 94, 97,247,119, 62,192,171,155,207,130,207,207, 17,211,107,200,110, 97,188, 3, +201, 24,235,108,238,131,101, 71,190,231, 17, 66, 10, 14, 39,128, 7,103,147, 79, 0, 51,136, 34, 2,103, 67,160,220,220, 40, 9, + 1,217, 10,174,168,248, 36,206, 85,214,106, 5,182,240,171,202,222,212,178, 13,140,171, 38,222,168, 27,234,204, 84,242,111,236, +113, 10, 9,171, 88,191,177,163, 48, 20,128, 92, 21, 67,217, 21, 30,228,159,111,170,114, 56, 21, 59,199,136,184, 14, 76,177, 88, +227, 17, 46,211,198, 22,178,155,118,118,157, 76,203,110, 83, 74,124,168, 55, 7,137,128,236, 55, 78,108,200, 95,229, 67, 41,147, +127,213,123, 99,145,138,173,227, 55,214, 33, 34, 45,148, 72,141,236,237,126,162, 81, 99,204,114,117,191,168, 87, 80,201,254,176, +211,186, 78, 95, 5,203,116, 7,183, 75, 2,137,218,124,171,250, 24,180,149, 58, 72,215,161, 86,106, 52,225,117,254,164,229, 49, + 43, 43,187, 93, 93,104, 5,194, 87, 19, 39,186, 37,128, 42,109, 23,251, 71, 77,231,189, 92, 13,104, 95,211,202,148,103, 37,157, + 35,135,222, 69,169, 91,239,108, 53, 0,149, 61,220, 76,252,229,189, 94,192,236, 87, 94,163,138,221,180,212, 33, 60,218,200,106, + 86,144,127,183,235,215,198,213,160,197,150,244,225,194,170,173, 28,115,181, 18,106,100,121,128, 7, 76,116,192, 70, 63,211,208, + 3,166, 56, 63, 84, 49, 87,189,130,119, 94,195,221,177, 52,172, 5,201,211,203,165, 18,145, 77,220,127,249,215,239,227,231, 68, + 42, 17,142,134, 1, 41, 43,246,251,157,155,152, 5,224,110, 2,221,157,161,202,110,232, 98,102, 47,175,134,215,120,235,237,103, +216, 15, 35,102, 26, 29,138, 52, 93,186,102,219,175, 43, 24, 41, 41,118, 44,216,239,204,131, 61,237, 71,176, 8,166, 52, 33, 99, +196, 64,192, 48, 4,164,204,213, 0,198,216,242, 6,175,134,194, 86,158, 39,176,102,156, 11,107, 92,109,199, 41, 98, 65, 44, 42, +166, 37, 55, 23, 66, 1,192,230,204,182, 27, 32,228, 94,247,100, 16, 49, 71, 91, 39,144, 16,230,212, 40,107, 64,110, 22, 98,247, +160,161,243, 25,177, 4,112,168, 88,112,135, 8, 6, 34, 76, 28, 48, 75, 6,231,140, 24,141,137, 78, 76, 32, 1, 34, 27,153, 45, +137, 79,116, 37,115,131,225,129, 36,106,204,118,113, 98, 91,185,125, 56, 64, 51, 65,114, 70,160, 34, 37, 76, 16,101, 4, 48, 52, + 68,243, 17,208, 25, 9, 17, 9, 12, 18,128,178, 77,230, 67, 32,196, 49, 32,229,209,162, 94,117,198,192,150,132,246,132, 19,222, +121,239,109,124,255,229,187, 8,211,247,141,229, 72,247, 40, 46,238,217,189,171, 94, 34, 71,100, 47, 31,255,207,109,192,221,247, +143,216,233, 95, 65,195,207, 2, 58, 34, 66,145,153,161, 49,130, 89,192,228, 90,252,108, 40,113,140,132, 68, 17, 34, 12, 10, 2, +162,157,251, 34,176,115,153,114, 89,199, 87, 13,123,112,195, 34,113,222, 67,238, 52,227, 0, 72, 22,197, 84,155, 87, 65,169,174, + 27, 5, 10,245,213, 72,114,146, 97, 13,129,161,198, 14,141,122,117, 64, 96,212, 0, 36, 99,198,231,138, 8,170, 4, 95,143,107, + 93,187, 22, 89,173, 42, 33,252,212,231,223,251,206,241, 52,217,158,137, 46,139,187,254,127,180,189, 91,175,100,215,145, 38,246, + 69,172,181,119,230,185,214,189,138,197,162, 72,138, 20, 69, 81, 18, 91,221,237,238,105,184,199,118, 15, 26, 6,198,104,140,167, + 31,198,131, 25, 79,195, 3,248, 6, 3, 54, 96,216, 47,182, 1,191,232,193,191,196,127,192, 79, 54,140,241,192,126, 24,195, 51, + 99,117,171, 37, 81, 20, 37,138,215,170, 98, 85,145,117, 63,117,206,201,204,189,215,138,240, 67,196,190,230,206, 60,135,106,185, + 0, 9, 82,213, 57,121,217,185,115, 69,196, 23,223,101,196, 98,111,164, 98,220,121,210,116,241,149,218,151,133,245,229,113,157, +196, 76,122, 16,187,162, 31,252,210,155,132, 91,135, 30,151, 10,140,246,253, 52,128,240,105,114, 15, 58,112,125,211, 97,145,217, + 6,107, 78,231, 92,140,203, 4,173, 49,159,105,234,189,248, 11, 19, 26, 62, 14,209,116, 53,167, 9,230, 52, 77,176, 2,198, 7, +252,148,215, 90,211, 64,141, 31,183,191,166,234,138, 37, 77, 19, 10, 39, 39,254, 77, 26,249,233,216, 85,208,186, 55,254, 57, 46, +248,154, 75,220,208, 5,111, 72, 63,155,174,119,212,243, 89,167,193,205,179,177, 60, 14,244,246, 29, 92, 69,125,105,205, 89,143, + 49,154, 52, 26, 56, 98,176,219,118,134,108,115, 10,208,216,221,142,232,204,120,218,223,108, 34,223,178,192,223,210, 52,244,189, +225,169,183,154,155, 98,172,180, 92,145,148,144, 53,224, 59,239,188,141,186, 94,161,174,204,225,108, 85, 39, 16, 7,196,162, 4, +199, 2,171, 58,227,116,177, 68, 93, 45,145, 82,237, 42, 57,219,217,238,239,239, 98,239,224, 2, 6,214,178,126,128, 20,209,200, + 76, 5, 3,151, 14,230,184,112,225, 2,246,246, 15, 48,155,237, 0, 69,137,211,101, 54,182,124, 32,196, 98,102,211,189,203,125, + 66,140, 70, 18, 99, 5, 71, 19,206,198,192, 0, 71,212,117, 66, 93,173,144,146,165, 95, 53,252, 13, 70,151,240,197, 4, 51,139, + 9,100,182,174, 78,208, 99, 14, 94,244, 74,191, 64,205,170, 66, 81,165,134, 37,109,208,108,206, 25,164,130,136, 12, 4,130, 82, +244, 29,169,101,122,131,109, 74,172,151, 85,235,183, 31, 60, 47, 62, 4,130,112,129,148, 9, 82,175, 12,182,109,156,207,220,201, + 78,178,180, 50, 85, 35,134, 82,187, 4,101,127, 63, 69,104,115, 94,187, 60, 2, 37,228, 36, 96,212,200, 20,144,171, 12, 72,229, + 81,163,141,148,142,157,188, 42,136, 36, 8,209,138,169, 42, 99,111, 22,112,138, 25,150, 71, 47, 16, 80, 65, 61, 27,252,220,176, + 83,187, 58,211, 73,238, 7, 51,240,100,201,120, 13, 75,188,241,173,136,147,253,223,129, 44, 20,200, 47, 0,202, 16, 33, 68, 5, +202, 32, 70, 36,139, 69,219, 64, 55, 22,175,234, 30,247,109, 90, 91, 54,239,127,201,181,125, 6,141, 85,185,152,251, 30, 27,179, +208, 21, 25,161, 85, 97,161,205, 41,160,222,226,151,214,191, 98,228,195, 45,251,222, 91, 76,125,147,155,168,221,129,147, 37,181, + 35, 43, 53,133,182,141, 9,103,203, 90, 39,237,201, 26,135, 22,228,101, 12, 8,223,124,229,218, 15, 23,139,202,165, 92,180,129, + 92, 70,131, 66,222, 91, 69,175,205,196, 58,250,226,107,243,187,126, 91,133, 94,147, 48,120,124, 26, 30,218,230, 56, 53,220, 13, +117,150,129,163, 98, 54,158,126,123,190,206, 83, 89,173, 83,187,206,109, 53,166,157, 94, 39,232,204, 52,176,214, 29,170, 7,186, + 29, 50, 13, 28, 72,187, 98, 75, 27,167,117,108,101,238, 99,226,208,167,181,166, 64,123, 21,136,116,170, 48,244,190, 60, 27, 45, + 99, 55, 20,235,141,117, 96,115,166,250,248,158, 58, 87,179, 48,241, 36, 58, 81,216, 55, 22,218,254,218,162, 31,120,191,109, 69, + 49, 32,230, 97,164, 4,233, 21, 96, 58,135,223,251,214,107,187, 41,208,167,151,101,191,241,241,244,111, 88,204,117,152, 40,115, + 86, 65, 31,115,110, 8, 35, 91,185,225,159,178,136,184,247,224, 43, 92,185,241, 50,222,120,229, 38,238,125,249, 16, 85, 85, 67, +115,221,153,174,112,192,209,139, 83,172, 22, 75, 52, 1, 40,169, 78, 80, 17,135,214, 75,204,102,115,236,204, 11,223, 69,218,129, + 90, 4,177, 48, 21, 2,246,231, 5,246, 46, 92, 66, 40,247, 80, 20, 51,112, 81,226,171,163,132,227,103,207, 17, 41,187, 29,167, +105,188,219, 44,117,119, 90,179, 34, 25, 90,163,145,166,145,171,179, 98,185,172, 44,187,218,155,129, 38,105, 46,231,100, 50,223, + 96, 62,237, 57,101,236,148,140, 80,150, 38, 67, 99, 70, 25, 3, 98, 89, 34, 11,185,153, 72, 64,170,147,121,204,251,101, 11,108, +251,209, 88, 20, 88, 73,132,166, 26,196,140,156, 5, 69, 36,112, 40, 33, 30,179,153, 83,106,245,239, 68, 48,179,152, 44,136,193, + 57, 75, 13,226,208, 31, 1,200,176,248,208,114, 87, 26,118,184,175, 72, 2,129,163,237,206,155,244,202,172, 62,176,185,113, 74, + 3,225, 19,204,112,199,227,204,188, 15, 48,130, 88,140, 17, 28, 3, 18, 34,170,236, 48,255,188,196,209,178,132,158, 62,181,196, +178,150, 16,125, 94,138,220,244,173,217,120,144,188, 80, 32, 28, 3,127,251,214, 83,208,183,190,137, 19,249, 38,234,213,137,161, + 48, 4,203,126,103,184, 47,122,105,177,172,196,173, 21, 46,162, 33, 16,117,130,231,145, 91,186, 94,110, 86, 73,210,131,205,197, +200,136,230, 3, 31,218,233,157,220,164,134, 60,245, 79,168, 33,201, 13,207,219,208, 4,129,185,181,122, 91,164, 65,230, 43,160, + 22,121,219,196,224,194,215,216, 89,105,200,253,105, 19, 67,209,121,209,187, 31,189, 5, 28,217,154,106, 86, 22, 54,169,167,101, + 13,238, 16,195, 65, 38, 58,245, 18,216, 90,113,143,246, 44,236,122, 52,128, 62,129,174, 97, 44,135, 86,239, 13,163,218, 59,195, + 16,218, 77,229,218, 99,187,247, 9, 83,227, 83,143, 38,204, 61,168,119, 8,211, 26,147,151,122,110,110,180,177,120,158, 57, 56, +246,181,234, 62,174, 81,255,224,223, 32, 32,106,118, 28,220, 56,144,141, 60,240,251,110,105, 83,207, 59,140,148,237,201, 20,214, +224,237,169,108,249, 49, 61,128,134,207, 59,178, 85,221, 90,228, 54,161, 33,180, 5,239,160,177,120,112,248, 23, 52,137, 4,108, + 43,206,253, 59, 64,167,235,253,150,198,132,166,246, 30,253,159,239,252, 91,167,192,242, 45,208, 14, 13,250, 5,210,141,112,203, +217, 82,159,175,241,135,136,206,132,228,183, 63,233, 38,207,188,222,180,173, 58, 65,224,236,223,175,155,215, 16, 76, 12,169, 79, +113,251,171, 23,248,198,155,239, 96, 7, 75, 60,126,242,220,242,209,103,102, 6, 83,103,194,209,209, 49, 40, 85, 78,152, 51, 83, + 24,109,116,185, 10, 28,236,237,224,240,194, 33,200,229, 89, 12,193,188, 44,192,197, 12,243,178,192,193,225, 1,132,103, 54, 8, + 16,227, 40, 5,220,191,255, 0,188,122,142, 16, 35, 2,199, 86, 10,102, 36,176, 96,209,150,238,241, 45,218,227, 73,144, 17,237, +170, 42, 35,173,150,208, 84,183, 58,228,198,205,173,121,207, 49, 24,244, 45, 41, 25,209,174,152,183, 94, 7, 92, 68, 36, 42,160, + 57,217, 74,210,181,241,164, 25,145,155, 66,108,174,115, 96,182, 53,187,214, 78,226, 51,108,179, 40,204,246, 86, 36, 35,186,215, +119,206,141,142,217,172, 68,197, 51, 57,162, 40, 56, 0, 9,193,249, 6, 6,241,138, 23,133,178, 96, 32, 70,211,180, 55,123,119, +104, 91,164,219,245, 25, 25,150,170, 68, 72,217, 2, 92, 66,224,238,188, 86,177,248, 85,183,253,173,133, 77,162, 23, 24, 89, 44, +148, 39,213, 53,230, 72,224,217, 28,207,143, 19,168,126,225,198, 57, 91,131,166,167, 73,114, 83,253,168, 2,129, 21,247, 78, 25, +111,224, 24,111,254, 32,226,249,222, 31, 35, 45, 24,168,143, 17,144,128, 64, 16,138,136,100,198, 57, 66,132,146, 76,234,215,186, +254,113, 68,173,132,170,206,168,147, 25, 13,169, 24, 1, 78, 52,155,238,191,237,243,196, 10,174,167,247, 21,193,120, 35,226,197, + 57, 2, 16,182, 68, 79, 18,114,119,193,206, 8,157,219,212, 48,106,145, 81,105,118,232, 77,157,112,134, 59,185,127,188, 0,200, +217,255,135, 74,139,162,180,223,125,120,250, 92,111,162,167, 16, 80,204,119, 16,222,124,245,218, 15, 83, 85, 89, 12, 93,107,151, + 61,178, 61,161,225, 20, 44,107,160, 51, 70,161, 45, 29,197,159,168, 41,214, 6, 53, 72,207,190,148, 90,152, 24,131,253,226,218, + 97,186,101,138,165,141,213,104, 10,218,158, 14, 69,153,148, 16,209, 58,199, 96,109, 17, 78,125, 40,146, 38,158,163, 3,101, 6, +129, 48,212, 39,221, 17,214, 84, 86,227,227,182, 15, 33,143, 15,227,190,101,225, 48,154,100,195, 65,190, 45,134,132,182, 35,177, +155,138,230,150,207,142,122,182,236,212, 95,131, 16, 70,100,180,225,122, 99,216, 3,232,128,231, 65, 95, 11, 69, 24, 10,249,105, + 19,212,223, 71,138, 90,184,189, 55,249,232, 89, 89, 47,244, 55,171,210,248,173,252,250,153, 92,184, 22,122, 64,143, 13, 75,211, +251,249,193,119,164, 7,249,157,247, 85,206,102, 51, 60,251,234, 62, 62,250,226, 41, 94,127,227, 13,236, 82,133, 58, 37,236,238, +239,130, 66,137,163, 69,141,197,241, 9, 10,178,112,146,101,157, 90, 75,208,192, 86,208,102,243, 57, 46, 92,186,140,249,108, 6, + 2,176, 59,143,160, 88,160,242,240,233,217,238,190,233,134,213,156, 44, 31, 62, 57,198,242,217,151,173, 73, 77,227,215,201,189, +248,200, 98, 86, 32,196,194, 52,230, 34, 96,205,136,129, 80, 9, 97, 85,213, 72,213, 10,208,108,210,162,236,145,151, 49, 24,251, + 92, 60, 6, 51, 90,179, 80, 80,198,204,247,234,117,178,169, 47,186,163,157,106,130,100,109,179,175,193,108,233, 91,112,217,147, +159,135,226, 89,235,205, 14,211, 52,235,130, 16, 11,207,136,183,226,106, 26,117, 35, 69,101,176, 17,226,160,136, 1,208, 88, 32, + 11, 27, 17,175,189, 89, 45,215, 93, 89, 33, 84,250,247,175, 57,123,205, 98, 55, 6, 43, 52, 77,161, 87, 34,179,234,117,231, 12, +102, 65, 12,209,228,202,108,102, 62,171, 36,168,107, 83, 10,228,156,140, 37,239, 48,127, 65, 25, 5, 41, 14,119,129,101,121,136, +147,103, 11, 4, 61, 5, 56,110, 92,213,172,143, 67, 61, 15,144,222,191, 69,255,135, 8,197, 11, 16,158, 61, 36,252,173,203,247, + 81,190,253, 58,170,244, 45,112,125, 4, 32,163,100,131,161,205,164, 79,220,131,160,128,176, 64, 66, 64, 70, 68,114,105, 89, 22, + 66, 85, 11, 82, 85, 33,215,169, 53,242, 49, 47, 46,237,148, 68,170,200, 30,153, 42,234,105,158, 49,120,179,105,123,119,147, 27, +178,223,195,185,245,214, 16,106, 76,211,168, 77,231, 67,123, 15,104,187,218,107, 60,203,152,140, 48,201,161, 9,145, 81, 35,199, + 57, 17, 19,173, 17,156,249,249, 55,173,158,128, 81, 22, 51,132, 55, 95,189,254,195,213, 98,101, 93,167,142, 17, 53,194,184, 33, +151, 13,135,143,210, 48,225,173,237,246,209, 40, 44,156, 29,239,157, 6, 19, 80,184,246, 80, 8, 61,136,222, 14, 94,105,165,116, + 52, 25, 28,165, 83, 27,229,158,244,107, 32, 67,154,120, 63,103, 73,203,198, 4, 56,218,152,224,181,101, 37, 64, 35, 82, 49, 58, +151, 58,165, 62, 76,238,255,159, 54, 64,165, 91,154,149,182,164,211, 80, 98, 36,155, 38,205,243,236,132,183, 77,204, 91, 96,242, +105,143,253, 41,121, 23,109,124,204,245,253,249,152, 60, 56,113,161,182,192,219,212,226,254,180,189,246, 18, 6, 6,252, 93,184, +130,158,235,186,244,146, 33,123, 59,114,234, 66,115, 54, 12,196,138,205, 30, 6,191,213,138, 78, 83, 11,113,218,192,157,211,233, +229,187,158, 35,153,110,112, 64, 51,230,179, 2, 79,239,125,142,175,158,175,240,246,155,175,155,129, 70,136, 88,102,194,241,209, +115,212,171, 85, 27,234, 66, 30,122,146, 83,110,157, 29,247,102, 5,118,246,247, 48,219,221, 55,183,184,162, 64,166,136,106,185, + 68, 25, 0,138, 37,150,149, 96, 85,213,120,246, 98,133,147,167,143,192, 90, 57, 11,159,221,161,210, 88,208,112,133,129, 18,252, + 48,182,198,161,140, 1,161,136,168,146,162, 94,154, 46, 61, 9, 80, 85, 9,164,226,120,179,217,138,166,100, 69,131,131, 77,185, +179, 89, 9,226, 2, 2, 70, 74, 9,177,137,135, 45, 11, 52, 6,219, 41, 43,114,206,221,196, 79,112,235, 80,155,190, 88, 93,210, + 70, 70,202,107,188,214, 45, 62, 56,180,174,112, 28,130, 17,242, 66, 68,206,138,128,108,241,174, 20, 33,226,158,243,144, 54, 11, +156, 29,234,237,172, 82,179, 7,113,121, 72,137,203,215, 56, 68,247,246, 16,247, 42, 55, 8,155,156,183,192,228,164, 59, 50, 83, +156,140,128,180,202,160,188,116, 40,218,224,106, 85, 70, 65,130,224,182,203, 59,251, 59, 56,150, 93,172,158, 63, 65,160,186, 93, +131,208, 38, 66,243, 0,115, 95, 23,117, 6,255, 47, 65,196,140,129, 59,203,128,139,143, 79,240,189, 55, 31,225,248,218,191, 1, + 84,187, 8, 88, 88, 72, 77,100, 80, 17,193, 92, 34, 18,129, 10, 66,205, 17, 73, 35, 36, 51,178, 8,234,100,118,171,170, 10, 77, + 2,145,218,248, 11,146, 17, 32, 78, 8,151, 33, 34,237,102, 66,162,102,246, 18,154,100, 51,247,197,135, 75, 27,163,187,212,129, +201,249,241, 38, 85,108,173,149, 73,218,179,162,207,177, 82, 37,143,115,117,162,120,176,245,145, 18,247, 52,243,221, 32,220, 56, +172, 54, 29,193,172, 40,108,167,190, 92, 84, 22,218,174, 24, 57,150,217, 73,197, 61,182,249, 38, 35,140,113, 40, 72,195, 80,214, + 17, 49,174,217, 13, 4, 16, 34, 81, 63, 53,125, 68,206, 67,207, 27,158, 48,166,141,211,232,223,169, 15,209,110,176, 14,237, 19, +241,112,198,164, 78, 19, 53,149,206, 26,175, 6,107, 0,234,106,201, 26,193,202,139,240,218, 72, 77, 3,222,194,144,168, 69,235, +199,254,232,119,181, 41, 72,218,175, 81,212,154,182,140,119,198,127,163,194, 62, 57,209,143,254, 94, 59,222,193,166, 93, 57,109, +152,116, 7,239,148,250,205,128,110, 64,196, 55,163, 12, 52, 73,232,154,126,127,138, 46,250,144, 55,150, 88,154,234,147, 90,100, + 66,183, 17, 55,104,227,171,249,255,113, 82, 31, 75, 56, 55, 20, 97,221,252,126, 91,175,160,115,182, 30, 93, 14,130,153,200, 60, +249,234, 46,190,247,214,171,120,249,214, 77, 60, 63, 93, 96,181, 88, 1,169, 70,189,170,145, 83,237, 44, 94, 70, 45, 70,146,203, + 57, 33,137,226,112,127, 7,215,175, 93,118,194,149, 77, 86, 76, 0,107,182,201, 58, 1,139,197, 18,199, 39, 11, 44, 78,142,128, +250, 20,204,132, 34, 50, 66,195, 30,110,141,174,108, 50, 45, 99,176, 66,171,150,165,174, 48,139, 77,192, 98, 87,115, 22,212, 41, +155,193,140,211,124,197,125,211, 73, 21,179, 72,152,237,236, 98, 89, 59,164, 94, 22,166, 43,150,140,189, 25, 35,204, 74,100, 10, + 88, 36, 66,189, 74, 96,113, 55, 48,184,171,152, 51,154, 67,239,251,207, 33, 64,216,244,233,208,108, 19,115, 22, 47, 42, 1, 34, +182,223,111,194,172, 26,195, 42,179, 31, 53, 70, 62,137,249,198, 55, 74, 15,115,230,100,103, 69, 27, 75, 62,184,143,184, 18,183, + 13,156,136,221,184,153, 2, 72, 76,151,173,238,110,151,209,248,243,195,217,228,130,210,225, 94, 67, 37,172,231, 17,116,210,175, + 76,132,149, 22, 96, 81,196,157, 25,142, 87, 17,114,250, 12, 28,220,205,220,145,199,113,170, 6, 77,226,241,212, 54,199,185, 13, +253, 98, 4, 40, 82, 84,220,123, 92,224, 93,253, 2,151,222,217,197,130,190, 15, 78, 11,143, 50,245,160, 21, 34,132, 72,200,196, +200, 20,161, 18, 32, 41, 35,107, 66,149,205, 87, 64,170, 4,213,140,236, 78,169,150,129, 42, 30,229, 75,237, 53,110, 88,233,112, +185,154,145,211,164, 93, 93, 68,118,115, 36,118, 61, 58,163,211,173,195, 44, 98,205, 99, 64, 91, 9, 52, 55,211,123,191,196, 17, + 90, 31,127, 17,227, 82,152,159,188,187,172,234,232,154,181, 44,117, 49,127, 4,145,206,147,183, 97,170, 15, 24,124,110, 0,163, + 35,201, 79,223,252,179, 11,190,232, 21,114,234,239,198,221, 33,135,186, 66, 44, 0, 42, 85,183, 76, 64,107, 78,211,120,207,247, +147, 45, 91,225,190,118,230,249, 83, 70, 36,173, 63, 55,173, 23,231,109, 69, 92,177, 69,228, 70,103,144,160,250,135,161,174, 55, + 58,131,204,247,254,181,107,130,104,250, 36,186,198, 7, 93,135,212, 0,221, 52, 94,234,196,187,208,225,238,190, 33,126, 12, 33, +241,190,189,236,122,248, 75,255,205,232,153, 64,217,196,223,247, 62, 7,210, 78,254,184,118,205,214,236,105,199, 80,121,227,186, +180,217,191,126,237,174,212,113, 80,140,174,187,158,141, 31, 67,135,255,233, 66,106, 54, 70,225, 13,109,241,251,143, 67,147, 29, +239,250,189,210,187, 6,219,238,195,223, 26,238,222, 39,201,140, 38,160, 54,200,102,242,101, 82,107,127,124,166,221,236, 68, 64, +143,249,148, 7,228,148,112,176, 23,240,198,155,175, 99, 94,148, 40, 29, 75,141,145, 80, 22, 1, 41,103,156,174,106,164,170,106, + 39, 73, 21, 65, 85, 85,136,177,192,225,222,174,177,214, 93,235, 27,102,187, 22, 66,114,250, 2,245,226, 20,213,233, 11, 80,125, +138,232, 38, 46,204, 1, 28,109,178, 44,130,239, 73, 37, 25, 12, 31,108,178,214,108, 78,107, 57,215,168, 83,133,101, 18,131,245, +209,133, 77,105,143,151,195, 42, 32, 38,172,132,112, 90,121,171,160,230,211,157,178,226,160, 84,236, 31,238, 32,241, 12, 57, 19, + 40, 87, 32, 89, 1,200,238, 90, 70, 72, 89, 12,194, 87,117,243,144,232, 4, 60, 65,174,197,237, 78, 13, 98, 53,174,155, 66, 83, +141,208, 76,221,106, 80, 62, 19, 89, 6,124,239,164, 97,103,106, 27, 67,218,237, 70,213,140,188, 11, 38,131,233, 93, 35, 93,176, +127,166,190,179, 77,142, 6,100,111, 30,164, 22, 72,170,144, 4,168,107, 53,205,190, 39,193, 65, 43,148, 51, 70, 57,223,177, 38, + 37, 18, 10, 14,152, 69,130, 6,227, 16,228,170, 70,125,186,196, 97, 62,193,181, 27,135,200, 59,215,161,181, 51,177, 54,220,111, +107, 94, 8,221,201,222, 53,138, 2, 64,106, 40, 4,251, 12,124, 81, 68,252,239,127, 85, 98,231,103,255, 12,135,135,159,160,216, +187,142,178,136,152,207, 10,204,103, 17, 69,100,179,193,141, 1,129,221,146,152, 0, 82, 70,129,134,231,165,230, 25, 15, 91, 47, + 48, 25, 67,190, 50, 98,188, 53,117, 28,144,213,188,253,115,179, 54,209,128, 44, 4,205,201,154, 80, 11, 22, 48, 11,226, 56, 3, + 66,137, 64, 5, 10,142,198,233,112,252,185,201,177,176,244, 66, 75, 90,145,222, 26, 90,201,253,255, 61,231, 61,165,132, 92,213, +144,156,144,147, 32, 37,129, 36,103,236,171,169,225,155,148, 15, 53,137,186, 93, 77,241,255,100,160,147, 66, 52, 5, 88, 27,252, +126,124,110,245,149,236,212,125, 9, 48, 78,169,114, 3,137,222, 23,190, 86,194, 10, 64,101,183,252, 32,149,141,251,177,165,212, +133,171,172, 59,121,172,227,212, 52,113,124,211,224,245,104,111,234,152, 62,153,116,180,198, 62, 63,224,168, 45,231, 96,221, 91, +108, 75,113, 24,240,251,122,197,173, 93,141,105,103, 4,224,228,195,216, 92,207,169,107,161,212,131,189, 71, 71,177, 14,169,124, +218,232,223,117, 74,125,173, 19,233,106,235,255, 54, 69, 17,236,135,198,245, 45,117,117,227, 99, 12,205, 91,250,169,103, 52,248, +187,241,239,234,132,188, 90,135, 1, 38,170, 27,178,105,100, 80,244,181,243,187,235, 2,110,244,172,207,187,215, 76, 52,253, 19, +109,253,196,219, 16, 27, 52,210,200,222,251,210,223,122,161, 31,248, 26, 15,186,197, 46,161,112,189, 61,162, 46,236, 15,116,142, +111, 64,127,197,164,174,161, 29, 44, 92,200,138,235,245,155,175,224,224,194, 5,196,162,196,172,140,152,151, 17, 33, 88, 14,118, +174, 86,144,156, 28,242, 53, 22,121,206, 2,145,132, 98,190,107,236,118,102, 44,107, 69,170, 51,230,179, 2,179, 89, 68, 8,218, + 50,135, 17, 34,152, 3,146,135,102,136, 16,136, 35, 40, 70,176,179,211,171,108, 49,150, 74,221,161, 93,103,193,242,116, 1,169, +151,168, 82,178,196, 50,117,183, 46, 66,231, 11,174, 64,206, 10, 89,157,160,224, 26, 26, 11, 84, 21, 64,185, 6, 7,194,170, 56, +196,162,102, 84,213,210, 38,240, 24,109,242,245,100,182, 72, 0,107, 2, 72,156,216,166,128,147,209, 10,152,191, 60, 81,232,101, + 88,144,179,205,141,168,149,197, 10, 61,147,130, 34, 35,193,210,236,154,148, 46,245,142, 94,149,140, 69, 95, 22, 32, 10, 40, 35, +192,101,132,146, 93,211,164,102,120, 98,150,167, 10, 85,134,166, 12,228,236,249,228,106,166, 91, 89, 17, 53, 35, 34,153, 49, 75, + 48,171, 88,205, 38,101, 19, 46,160, 26,140,185, 31, 24,202, 37, 2, 2, 74,202,152, 21,138,200,130, 27,123, 25,151,111,189,132, + 58, 92, 2,114, 53, 57, 28,208,228,152, 53,212,120, 52, 30,234, 77, 29, 32, 0,251,115,197,191, 60,222,195, 47,254,197, 35, 92, +126,252,191, 98,126,129, 17,231,151,129,162, 64,140, 5,202,249, 28,177,220, 1,135, 2, 28, 8, 28, 3, 98, 8, 40,216,174,107, +102,207,162,135,173, 75,154,192,188, 24, 76, 70, 41, 48, 47, 1,228,212,157, 43, 98, 60,135, 38,168, 39,137, 57,191,193,167,107, + 75,114,203,198,176, 87,115, 46, 44,130,153, 45, 5,247,245,143,198, 93, 28,196,138,183, 82,182, 38,131,196, 93,236,130, 7,140, + 72,206, 16,169, 45,116, 72,196, 50, 13,114, 66, 22,215,216,123,237, 97, 17,160, 22, 55,239,239, 53, 74,226, 41, 92,218,155,226, +214, 99, 66,117, 96, 22,207,189, 9, 91, 90,179, 17,135,203,218,195,213, 32,165,134,117,154,149,144,122, 31,108,155, 12, 55,154, + 82, 91,125, 60,214,214,246,232,178,195,117,109, 56,209,105,164,122,107,177,238,195, 64, 27,157,245,206, 40,236,235,245,150, 54, +160, 1, 58, 8,133, 25,172, 62,125,135, 67,163, 73, 43,247,248, 9, 27,103,104,209, 94,108,234, 25, 83,183,118, 54, 63,180,177, +128,111,254,125, 29, 79,188,189,230,106,240,111,212, 43,196, 58, 21, 4, 51,154, 6,117, 67,124,236,248,218, 74,175,137,208,238, + 62, 91,203,174, 95,107, 82,214,141,216,117,188, 12, 26,189, 94,157, 24,194,117, 0,221,111,106,130,198,128,162, 14,236,140,181, +109,226,104,240,247, 52,110,158,250,182,206,122,222,102,147,122,111,167,223, 8,233, 38,176,125,109,202, 39,197,198,163,119,208, + 56, 43, 6, 77, 34,128,214, 32,229,226,254, 14,226,206, 1,246,246,247,113,184, 55,199,206,222, 46,202,157, 61, 8, 5, 68,178, +176, 20,155,122, 19,178,168,237,122, 67, 64,157,204,188, 38,198,128,192, 1, 5, 50, 2, 50, 68,217, 82,214, 56,154,126,219,119, + 87, 89,185, 77, 69, 35, 8, 82,206,208, 44, 40,138,136,140,128,147, 69,133,147, 69,133,229, 42,129, 52, 65,164, 33,126, 37, 4, + 24,116, 41,117,133, 16, 20,130, 96,100, 55,215,184,219,158,218, 8, 74, 10,135,248, 37,163, 96, 65,230, 2,139,147, 5,184, 62, + 69,206, 53,150,171, 26, 57, 25,139,186, 96, 75, 86,179,125,111,129,164,140,148, 4, 57,217,207, 64,220,111,157, 11,143,110, 37, +115,114,203,198,188,206, 98,196,184,200,150,148,153,178, 32,123, 56,133,230,140, 2, 98,251,110,103,207, 67,225,147,163, 21, 92, + 97, 6, 40,182, 41, 98,156, 21,133,102, 51, 98, 97,147,222, 5, 54, 47,124, 98, 64,136, 1, 42, 80,144,162, 40, 0, 20, 5,192, +133, 71,159, 16,164,225, 9,184, 54, 62, 75,182,215,157,213,139, 63, 65,152,145, 67, 9,166, 2,183, 46,151,216,189,245, 13,212, +186, 7,146,106,128, 6, 55,196, 84, 26, 25, 74,233,224, 32,245,255,231,205, 85,131,237,206, 1,188, 40, 9, 63,190,115, 0,254, +197,143, 81,208,255, 11,218,185,140, 16,118, 17,185,180, 21, 71, 8, 32,127, 29, 68, 12,230, 8,142, 12,113, 62,130,106, 52, 27, + 93,201,166, 31,247, 87, 19,217, 86, 53, 69, 12,136,172,230, 86,215,200,211,224,126, 2, 16,187, 63, 76, 10, 97,106,135,198,160, + 72, 82,155,196,167,238, 12,200,145,161,161,128, 80, 1,144,133,247, 88,174, 1,143, 20,203,218, 30, 79, 1,150,171, 66,193, 24, +239, 54,233, 75,119, 54,136,113, 3, 44, 48, 72,193, 34,186, 54,129, 11,214,227, 63,215,191,200, 58,216, 25,211,160,252, 83, 11, +115,160, 7, 14, 52,255,141,134,245,167,221, 46, 56,181,201,109,138, 2,138,162,183,127,212,193,235,161,206,126,182,157,238,215, +142,226,237,219, 69,157,210,217,235,208, 57,110,235,123, 63, 3,122,156, 76, 43,219,196,244, 30, 66,195, 58,242, 19,149, 1, 74, + 43,189,169, 83,145,183,108, 3,180, 69, 80, 70,147,237, 86,216,220, 49, 23,253, 13,224,120,197, 96, 66,111, 93,150,182,173, 11, +198,207,179, 97,231,161,227,166, 72, 55,161, 53, 58,225, 4, 44, 19,240,255,212,181,104, 38,110,233,200, 39,235,120,242,228,212, +223, 79,235,163, 94,225,157, 66,220,105, 43, 98,173, 3,135, 54,213, 62, 87,197, 31,179, 37, 68,118,241,191,103,213,116,213,126, + 20,173,246, 71,240,173,211,253,186, 91,183,174,179, 85,123,161, 23,220, 28, 70,158,172,213,245, 33,130,200,130,131, 11, 23, 16, +138, 25,102,179, 25,118, 15, 47,161,156,205,193,113, 6,227,162,153,105,139, 21,110,119, 76,203,198,176, 22,207, 57,223,219,153, + 97,103,167, 68,156,239,128, 99, 97, 59,230,148,173, 1,128,133,190, 40,200,163, 49,107,211, 17, 19, 33,176, 17,184, 50, 8,146, + 5,215,202,132,235, 59, 25,151, 75,155,152, 43, 33,164, 58, 65, 36,163, 82, 66, 18, 6,179,231,162,139,189,118,192,134, 31,219, +213, 90,156,106, 93,219,161, 61, 43, 25,153, 24,203,108,123,102,109, 98, 80, 53, 67,114,109,214,191, 76,144, 80,162, 86, 70,157, +156,184,150, 43, 24,143,221, 78,220,148,129,236,205, 5,147, 56,228,174,173,159, 68,132,180,140,235,148, 51,114, 85,129, 52,249, +158, 28, 40,138,104, 72,133, 8,102,133,183,142,185, 54,249, 94, 54, 2, 34,193,166,208,162, 48,103, 56,112, 97,166, 38, 86, 57, + 64, 28,192,108, 70, 50,172,130, 16,129, 28, 34,106,137, 32,241,108,111, 98,155,114, 69, 33,217, 20, 11,150, 60,102, 3, 91,206, +226,196,174,128,156,108,111, 29, 82,198,205,171,187,136, 87, 94, 67, 74, 97,148,230, 54,142,211,158,190, 49,179, 58,178,162,237, + 8, 9, 0, 40,163,226,215,203, 18, 71,159,103, 92, 60,249, 87,136,179, 83,204,194, 30,202, 64, 40,138,128,178, 32, 20, 33, 32, +122, 54,188, 50, 80,105, 35,249, 51, 2,164,223, 29, 45, 66,151,196,242,229,179,136, 89,241,134, 2, 92, 68,135,241,109,202, 15, + 1,136,209, 88,234,112,210, 90,214,236,104, 10,129, 69, 17,212,242, 75,107,111, 86, 37, 39, 4,152, 45,116,150, 0,227, 79,138, + 75,211, 2,132,131, 35, 56,102, 25,171, 32,212,254,149, 13,254,217, 49, 71,179,149,238, 69,163,115, 99, 67, 11,147, 64, 78, 75, + 90, 54, 16,120,250,196,183, 97, 0, 7, 70,246,158,246,165,206, 14, 49,210,196,188,218,143, 0, 23, 16,132, 21,209,117,127,109, + 38,112,239, 16,145,113,110,186,110,183,137,165,141,187,244,254, 4, 71, 61,130,176,142, 76,106,167,119,233,231,131,228,123,254, +248, 52, 85,216,181, 69, 1, 58,243,209, 30,203,184,217,193,244,124,223, 59,242,160,174, 33, 10,253,148, 45, 26, 49,213,180,109, +130, 58, 43,213,105,200,171,155,177, 27, 23,166,181,160,155,137,247, 68,219,174,138,106, 43,249,155,108,184, 26,152,125, 96,125, +187,222, 77,105, 47, 51,160,223, 56,141,255,174,111,127, 75, 27,159,103,244,119,232,195,204,186,241, 59, 48,213, 4,209, 70,190, + 69,119,173,251,247, 27, 77,211,215, 54,148,250,117,222,129,174,177,240,186,235,176,254, 5,238,133,255,174,221,196,147,203,150, +181,149, 81,147,113,208,111, 54,215,166,124,135,219,153,250,247,239,176, 81,141,129, 81,204,118,144, 52,160,210,128, 69,102,172, +114,192,233,210, 14,185,218,221,218,178,218, 29, 94,206, 10,148,141, 12, 76,128,148,107,132,114, 7,194,138,186, 90,129, 73, 81, + 22, 1,203,156,221, 28, 38, 88,130,152,212, 32,103,147, 71, 39,191, 17,128,178, 44, 80, 43, 99, 7, 53,174,222,184, 2,240, 28, +171,156,240,226,193,115, 84, 95,125,133, 50, 90,115, 82,123,240,138,229, 19,152, 17, 76,134, 57,208, 33,103,207, 11,232,120, 41, + 41, 37, 80, 81, 66,136,177, 90, 44, 17,163, 79,175, 34,182,175, 23, 47, 70, 53,160,117,109, 19,159,113,197, 59,200,220, 73,107, +154,179, 75, 7,185, 69, 3,140, 75,148, 49,139, 64,166,128, 42, 5, 0,150, 46,150, 37, 33, 74, 64,116, 34, 24,251,117,102, 55, +169,225, 98, 6,202, 9, 57,103,139,127, 85, 35,112,133,200,200, 20,208, 8,215,236,179,180,223,167,102,164, 11,209, 8,131,217, +172,107, 41, 43, 50,106, 32, 16, 34, 5, 43,100,204, 88,213,110,156, 18,204,235, 62,146, 37,196,229,156,219, 5,130, 66,145, 18, +176,207, 25, 55, 94,218,199, 23,171, 91,160, 23,183, 65, 69, 95,220, 60,132,158,134,183,176,142,234, 69, 30,252,220,140,129, 7, + 2,220,123, 48,195, 31,191,184,141, 23,215,238, 98, 89,189, 3,193, 11,255,137, 2,137, 9, 65, 19,130, 68,164,160, 88,170, 96, + 85, 37,104, 74,176,112, 23, 64,132,219, 4, 66,192,136,227, 42,130,136,218,214, 47,228,124, 13,234, 44, 96, 73, 28, 97, 2,204, + 27,222, 81, 66,246,251,216, 47,170, 33,112,194, 30,151,155, 60,106,149,141,184, 39, 0,147, 73, 15,155,207,164,137,255, 86,247, +143, 39, 53,114, 57,220,184, 73,193,206,191,178, 12,148,134, 97, 45,126, 31, 88, 10,150,194, 35, 81,187, 63, 60,154, 28,117, 3, +212,172, 45,121, 77,219, 73,124,224, 27,167, 61, 77,242, 88,182,160,210, 59,197, 25, 25,192, 10,138,202,159, 63,170,142, 58,185, +225,129, 35,216, 28,207, 59,206,162, 30, 35, 18,208,254, 84, 69,107, 22,127,155, 38,115,218, 12,188,175, 19,186,198, 83,123,159, +128, 68,227,230, 70, 71, 68,145,142,216,166,122, 22, 89,111,164,235,108, 28,137,122,211,101, 99,233, 75,192, 6,152,125,212, 8, +232,102, 66, 90,255, 77,233,212, 52,187,190, 72,222,216,132, 81,111, 42, 29,238,196, 39, 26, 0, 93,207,102,215,222,103,216,103, +174,233,185, 56, 2, 30,131,168, 3,133, 44,250, 24,247, 36,209, 15,221,181, 29,236,147,105, 98, 76, 30,221,163,211,252,130,223, +128,252,182, 6,207,244,255, 35,163, 70,114,140, 18,233,198,181, 64,123,253, 73, 39,187, 88,210,233,197,143,113,111,164,245,177, +110,145, 63,177,180,178, 24, 75,228,156, 81,114, 70,189, 60,134,214, 75, 32, 45,220, 7, 62, 90, 81, 83, 35, 2,173,234, 12,229, + 18, 66, 22,198, 66,170, 88,173,106, 32, 87, 32, 22,228,172, 22,154,161, 68,117,251, 0, 0, 32, 0, 73, 68, 65, 84, 18, 45,250, + 52,195, 92,219, 32, 9,204,100,210, 47,246, 3, 19, 10,225,136,253, 34, 96,118,225, 0, 79,170, 29, 8, 34,158,166,125,156,174, + 2, 74,182,241,175, 8,132, 89, 80, 71, 10, 44,108, 67, 40, 56, 29, 57, 59,234,219,157,117,129, 13, 35, 92, 44, 19,164,206, 96, + 85,179,186,205, 54, 17,139, 40,144,141,249,206, 42,216,225, 26, 76, 25, 66, 62, 83,185,116, 77,115,110,237, 73,205, 33,182,147, +150, 21,172, 40, 11, 2, 21, 1, 21,102, 54, 45,107,246,198, 53,160, 32,177, 41,155,130, 63,175,128, 11,155,248,178,199,123,198, + 64, 78,148,179, 61,177, 53,235,182, 23,103,169, 81, 32,161, 17,193, 22, 76, 6,243,170, 49,175,115,173,160,186, 2,105, 5, 69, + 54, 38, 63, 50,106, 53,216, 61,134, 8, 80, 64, 45, 98, 18,121, 16, 16, 13, 82,182,200,122, 51,170, 9,238, 66,119,121, 86,227, +226,205,107,168,139,107, 64,170, 91,232,125,203, 46,241,204, 63,145,128, 5, 3, 31, 62, 41,192, 95, 30,227, 48,124,138,226, 96, + 15,161, 60,116,125,124, 52,102,122, 81,160, 40, 74,112, 52,239,148,148, 8, 82,213,160,122,233, 73,103,205,222,216, 22,151,145, + 8,129, 44, 51, 32,139,152,126, 93,164, 53, 36,138,100,146,201, 38,168, 94,152,221,104,135,125,189,220,177,204, 24,132, 72,140, +232, 46,125, 41, 11, 36, 37, 8, 50, 18,177,121,236,171, 34,114,182,253,123, 36, 95, 39,117, 43,235, 14, 13, 77,118,128,251, 90, + 69,153, 7,223,226,168,189, 69,250,192,143,125, 11,107, 92,160, 45,161,186,129, 6,169,215, 8, 52,211,144,140, 12, 81,250,154, + 93, 26,228,144,233,160,190, 43,117, 16,187,246,166,232, 33,123,124,187,182,151,182, 20,101, 29,147,226,104, 10, 39,221, 60,143, +111,154,226,250,214,172,227, 9,151,124,194, 29,154,218,116, 26,168,241,188,217,119, 38,211, 65, 50,158,182, 22,162, 52, 65,240, + 27,167,231, 77,237,206,181, 39, 83, 84,156,229,241,164,163,148,184, 41,102, 53,173,167,142,173, 69,168, 78, 79,250,125,246,110, +147, 63,207,125, 72,110, 83,204,107,219,160,244,166, 97,233, 17,188, 7,220,134,169,199,104,134,213,126, 35,209, 57,204, 48, 38, +154,135,145,247, 58, 97,104,212,210, 92,127,218, 66,192,236, 23,246,173,209,125,191, 13, 5,219, 86,153,218, 54,248,137, 90,148, +108, 45, 74,119, 4,147,245,215, 98, 58, 10,244,233,127,207,152, 45, 23,122, 85,215,152,207,119,176, 55, 43, 80, 23, 4,138, 37, +210,201,194, 9,134,110,135,169, 53,144, 21,194, 9, 5, 23, 40,162,253,190,102, 69, 18,113, 34, 89,101, 30,242, 49,154,215,250, +170, 6, 57,164,171, 61,250,174,217,134,218,225, 28,230, 1, 74,187, 56,148, 19, 84,216,195,139,163, 37,228,197, 67,107, 2, 56, + 0, 16, 80, 44,128, 58, 33, 68,133, 34, 34,167,236,118,169,108, 17,167,238,140, 73, 33, 64,153,221, 85,173, 66,193, 10, 13,209, +189,199,109,114,141, 96, 43,214, 46, 85,163, 8,128,103,200,139, 10, 76,238,251,237,201, 95,162, 30, 6,227,218,102,245, 8, 78, + 9, 1, 85, 54,167, 50, 74, 25, 42, 43,128, 9,146,129, 82, 5,179, 2, 88,134, 18,117,101, 76,119,228, 12, 97, 6,115, 48,253, +184,100,211, 91, 7, 6,185,105,138,184,166,154, 2,140, 32, 71,182,185, 37, 17,131,161, 57, 34, 2,238,255,174,208,172, 93,144, + 21,236, 11,154,149, 64,181,130, 56, 89, 49,243,212,183,164, 25, 16, 3,131,137, 9, 68,133, 57,174, 73,134,144, 34, 72,192,245, + 61,194,201,245,151, 81,223, 59, 69,212, 83,128,138,158,109,177,110,192,143, 54,139, 74, 24, 0, 34,240,201, 9,227,228,110,198, +193,242,215, 88,238, 29, 99,185,186, 4, 44, 87,208, 92, 35, 36,119,202, 67, 1, 70, 1, 4, 5,104,229, 18,182, 4,210, 26,193, + 61, 83,148,164, 27,126,200,210,210, 84, 8,212,248,232, 6, 32, 1, 8, 89, 65,172, 16, 98,136, 6, 55,147, 33,159,173, 21, 89, + 45, 26,184,177,215,239,185,137,155, 81,144, 40, 92, 11,105,100, 77, 56, 75,156,109,125, 65,193,154, 44,168, 55, 22, 25, 96,187, +105,124, 72,229, 86, 21,214,100,151, 18,186,136,244,118,197, 70, 19,164,184,221,221, 61,188,251, 7,255,102,199,206,214,225,198, +185,201, 42,151,222,182,111,250,171,221,135, 86,135,150,176,236,212,147,230, 72, 20,181,232, 65, 56,211,155, 39, 38,183,102,182, +110, 29,218,116,250,108,219, 86,154,219,176, 1,221, 78,135,163,173,112,126, 95,151,187,254,111,141,255,239, 96,152,237,163, 14, + 13,244,220,234,210,123, 4, 69,165, 65,161,110,139,143,174,243,245, 21,132,249,206, 46,190,247,131, 63, 0, 81,243,191,255,112, + 8,199,123, 22,112,227,242, 71,122, 78,134,245,214,159,115,118,102,175, 70,170, 98,203,242,162, 55,193,142,218,197, 6, 18,215, +169,149,253, 20, 74, 52, 1,169,172, 35, 55, 58, 98,253, 99,141,128,211,217,200, 78, 35, 10, 58, 34,169, 77, 42,213,166,120, 4, + 19, 80,187, 98, 19,250,245,219, 84,177,209, 22,102,204,244, 11,212,126, 2,221, 25,235, 45,218,108,178,188,246, 47,204,132, 85, + 86, 28, 45, 86, 72,213,210,174, 85,220,193, 82,130, 25,157, 80, 70, 18,105, 61,217, 7,190, 20, 28, 48,159,207, 17, 11,163, 10, + 75,157, 48, 11,130,217,172, 68, 6,163, 22,115,130,179, 72, 75,246,207,209, 72,102, 6,203, 19, 40,148,136, 1, 72, 58,199, 97, + 72,216,187,188,143,147, 52,199,242,228, 57,230,161,106,167, 88, 52,108,116,247,228,102,102, 20,145, 91, 38, 15,179,137,133, 98, + 96,112,140,102,245,153, 51, 24,217,200, 81, 14,215, 38, 0,181, 4, 36, 17, 84, 20, 81, 39,187,182,203,218, 8, 85,166,183,207, + 72, 25, 6,111,139, 73,170, 68,146,169,143,132, 16,212, 98, 61,115, 38, 72,149, 33,203,133, 25,184, 48, 35,103, 32, 66, 48,139, +130, 58, 68,212, 90, 2,181, 34, 72,178,188,237,156, 65, 82, 35,178, 32, 80,240,230, 1, 40, 24,160, 96, 16,188, 50,163, 82, 66, + 37, 1, 85,102, 35,123,121,110,119, 93, 3,117, 6,132, 3, 56, 22, 8,165,249,167,135, 24,189,145,113,153, 23,140,247,160,226, +222,243, 44,157,162, 66, 18, 36, 89,194, 92, 32,129, 4,134,100, 11,139,153, 73,141,107,151, 35,232,194,203,144,204,128,166,222, +217, 77,235,228,184,115, 12,238,243, 0,124, 94, 19,238,124, 17,176,251,236, 14,230,197,125, 20,187, 7,224, 98, 15,145, 75, 80, +136,214, 12, 17, 33,107, 64,150,140,236,164, 74,139,160,183,187, 95,204,115,213, 86, 34, 14,179, 7,246,157,124, 96, 8,137,133, +247,120,106,155,120,142, 45,249,224, 70,238,241,198,238, 23,175, 78, 88, 76,217, 82,218,146, 18, 68, 25,236, 84, 59, 66, 0,139, +173, 48,224,124,132, 84, 39,164, 42,161,170, 5,117,242,159,103, 70, 44, 8, 20, 3,128,208,105,228,165, 33,169, 55,181, 80, 13, +221, 22, 47,140,236,161, 1,210,119,247,162,117, 24,123,124,128, 72, 43, 91,233,147,108,166,225,105, 6, 48,223,221,195,183,223, +121, 23,239,253,248, 95,183, 83,206,193,197,139,120,229,245,183,112,255,238,103,120,242,232, 81,127, 27,232,144,148,167, 19,194, +117,236,132,118,250,237,167,213, 0,192,206,238, 30,222,122,231, 93,252,204, 31,127,234,102,248,254,239,254, 97,111,240,176,160, +135,156,187, 93,205,207,127,250,163,175,133, 6,233,228,216,227, 76,217, 41,226, 85,111, 98, 37,237, 81,218, 6, 16,131,246,125, + 98, 49,246,243, 82,172, 79,187,231,194,172,180,107, 2, 64,125, 97,226,118,169, 95, 63,175,125,156,248,214,230,203,235,148,137, +128, 14,188,223,105, 52, 69, 42, 97, 32, 37,235,231,145,143,209,128,193,176, 56,224, 71,120, 67,216, 62, 38,109,140,137, 93, 55, +185, 16,183, 47,166, 17, 1,141, 38,248,141, 46,137,220, 54,101, 79,236,239,199, 44,241,254,148, 63,108,238,126,155,147,250, 56, +102,246, 28,191,170,125,219,230, 45, 56,142,142, 82,180, 28,228,208,113, 34, 29,236, 80, 60, 89, 37,220,255,234, 41,222,146,100, +233, 94,193, 24,230,204,138, 28, 10,104,174,189,225, 52,211, 15,179,222, 52,226, 79, 81, 20,160, 80, 2,186, 66, 8,132, 42, 7, + 71,171,106, 11,128,169, 86,182,255, 14,140, 76, 2,201, 22, 21, 74, 49, 2, 28, 17,192,224, 34,162,196, 10, 60,223,195,179,116, +128,227,227,103,192,234,212,156,223, 56,162, 41, 83, 49,103, 36, 97,228, 36,102, 49, 90, 4,144,152,172, 73,189,216,130, 0,161, + 96, 4, 62, 40,212, 97,126, 73,181,241, 10,146,165,142, 90,124,186,237,196,225, 9,107,164,149,177,212, 19, 1,217,174,133,153, +194, 80,187,139, 7, 41,168, 96,100, 68,104,202, 8,156, 92, 6,105,254,246, 32, 65,105, 12, 49,156,202, 12,168,107, 20, 92,249, +167, 17,108, 50,132, 21,111,161,104,121,216,200,102, 87, 74, 5,234, 76,110,129, 10,103,162, 43,122,171,117, 0,158,217,174,138, +130, 9,226, 19,189,237,108,201,252,222, 53,249,247,128,173, 65,129, 73,243,160, 13, 89,139,160, 12, 36, 85, 4, 8, 34,151, 78, + 72,171, 32, 34,184, 24, 8,139,107,135,120,188,184,142, 98,117, 15, 26, 24,152,168, 28, 52,129,190, 78,253,153, 17,240, 8,192, +251,247, 11,252,224,139, 39, 40,190,241, 17,184,124, 23, 92,238, 58, 65, 77,140,247, 64,138, 36,132,224, 30,246, 89,224,255,158, +141,224,215, 68, 38, 43,141,184,164,138,204,118,125,181, 13,122,177, 90,196,162, 32,202,222, 12, 52, 42, 46,143, 24,151,206, 34, +189,137, 66, 13,189, 44, 17,241, 97,110,124,116, 26, 88,224, 25,238,217, 54,237, 33,144,221,211,161,240, 90,221, 41, 29, 26,159, +130,192,110,167,107,133,149,214, 76, 52,212, 25,135, 50,146, 41, 13, 36, 75,107,187, 88, 7, 2,180,255, 55,118, 10,243,232,124, +201,254,175,215,174,221,192,205, 91,175,226,246,167, 31,226,197,179,231, 93,118,182,246,204,112, 28, 50,110,247,223,212, 61,110, +243,131,227,245,204,148,169, 87,243,255,127,254,147, 31,181,255,123,103,119, 15,111,191,243, 46,222,251,201,143, 70,156,182,166, +184,172, 31, 84, 27,201,120,189, 80,156,110,234,158,250,197, 81,252, 23,209,160,144,147, 98,130,117,220,223,120, 43,160,220,225, + 13,164,107, 72,197,185,246,178,106,215,114,154, 24,183, 29,110,239, 55,213,221,160,171,216,100, 24,219,170, 11,104,244,110,180, + 43,236, 99, 13, 61,209,134,182,201,229, 95,173, 71, 34,141,154,158, 41, 98, 92,115,159, 16, 13,225, 41, 69,143,156, 56, 77,136, +235, 55, 18, 68,125, 72,122, 83,244,107, 15,138, 62,151, 45,188, 14,152,254,160,245,251, 87,207,101,241,219,187,214,107,108, 82, +218,216,126,174, 53, 78,210, 92,143, 9,140, 68,117, 20,109,140,161, 50, 97, 60,169, 19,161,206,192,199,159,222,198,159,200, 10, +137, 34,150, 82,184,159, 58,217,244, 74,130,192, 22,129,154, 92, 70,150,179, 96, 94, 48,118,231,165,205, 63,217,152,200, 41,101, +168, 36,159,198,179, 77,225,181, 37,134,217,206,217,136,100,196, 70, 58, 42, 67, 2,241, 14,118,231,132, 21,118, 80, 29,191, 64, +181, 56, 1,201, 10, 57, 22,109, 83, 29,152, 64,101,244, 22, 58, 89,174, 58,200, 44, 93, 69, 81,104, 66, 44, 3, 42,141, 64, 50, +159,243,165, 2, 84, 11, 10,143, 67, 19, 73, 8, 20, 16, 72,145, 16, 64,200, 96,178,157,108, 86, 69,201,140,178, 8,230,229,174, + 25, 76,190, 19,117,150, 62,152, 76, 7,175,138,228,200, 5,171,103,190,187, 81, 76, 96, 43, 30,149, 22, 64, 13,112, 90, 34, 71, + 1, 81, 97, 48, 49,188, 41,208,208,126,183,178, 18,114,118,151, 58, 19, 95,155,159,123,240,233, 84,123,252, 36, 82, 20, 12, 4, + 21,100, 50, 2, 89, 84,103,136,251,234, 52, 58, 4, 15,215, 81,107, 86, 32, 37, 59,231, 27, 71,181,192,168, 37, 64,170,140,178, + 72,200, 49,128,197, 76, 92, 88, 20,151,119, 51, 78,174, 94,195,234,222, 49,162, 28, 1, 92,158,123,145, 62,254, 41, 6, 32, 17, +248,249,179,136,227,207, 94, 96,246,131,247,160,187,127, 10,208, 46, 64, 75, 40, 76,221,144, 4, 88, 38, 66,189, 50, 52, 65, 73, +236,251, 45, 22,168, 2, 73, 30,101, 43, 45, 82, 32,125, 78, 87, 63,241, 76,213,241, 73,203,139, 16,106,246,127,174,255,135, 66, + 24,109, 28, 46,181, 48,109,246, 65,210,252, 15,114, 99, 23,227,223, 29, 86, 64,168, 31, 65, 43,142, 62, 9,180,182, 52, 63, 80, + 19, 69,215,120,246,119, 17, 98,177,185, 32,185,157,184, 77,130,175,218,159,212,237,201, 46, 92,185,134, 27, 47,127, 3, 33, 70, + 60,127,250, 24,119, 63,251, 24, 89,129,171,215,110,224,234,245, 27,248,229,251,239,181, 95,246, 98, 54,195,119,223,253, 61,188, +255,179, 31,163,174,171,206, 64,132, 58, 14,143, 40,112,243,230, 55,112,237,218,117,124,242,225, 7, 56, 61, 57,110, 15,141,192, +140, 87, 94,253, 38, 14, 47, 94, 2, 17,240,252,217, 83,220,187,253, 41,160,130,189,221,125,188,241,206,247,241,217,199, 31,226, +165, 91,223, 64, 89,206,176, 92, 46,112,247,211,143,176,170, 42,124,235,237,239, 1, 0,190,247,131, 63,128, 2,120,240,197,109, + 60,126,248,229,192,183,126, 27,187,121,199,145,132,219,159,125,132, 27, 47,189,130,162, 44,241,222, 79,126,132, 43, 87,175,227, +234,245,151, 80, 20,118,243, 29,191, 56,194, 23,183, 63, 67, 74,181,253,206,119,190,143,207, 62,249, 53, 94,186,121, 11,229,108, +134,229,114,137,187,159,127,130,114, 54,195, 75, 55, 95, 65, 57,155, 99,181, 92,224,246,231,159, 96,181, 92, 96,103,103, 23,111, +125,231,123,248,252,211,143,112,227,230, 45,148,101,137,213,114,137,187,183, 63, 69, 89,150,184,209,251,157, 59,183,237,119,224, +114,136,151,111,189,134,131, 11,118,109,142,158, 63,195, 23,119,110,183,126,194,231,250, 74, 40, 13,136, 14, 45,193,241,204,194, + 62,236,250, 6,158,245,125,205,245,198,233, 83,123,201, 80,141,197, 6,245, 8,103, 27, 38,102,234, 55, 11, 77, 51,208,103,251, +247,220,244, 48,177,195, 71,207, 76,173, 93,190,143, 88,224,125, 54,252,120, 58,111,246,229, 52,229,101, 72, 91,215, 60,253,169, +127, 42, 44,110,107, 67,208,188, 87,234, 17, 10,221,246,119,250,181, 98,248,217, 14,224,116,221,186,126, 39,215,177, 55,238,134, +125, 73,157, 98,141,233,217, 3,125,206, 96,113, 18, 97, 86,150,248,228,163,143,241,213,147,103,168,115,129,163,103, 47,176, 88, +101,164,236,186,107,135, 64,133, 2,146,203,194, 36, 17,202,192, 56, 56,216,199,194, 11,100, 99, 6,146,235,202, 60, 27, 68, 1, +142, 16, 84,128, 24,225,142, 10, 99, 41, 87, 89,177, 11, 1,239,236,153,188,168,156,161,146, 8,193, 2,185,174, 13, 45,144,220, +237,224,213, 8,103, 49,194, 96,238,170,134,230,228, 58,110, 0,222,112,152,115,104,134, 6, 70, 1,130,212, 75, 0,182,223,207, +201, 15,111, 47,210, 57, 39, 64,156,137,159, 4, 57, 85,144, 96,126,241, 96,113,187, 81,110,173, 67,137,130,191, 47, 51, 48, 33, + 53,242, 96, 43,147, 34, 55, 35, 9, 86,228,163,214, 8, 81,177, 82, 70, 16, 11,166, 81,181,120, 86, 1, 60,210,211,144, 40,235, + 10,196,227, 85,197, 34, 86,185,177,253,106,178,215, 77, 3, 29,156,108,152, 65, 64,178, 5, 67, 12, 38, 1,147,100,171, 82, 9, + 70, 54, 11, 32, 80,104, 10,156,186, 72,143, 65,194,152, 19, 33, 19,161,174, 87, 64, 81, 64,180, 0,180,182,228, 52, 85, 92,190, + 16,240,224,197, 75,208,103,167, 0, 39, 64,195,228,106,234, 60, 8,214, 78, 0, 62, 92, 16, 62,254, 52,224, 59, 79, 62, 70,177, +247, 57, 82,248,157, 86,243,205, 0, 88, 50,178,102,172,146,162, 94,173,128, 84,181,196, 88,210,220, 78,101, 10, 12, 88,230,182, +194,232,156, 6,201,186, 0, 4,237,204,215, 26,119,246, 38,102, 92, 61,221,212, 86,118,118,253,173, 97,112,186, 91,195, 23,106, +210,219,196, 28, 3, 27,193,158,244, 52,227,210, 91,122,169, 72,247,140,212, 56, 7,160, 13,118,225,129, 15,155,191,241,136,113, +236,167,253, 57,184,112, 17, 31,189,255,215,248,248,103, 63,198,238,238, 30,110,190,242, 26, 24,138,167,143, 31,162,156,153,153, + 68,211,196, 92,185,122, 29, 47,142,158,163,174, 42,239, 66,164,199,140,183,151,248,250,235,223,196,229, 43, 87,240,225, 7, 63, +199,201,241,139,246, 32,103, 40, 94,251,230,155, 8, 49,224,131,247,126,130,247,127,250,215, 40,138, 18, 55,110,189,218,130,165, + 0,112,241,210,101,124,252,203,159,227,253,159,252, 8,203,197, 41,110,189,246, 6, 68, 50, 62,254,213,251, 0,128,247,127,250, +151,248,249, 79,126,132,199, 15,191,156,112, 62, 59,251,102, 57, 56,188,136, 15,127,249,115,252,252,167,127, 9, 0,168,171, 10, +159,126,244, 43,188,247,211,191,196, 7,239,255, 20,204, 1,175,188,250,205,193,227, 93,184,120, 25, 31,253,250, 23,120,255,103, + 63,198,114,113,138,215,223,252, 54, 46, 92,188,140,143,127,253, 1,222,255,217, 95, 97,177, 56,197, 43,223,120,125,240, 60, 23, + 46, 94,194, 39,191,254, 0, 31,188,247,215, 88, 46, 23,120,237,141,183,112,225,226,101,124,242,209, 7,248,224,189,191,194,114, +121,138, 91,175,188,222,190,250, 87, 94,125, 3, 28, 34, 62,252,197, 79,241,171,247,127,130,162, 40,240,210,203,183, 58, 55,216, +115, 22,246, 41, 36,160, 79,250,210, 51,126, 91,251, 4,111,221,162,127,159,156,246, 59, 15,183,129,182, 65,117,218,210,117,109, + 87,222,155,252,251,235,138, 13,246,179, 10,247, 80,118,104,185,115, 85, 24,107,189,135,251,250, 33,113, 84, 59, 55,184,241, 66, + 93,113, 6,163,189,179, 65, 86,156,215, 41, 78,135,172,253, 30, 52,162,125,189,250,248,121, 7, 44,203,115,142, 61, 58,216,168, + 15,114,232, 85,167,165, 69, 64,163, 75, 63,251,205,236,236,236,224,206,157,123,248,229, 47, 63, 65,132, 32, 45,143,145,150,167, +168,170, 26,172, 25, 37,121,246,183,138, 79,176, 64,170, 51, 14,102,192,108,255,208,172, 71,253,117, 4, 22, 36,177,124,114,117, + 7,175, 34, 6,168,219,192, 42,219, 49, 23, 64,136, 51, 64,105, 23, 7, 51, 96, 73, 37, 56, 45,177,146,128,106,181,132,122, 28, + 39,181,126,252,217, 11,159, 23,119,102,148, 5,155,105, 12, 71,204,202, 2, 5, 51, 2,137,153,177,104,192, 60, 50,118,230, 37, + 66, 32, 68, 86,139,133,101,143,101, 21,216, 46,151, 12, 73,155,149, 1, 28, 3,170,156, 1,201,221, 38, 84, 59,201,153, 41, 0, + 82,107, 75, 27,157,147, 96,251, 89,123,125,236, 33, 34, 76,228, 97, 43, 1, 49, 22,173,151, 60,135, 96, 30,242, 57, 65, 53,129, +196, 7, 55,191, 87,109, 66, 55, 73,154, 34,182,247, 79,176,135,117,237,179, 34, 19, 65, 16, 92,131, 13,104,242, 46,158,139, 14, + 61, 37, 54,243, 19,195, 58, 64, 20, 12, 94, 22, 49,230,191,212,136, 37,160,177, 52,183, 92, 77,110, 93,106,239,247, 98,204,184, +120,109, 23,105,126,221,225,233,117, 30, 19,157,115, 13, 58, 39,224, 9, 1, 63,190, 63, 3,223,126,136, 50,255, 12, 84,102,196, + 88, 56, 25,146, 81, 4,251, 60,213,211,240, 76,173, 80, 25,185,205,181,235, 45,237, 76,217,137,175,140,224, 70,238, 22,182,226, + 9,142,190,182, 5, 49,132,128,164, 61,146, 38,117,126,238, 77, 76,170,182,140, 57,247,132,111,226, 84,165, 85, 74, 58,187,204, + 53,244,173, 52,148,123,138,164,241, 25,152, 33,110,160,164,110, 24,199,138,190,202, 76,187,195,171, 15,132,250, 11,121,112,255, + 46, 68, 21,117,174,241,240,254, 93, 92,188,114,213,165, 27,130,167, 79, 30,225,234,213,235,131,162,254,232,225,131,193, 99,141, +255, 92,184,120, 9, 71,207,159, 97,181, 90,182,144, 53,193, 34, 19, 15, 47, 94,198,253, 59,159,155,109,164, 8,190,250,242, 62, + 46, 93,190,226,110, 63,182,127,121,248,197,109,203, 44, 22,193,147,135, 95, 97,119,111, 31,107,105, 45, 19,207,191,141, 58,212, +255,201, 7,247,239,184,203,144,253,237,209,209, 51, 84,213,202, 86, 7, 41,225,203, 7,247,176,127,120, 97,240,251,247,191,184, +141,156, 51, 68, 5, 79, 30, 63, 68, 89,206,112,239,139, 59,173, 86,244,201, 99,127,157,189,103,187,127,239, 14, 82, 54, 15,233, +230,119, 30,220,187, 11,241, 29,207,211,199, 15,219,223, 9, 33,226,240,194, 37, 60,184,127,199, 32, 61, 81, 60,250,234, 1, 46, + 94,186,252,181,118,167,152,148,223,161,155,128,199,103,245, 20, 9,177, 87,101,101,219,254, 94,167, 11, 59, 77,146,206,116, 44, + 89, 93, 43, 60, 3,206,129,202, 4,111, 98, 40, 93,107, 11,179,234,208, 7,127,244, 62, 55, 73,247,134,245,123,147,149,155, 78, + 62,239,186, 33,146,174,203,229,244,235,130,142,163, 34,223,119,157,107,190,208,125,139,189, 51, 50, 88,198,246,206,208,225,223, + 97,148,243, 48, 70, 20,214,215, 62,235,223,172,178,136,120,242,252, 24, 31,252,248, 39, 32, 73, 40,130,162,100, 49, 47,113, 2, + 98, 89,130, 67,132,154,187,137,193,230,200,120,233,202, 30,234,184,143,106, 85,155, 55,121, 22, 8,204, 65, 78, 53,251,199,152, + 61, 70, 52, 66, 68, 80, 6, 66, 8,132,195, 25,163,226, 61,204,100, 5,218,221, 1, 82, 9,142, 25,203, 90, 64,185,130,102, 35, +141,114,104,156,214,204,149,142,152, 12,126, 14, 4,225,210, 96, 97, 98, 16, 69, 20,179, 57, 66, 44, 81,114, 64,201,182, 59,159, +205,230, 40,103,115,128, 45,237,109,190, 51, 3, 17, 33,165,100,207, 1,139, 54,205, 10, 40, 23, 16, 33,228, 92,183, 12,248,198, +211,163,246,124,247, 44,206,178,119, 7,186, 68,108,100, 41, 79, 95,107,136,120, 44,230, 0, 39,173,245,152, 91,217,168,241, 24, + 34,187,156,138, 45, 54, 84,149, 90, 18,174, 16,155,189,171,239, 98, 27,162, 46, 49, 16, 66, 48,135, 51, 54,198,124,208,220,134, +184,100, 15, 36,161, 38,205,141, 21, 28,205, 93,141, 85, 92, 70, 7,243, 92,143,182,131, 87, 8, 66, 48,187,218,198, 84,199, 50, + 60, 4, 1,192,229, 61, 69,121,237, 42, 18, 93, 4,180,158, 60,149,206,108,130,155,253,119, 9,252,232, 73,196,151, 31, 40,102, +207,222, 67, 40, 30, 35,132, 3,112, 8, 88, 49, 99,169,102, 5,203, 69, 1,166,210, 72,240,106, 77, 22,169,152,100,207,221,218, +200,211, 26, 11, 40, 74,119, 60, 36,118,253,151,163, 39, 89,125,162, 38,251,124,204, 93,207, 62, 67, 21, 27,144, 35,219,125,197, + 62, 77, 39,101,136,152,158, 60,248,116,157,213,238, 99,162,220,152,213, 90, 3,214,100, 4,244, 76,215,154,115, 85, 92, 46,166, +158,161, 34,238, 39, 31, 27,214,122, 23,173,218, 9, 5,200,161, 77,114,146,196,106,181,106,243,214, 87,213, 10, 49, 22,254,147, +138,167, 15,191,196, 27,111,127, 23,119,238,124,142,195,131, 11, 0, 17,158, 61,125,186,213,169,229,163, 95,125,128, 55,222,250, + 14,160,192,157, 59,159,117,186,195,162, 4, 17,225,173,119,222, 29,156, 19, 68,220, 69,178, 2, 72, 14,235, 55,144,132,197,108, + 14,161, 81,110,119,162,125, 51,144,117, 2,223,212,209, 89,175,170, 1, 13,235,226,197, 75,184,118,227,101,204,102,243,150, 20, +200, 3,141, 32,144, 82,221,173,111,189,235, 79,169,118,190,155, 37, 30,141, 33,220, 84,215, 29,121,173,247, 59,205, 27, 23,233, +178,172, 11,191, 54,223,250,246,119,135, 92,228, 38,137, 77,167,209, 8, 61, 83,198, 52, 33, 8,236, 19,227,104,157,240,213,144, + 19, 91,239,127,218,162, 52, 24, 64,238, 61,169, 95,239,115,161,181, 9,159,134, 92,193, 73,130,224, 54,217,221,208, 37,176, 33, +167,168,244,183, 3,195,192, 19,157,220,101,235,228,188, 48,206,131,167, 73,186,254,121,150,224, 29,220, 78,244,155,181,100,235, +232, 11, 13,225,248,141,226,206,222,171,150,225, 52,190,201, 83,160, 91,115,216, 4,186,110,136,179,254, 10, 23, 25,184, 64, 25, +127,235,240, 83, 60, 61, 57, 6,115, 68,156,237, 0,180, 68, 85,155, 15,121,157, 97, 17,163, 80,172,132,241,237, 11,130, 87, 94, +185,129, 37,230,152,233, 83, 36,181,244,180, 84,213, 38, 47,131,101,149, 19,153,197,103,140,193, 28,192, 56, 98, 55, 16,202,157, +128, 80, 71, 28,238, 10, 86,124,136, 18, 47,240,101, 54,214,251, 78,148,214,203,173, 33,160, 89,249, 49,168, 51,146,216, 68,154, + 18,136,141,216,215,192,184,101,140,136, 65,145, 53, 34,137, 66,148,205, 47,156, 50,234,148, 16, 99, 68, 89, 6, 96,181, 66,237, +108,119, 98, 56,252,106,175,187, 74,138,153,243, 8, 82,157,219, 36,181,160, 6,235,231,156,141, 19,192,193, 43, 71,178, 25, 46, + 24, 10, 64,146,172,176,176,177,163,141, 29,104, 95,202,156, 45,229,141, 35,155,215,187, 55,128,133, 42,148, 4,181, 48, 88,204, +181, 47,120,170,155, 10, 59, 71, 1,173,238, 58, 80,180,221,114, 48, 20,165,166, 0,100,159,194, 41, 35, 48,163,178,138,134, 16, +162, 77,187, 94,208, 34, 0, 42, 2, 68, 3, 68,146, 83, 81,189, 56, 49, 67,216,238,249, 44,192, 14, 8, 87, 46, 2,247,142,111, + 64,159, 30,131, 98, 66, 67,247,218, 36, 99,219,244,103, 47, 0, 31,175,128,159,253,170,196,159,124,246, 17,240,253,247,160,225, +223,129,112, 68,133, 26,171, 28,145, 86, 12,212,157,214,155,155, 34,194,226, 70, 75, 58, 16,204, 53,206,109,228, 18,195,156, 3, + 40,155, 94, 60, 75, 23,182, 28,124,250,206,208,214,195, 34,251,153, 18,136, 17, 34, 65,132,145, 36,119,222, 24,172, 46,163,115, + 51, 43,233,136,194,218,151,151,250,142,189, 49, 31, 19, 47,250,141, 90,164, 1,224,161, 64, 76, 61,211, 25,157, 16,193,168,118, + 15, 31,139, 25,150,171,133, 65,244,197,220,138,149,127,151, 23, 39,199, 88, 45,151,184,116,233, 50, 46, 94,186,130,199,143,190, +106,161,220, 77,127, 78, 79, 79,240,225, 47,127,142,183,222,254, 30, 56, 4,220,254,244, 35, 40,128,170,182,130,246,193,251, 63, + 65,174,235,118, 99, 41,189,248, 87,248,206, 65, 71, 81,209,195,169,176,217, 39,246, 34, 76, 21,107,153,236,116, 6, 27,216,252, + 20, 10,188,246,205,183,112,251,179,143,240,236,217, 83,168, 42,246,247, 15,241,173,111,191,243, 53,138,229,246,103,213, 9,223, +248,241, 79, 53,197,254,195, 95,252,204,255, 55, 77, 22,142,254,244, 23, 54, 78,210,211,154,250,181, 86, 64,215,141,114, 90,178, + 90,187,242,214, 86,103,190,241,221,233, 80,194,167,152,214,175,175,177,227,155,182,138,104,251,149,236,135,192,208, 20, 22, 65, +147,132, 63,162,169, 93,118,143, 24,215, 49,243, 38,144,139,109,122,120, 12,180,219,116,142,226,222, 18, 0,127, 99, 45,219,186, + 59,215,198,227,176,117,251,235,174, 53,157,121,120,246, 61,187,155, 47,223,248,249,134,223, 64, 1,240,240, 73,141,255,226,119, + 9,255,193,127,252,231,248,159,255, 53,225,197,243,231,208, 88, 32,139,229,130,167,186, 50,242, 22, 50, 78, 17,176, 35, 21,254, +173,223,185,138,217,173,183,113,124,162,152,205,102,168, 83,198,233, 98, 5,166, 12,214,140, 58, 11,250,170,244, 12, 70, 40,140, + 25, 92,148, 10, 42, 15,113,101,190,194,114,118, 8, 74, 25, 71,161,192,147,135, 75,232,241, 67, 80,105,144,106, 74, 13, 20, 14, + 4, 14,168, 26, 47,210,128,150,124, 25, 26,117,140,154,117, 39, 5, 70,102, 11, 83,169,115,237, 58,103,211,163, 71,102,164, 84, +129,185, 64, 40, 10,100,169, 77,163,221,172, 52,196, 38,112, 5,144,170, 26,179, 89, 9,141, 1, 41, 37,131,119,217,215, 52,206, +126, 38,135, 97,153,108, 50,180,152, 53,182, 85, 67, 80,136, 4, 35,169,169, 97,236,145, 21, 26,108, 16,176,134,194, 12,189,130, + 8, 56, 8, 86, 32,104, 29,144, 36, 89, 54,185,103,169,147,123,216, 67, 5,194, 25,148, 3, 40, 40, 50, 1, 1, 17,194,234,219, +120, 99, 54, 36, 97, 20,176,104, 83, 17,155, 50,179,239,160, 3,105,155, 38, 71,158,110, 70,238, 97,111,125,135, 56, 83, 60,130, + 88, 32, 89,112, 41, 40,142,175,238,225,232,244, 58,138,234,174,233,200, 71,148,219,141,190, 36,189,191, 40, 1, 60, 47,128,127, +126,175,196,239,255,226, 5,118,222,248,151, 88, 20,191,143, 90,231,168,101,137,148, 9, 85,157, 81, 85, 75,212,105,225,219, 22, + 91, 25,136, 75,208, 26, 25, 0,245, 76,211,196,199, 93, 51,132, 97,115, 74,205,112,101, 2,155, 41,141, 8,154, 88,109,109,132, +218, 42, 93, 38,187,155,213,148, 76, 72, 34,158, 89, 33,173, 29,172,249,222,180,243,124, 91,128, 85,155, 85, 7,252,231,154,186, + 70, 62,122,171, 91,205,250,179,250, 94,190,199,162,238,155,251, 25,194, 31,252, 95,111,190,252, 10,152, 24, 28, 10, 92,127,249, + 22,158, 62,126,228,201, 48,166,113,124,252,240, 75,220,120,233,101, 92,184,112, 17,143, 31,126,217, 13, 9, 91,164, 95,171,229, + 18, 31,126,240,115,236, 31, 28,224,245, 55,191,109,241,132,169,198,243,103, 79,112,235,149,215, 16,131,145, 56, 66, 40,176,127, +112, 56,248, 80,165, 79,130,234, 77, 24,169, 54, 19,138,114, 54, 31, 6, 7,156,115,222,153,250, 19, 92, 3,155,179,193, 79,101, + 81,226,165,155,183,206, 57, 68, 77, 44,157,245,140,254,115,195,170, 50,167,132,163,231, 79,113,243,149, 87, 17,130,145, 74, 98, +140,216,223, 63, 24, 29,184,221, 59,206,219,128,209,115,153,217, 79,184,199,117,117,177,215, 64,140,245,231, 19, 83, 94,179,151, +158,132,255,117,235,107, 81,237,139,252, 71,197,116,109,135,142, 33,204, 62, 17,237, 58,118,252, 27, 63,223,120,255,173,218, 79, +101,219,206, 96, 95,135,222,245,252, 62, 48,231,245, 14,152, 42,184,250,117,238,112, 26, 52, 44,107,150, 13, 91,250, 81, 82, 5, + 38, 69, 72, 99,230, 59,240,240, 4,248,189,189,135,248, 39,255,228,239,224,225,203,127,129,183,175, 6,236,201, 49,142, 23, 53, +114, 78,224, 16, 80, 20,246,253,226,192, 72, 43,193, 31,221, 92,225,214,239,255, 17,158,211, 45, 44,151,167,182,255, 46, 75,196, +232,110, 22,209,124,197, 77,122,102,137,110,129,108, 2, 62,152, 1,179,249, 14, 14, 67, 6,237, 31, 32,213,115,188,168, 78,241, +240,137, 32,156,124,133, 24,236,112, 87,144,177,208,217, 80, 46,241,184, 18,168, 21,121,118,227, 15,130, 21,114, 98, 11, 85, 73, + 10,172, 18,144,171, 4, 77,117, 27,228,145,221,163,126, 22, 35, 72,141, 4,200, 33,128,189,240, 73, 6,178,154, 6, 62,248,242, + 90, 36,129, 56,128, 40, 90,233, 80, 69, 78,102, 52,162, 57,155, 3, 29,139, 35, 97, 38,181, 67, 78, 80,216,207,144, 42,136, 76, + 6,152,125,167, 42, 48, 55, 61, 38,178,134, 67,146,105,233, 73, 33, 82,218,174,158,178,187,198, 37,228,218,116,237, 33, 24, 84, + 31, 8,238,225,158,218, 27, 34,171,250, 78,220, 79,123, 81,139,107,149,100, 65, 52,104,121,120, 32, 49,100, 66,148, 90,227, 26, +227,106,229, 54,194, 87,169, 75, 6, 85, 0, 49, 3,215,246, 4,197,149,171,200, 56, 52,239,126,172,165, 34,159,249,157, 80, 0, + 23, 11,224,175, 42,194, 63,251, 81,137,195,143,127, 6,240, 47, 80,209, 46, 36, 41,146,123,209,215,110, 17,171, 57, 65,125, 93, +218,144,219, 20,205, 46,189,255,157,240, 32, 28, 37,115,154, 11,240, 38, 32, 56,225,189,137,188, 85,119, 4, 52,117, 64, 99,229, + 10, 53,233,155, 58, 81,143,217, 18, 5,205,145,200, 81,101,242,117, 70,235,215,209,125, 47,219,245,161,219, 11, 19,184,147,221, + 57,129, 87, 92, 34, 23,155,162, 76, 61,159,203, 38, 63,185,137, 65,109, 46,229,201,243,231,248,222,247,127, 23, 33, 70, 60,123, +250, 4, 95,124,113,103, 80, 40,158, 60,122,136,151,191,241, 58,142,143, 95,160, 90, 46, 59, 83,152,230,128,220, 32,253,169, 42, + 43,236,111,189,253, 93,188,241,173,183,241,233, 71,191,194,103,159,124,140, 87,190,241, 42,222,254,254,239,129,152, 81,215, 21, + 30, 63,252, 18, 39, 71,207, 7, 78,170, 77, 8, 73,243,216, 12,139,112,124,244,213, 3,124,235, 59,223,107,247,220, 79, 30,126, +233,122, 64,234, 35,203,231,211, 5, 43,176,170, 86,184,247,197,109,188,250,218,155, 32,102,172,150, 11, 60,121,252, 16,251, 7, +135,231,159,161,206, 8,208, 88,223, 45, 79, 67,183,119, 63,255, 24, 47,189,252, 42,190,253,221, 31,128,136,145,234, 10,143, 31, +125,133,227, 23, 71,163, 9,113,125,223,173,103,145,225,207,195,120, 63,171, 94,104,199,216,238, 55, 92,195, 2,183, 1,174,239, +121, 27, 13, 38,246,158,103,253,144,221, 62, 64,207, 71, 83,123, 47,163, 64, 59,147, 30,162,237,242, 51,234,115,218, 39,210,201, + 90, 99, 12, 93,127, 44,109, 60,253,137, 38,121, 11,155,245,239, 83, 23, 97,205,245,122,228,117,191,233,163, 58,123,222,110,100, +149, 10, 12, 77, 30,206,232, 25,214, 46,137,110,222,241, 16,128,147, 76, 40, 94, 60,199,127,245, 79,111,226,226,223,254,207,241, +139,143, 30,227,198,107, 55,241,135,233, 91,248, 63,255,159, 15,240,112, 81, 97, 30, 44, 87, 92, 41,225, 89, 21,240,238,193,115, +252,209,191,253, 14,158,238,253, 0,171,199, 71,144,213, 41, 22, 68, 56,173, 8, 73,163, 77,185,201, 63,223,108, 18, 50,179, 38, +101, 28,166, 5, 46,236,205, 81,236, 31, 2, 5,227,184,218,195, 50, 61,199,253,103,138,112,252, 0,140, 5, 52,204, 76,174,149, + 45,138,213, 60,101,212,207, 65,193, 60, 6,100, 50,201,104, 89, 52,166, 50, 12, 86, 35,143,165, 4, 72, 78,136,148, 16,153, 92, +126,172,160,108, 80, 42,135,128,130, 3,168,174,177,170,141, 61, 95,184, 9,137,168,201,191,152, 8,129, 3,148,196,125,210,205, + 83, 92,122,156, 11,133,162, 86, 35, 98,169,235,189,193, 64,146,140,130, 8, 37, 17,148,196, 39,232, 96,231, 96,110, 38, 97,131, +139, 57,152,230, 90, 32,230,171, 47, 22,159,197,209, 99, 93,157,181, 45,162,110,103, 23,144,124,156,139,202,136, 16,247, 30,111, + 62,236,220, 58, 90,170,164,214, 12, 28,109,106,153,137,184,137,109, 16,210, 12, 79, 55,115, 13,119, 32, 36, 55,230,129, 24,220, + 12, 8, 42, 2,118, 53,227,194,165, 2,143,142,111, 34, 28,157, 2,156,209, 11,236, 62,247, 57, 27, 1, 20,115,224,127,185, 59, +195, 91,255,252, 41, 94,185,249,191,225,238,206,155, 56, 77,251, 88, 84, 15,176, 74,201,100,145,117, 2, 82, 5,209, 10, 44, 53, +114, 43, 89,237,212, 8, 77, 72, 81,107,110,230,186,236,146, 20,177, 32, 84, 20,125,208, 75,238, 9,207, 29,226,237, 72,139,170, +186,220,141,205,226,216,245,131,140, 38,149,177, 48, 84, 3,104, 87, 53,226, 70, 72,162, 98, 72, 81, 19,146,214,112,196, 90, 55, + 77,234,134, 13,114,215,203,223,253,254,119,244,248,248,197,218,201,216, 16,233,185, 55,245,177, 31,146,149, 67,223,125,179,147, +198, 13,238,157,223,249,125, 60,184,123, 27,207,158, 60, 6,122,113,174,147,134,109,195, 84, 72, 63, 23,184, 71,187,239, 14,115, +234, 7,158,244,133,220, 52,220,159,115,107,132,223,113,134,154,215,215,159,102,148, 54,215,165, 73,182,229, 68, 40,201,249,179, +214,187,221,200,118, 68,147, 54, 60,191, 31,228,164,232,214,241, 61,135,186, 77,175,130,122,143,120,102, 19, 67,103,230,128,119, +206,185,244, 53,190,100,253, 92,128, 30,163,186,255,126,105,203,139,215,205,107,127, 58,227, 61,232,228, 39,182,254, 0,147,118, + 23, 61,122, 70,107, 39, 75, 91,252, 6, 55, 24,205,108,223,169,127,205, 98, 61,186,151, 90,150,186,158, 23,111, 26,173, 93,180, +187,187,116, 91,117,158, 90, 17,209,184,121,152,248, 61, 6,110,127,149,241,159,189,243, 16,255,245,255,244,223,225,179, 11,255, + 17, 22, 95,252, 20, 97,190,143,195,221,128,199,191,248, 23,248,191,254,239,159,224,163,199, 9,251,251,115, 60, 58, 90,225,210, +234, 9,254,195, 63,189,132,249, 31,252, 99, 60,124,182,135,234,244, 49,242,106,129, 69,149,112,116, 90,161, 94, 46, 80,215, 53, +234,106, 9,164, 26, 34,201,100,102, 28,113,101,206,184,126,133,145,119,175,226,180, 46,161, 26,176,172, 87,248,252,209, 18,167, + 15, 30, 96,135,159,163, 40, 75, 84, 73,236, 99,113, 39, 52, 33, 66,157,173,184, 68,177,100,178, 83,141,168, 22, 53, 98,176,131, + 89,196,130, 90,146, 18, 52, 53, 73,108,130, 16,162,163,164,130,212,236,147,217,108,100, 73,129,156, 19,170,170,178,240, 22, 37, + 72,206,158, 4,136,150,145,109, 22,180,217,165, 72, 6,191,138, 42, 2,128,228,159,111,112,185, 97, 82,160,206,138, 40, 9,123, +115, 70,142, 17, 85,205,160,156,123,206, 37,246,121,132,102,237,232,239,113,149, 20,154, 4,140, 26,228, 14,122,193,199,104, 1, +192,106,251, 99, 6, 80, 59,201,107, 22,129, 58,152,139,156,177,197,165,109,178, 73,140,236,135,182, 50,160,157, 22, 25,150,144, + 6,138, 80,143,210, 21,205,110, 64, 19,161,217, 98,101, 25,217,252,207, 65, 40, 5, 88, 49,112,231, 40,162,190,247, 5, 66,126, +208, 49,237,113, 54, 8, 53,112, 71, 37,224, 89,165,120,165,174,241,159,254,187, 11,208,191,255, 23,120,239,232,207,241,244,147, +207,177,122,116, 15,249,197, 99,200,242, 41, 80,159, 64,116, 97,164,203, 38,212,203,191, 23,217, 27,116, 75, 85,235, 94, 44, 49, +153, 0, 0, 13,167, 73, 68, 65, 84,177,217,137,219,147,172, 6, 80, 37, 65,170,205,162,151, 72, 93,138,214,219,252,146,244, 98, +205, 13, 89, 34, 14,230,169,224,210,184,110,250,106,242, 76, 13,132, 39,105,164,116, 54,184, 10, 53,200,171,161, 6,102,130,229, + 89,238,106,114,236,112,243,250,149, 31,174, 86,171,150, 54,223,137,121, 27,151, 26,251,171,216,219,112,104, 47,104,181, 57,137, +152, 8,151, 46, 95,193,225,197,203,184,251,249, 39, 78, 64,153, 8, 81,161,117,180,176,201, 74,199, 38,191,180, 86,118, 75,189, + 67,108, 56,152, 80, 47, 19,136,250,208, 98,251, 60,235,243, 34, 77,153,159,109,186,121, 8,107, 59,158,223,100,243,185,253,124, +167,117,194, 21,122,182,200,212,151, 26,209,168, 1,219,240,232,231, 46,236,211, 69,171,111, 70, 68,163,215,122,158,166,166,251, + 29, 66, 95,121,125,190,102,162,211,105,211,184,112,208,166,119, 60, 76,124,107, 91,169,141,239,125,253,186,108,178,207, 57,187, +241,161, 77, 31,193, 6,239,252,137,247, 73, 95,243, 78, 26,135,173,156, 11,222,167, 30, 15,133,190, 86,163,214, 54,214, 46,211, + 2, 81,151,253, 78, 35,216,253,148,240,237,240, 37,254,199,255,246, 79,176,252,206,127,137, 71,119,191, 4,180, 66,189, 90, 33, +243, 12, 7, 47,221,194,203,151, 9,207,238,221,197,189,231,130,189,148,241, 15,126, 63,227,198,159,252, 61, 60,173,191,137,188, +120, 10, 72,141,228,228,161,170, 90, 33,173, 86,102,194, 33, 22, 57, 26, 67, 64, 41,130, 27, 59, 9,179,139, 37,142,230, 47, 1, +124,128, 34, 39,172,210, 2, 95,156, 2,139,175,158, 98, 46, 15,161, 4, 20,177, 48, 47,239,100,190,233,228,100, 50, 21,155, 40, + 57, 50,106, 42,160,153, 77, 83,158, 5, 33,152,143,121,115,200, 22,148,221, 57,143, 92, 66, 70, 78,184, 50,196, 35,123, 3, 32, +106, 6, 56,129, 27,117, 51,183,114, 39, 81,115,117, 99, 34, 48,147,171,188,122,103,151, 18,152,196, 77,103, 60,195,219,205,105, + 84,196, 10, 34, 43, 52,204,144, 51,131, 36,245, 44,179,187,111, 75, 8,150,224,214, 64,180, 42,217,135, 45, 99,103,177, 23, 44, + 40, 35,194, 28,201, 56,192,236, 72,197,136, 92, 41, 68,100, 9,230,117, 14,219,129,147,102,123, 55,100,191,175,196, 72,205, 26, + 71, 45, 76, 6, 30,186,163, 46,249, 82,144, 33, 9,234,242, 61,181, 61,116,203,138, 16, 96,142,140,186, 0, 78,234, 57,120,113, + 10,226,170, 85, 59,125,221,243,118, 30,129, 47, 37,226,215, 31, 37, 92, 95,252, 26, 7,223,184,138,147,234, 53, 84,143,238, 3, +171, 39,224,124, 2,210, 21, 84,147, 69,218, 52,235, 0,159,204, 3,161, 91,195, 53,254, 13, 48,150,123,112,199,188, 38,218, 23, + 20,160, 26, 92,154, 40, 3, 62,142, 54,168, 9,217,231,170,173, 10,167, 25,109,204,134,205,108,108,185,157, 40,184,217,155,147, +145,249,148, 26, 55, 67, 63,127,181,113,225, 19, 8, 41,148, 24, 69, 89, 34,188,116,245,218, 15,171,170, 26,100,151,179,223, 24, +220, 10,219,173,128,103,162,222,126,150, 58, 61, 30, 8,239,254,238, 31,226,224,194, 69,220,254,236, 19, 44, 78, 79, 7, 97, 15, +155,234,151,162, 99, 67,247,109,100,167,139,252,104,158,162,225, 73, 61,206,183, 30,151, 96,154, 58,154, 54, 28,134,116, 70,209, + 61,251, 0,221, 76,134,163,179,171,223,250, 1, 58, 96,247,141, 11, 75,191, 40,157, 99, 98,223, 54,229,142,254,173, 93,181,210, +250,203,235,199,125,210,118,202, 86,143,161,191,173,120, 15,167,227,150,213,168, 95,239, 53,175, 23,215,241,183,107,251,107, 24, +166,214,210,246, 79,145,166,108, 44,105,235,154,229,236,162,253,117, 25,240,253,151,212, 57, 70,209, 89, 63,219,176, 28,155, 38, +153,206,180,195,233, 93,210,126,151,169,131, 70,171,249,153,149, 18, 86, 79, 78,240,223,255, 89,129,111,255,163,255, 1,247,159, +221, 2, 45,110, 35, 9, 65,165,134,230, 26,181, 20,160,195,111,224,218, 33,176,122,112, 23,127,120,245, 8,239,254,217,159,226, +217,236,143,145, 79,158, 99, 85, 85,168,179,162, 78, 25,139,100,123,208, 92,215,168,106,203,168,174, 50,176, 91, 70, 92,190, 72, +168, 47, 94,192,253,124, 3,143,190, 74,168,150, 39,200,101,137,135, 75,198,139, 47,143, 48, 95,221, 5,202, 96,154,108, 6, 2, + 71,168, 38,100,102,135, 62, 29,106, 37, 64,219, 84, 54,207,251,206,181, 35,127,193,134, 27, 22, 80, 32, 40, 66,199, 62, 38,131, + 75, 9,150,174,149,179,171,113,216, 10,183, 18, 0, 14,254, 93, 50,191,240,236,141, 74,163,200, 8, 28, 90,115,146,214,125,147, +169,133,130,217,247,176,205,235, 80,152,124,137,156, 56, 85,144,216, 62,150, 59,163,146,198, 2, 60,195,201,116, 54,143,183,146, +173,224,208, 59, 17,129, 41,128, 89,188,176,184,118,139, 34,178, 42, 72,172,129, 9, 98,200, 5,216, 53,244,238, 35, 15,143,144, + 21, 95,148, 51, 20, 5,251,243,105,234, 53, 49,205,173,151, 91,151, 8, 51,197,177,251,145, 21, 40, 32,208,168, 56,193, 12,122, +170, 64,126, 49, 24, 52,207, 51,165,247,255,199,110,161,120,162, 37,126,253,235, 99,200,227,247,113,225,250, 5,204,203,235,144, +147, 71,208,250, 4, 74,217, 96,119, 53,148,151, 84, 33, 57, 67,218,203, 69, 78,200, 54,174, 69, 31,125, 12,204,109,222, 64,211, +216,216, 96, 46,142,114,187,211, 39,105,187, 26, 14,212, 64,230, 86,252,205, 39,190,183, 80,116, 84, 69,149, 7,180,112,234, 33, + 46,150,196, 99,207,213,198,179,250,142,181, 44, 10,132,151,174, 93,249, 97, 93, 85,189,131,144, 90,157,104,255,128, 19,227, 73, +244,104,246, 67,191,173, 47, 31,220,195, 87, 15,190,232, 92,207, 54,102,128,233,168,112,141,206, 73, 58,227, 0, 7, 38,139, 3, + 77,129,220, 27, 30,107,236,196,181, 41,227,154,206, 81,216, 55,188,194,115,254,220,182,162,174,235,182,221, 19, 93, 8,157, 85, +216,105,234,181, 97, 51,244, 60,174,135,122, 86,118,253,182,199,155,248,172,233, 92,213,169,221, 23, 13,138,200, 57,145, 6, 58, +243,162,211,198,123,172,255,138,137,206, 42,238,235,255, 70,152,102,193,159,213, 16,124,253,159, 57,139, 12, 55,221, 28,104,111, +172,182, 0, 10,157,108, 65,117,226,123,209, 36, 58,174,125,103, 70,215,150, 24,184,255, 76,240,103, 47, 63,194,127,242,223,252, + 5,110,239,252,125,172, 30,223, 70, 40, 24,117,109, 69,146,221, 99,224,116,177, 2,118,174,226,123, 55, 20,111,190,123, 13, 71, +215,255, 46,100,145,112,154,150, 88, 44, 86,208,106,133, 42,101,156,158, 46,161,171, 21,178,102, 44, 87,181,217,157,230, 26, 66, +130,103,229, 53,220,123,182,143,244,232, 25,248,244, 11, 44, 79, 95,224,100, 33,168,142, 22,224,211, 7,136,101,134,240, 12, 16, +139, 71, 37,159,136,164,246,244,106, 50, 2, 19,147, 5,157,168,100, 47,166,240,132, 45,117,104,221,172,173, 19,162,187, 32,202, +192,183, 32,139, 34,134, 0, 10, 1, 41,231,182, 96,138,116, 54,214,205, 14,159, 36, 27, 75,217,239,237,192, 64,136,236,133,216, +173,155,137, 60,163,222, 65,121, 38, 36,113,182,185, 23,195, 6,159, 12, 80,196, 72,208, 16,109, 50, 55, 59, 57,164,150,149,214, + 8,248,224,132, 44,180, 5,153,217, 38, 79,227,135,185,189,108,110, 34, 91,156,209, 70,185,211,202,132, 8,229,136, 12, 69,102, + 6, 83, 68,244,102, 66,115,215,152, 80,227,119,239,245,145, 84, 93,231,222, 65,172, 13, 1,140,161, 96, 82, 48,219,107, 91, 48, + 99,181, 44, 64,213, 49, 64,117, 59,230,109,231,242,108,158,216,171, 56,199,157, 59,199,120,124,231, 23,160, 34, 98,247,224, 42, +118,203,140, 82, 87, 38, 21, 84, 70,104,160,118,178,138, 78, 62,117,183,187, 36,103, 5, 51,105,219, 4, 68,119,222,163, 70, 30, +233,138,114,234,237,184,133,154,144,180,134,255, 69,174,119,231,102, 70,111,139,121,179,187,111,226,139,225, 25,247, 74,157, 36, +216,175, 86,183,126,109,136,120,170, 40,139, 2,177, 79, 99,106,206, 78,241,221, 66,147, 92,195, 58,117,237,100,141,109,166, 91, +103, 77,157,218,106, 14,138,172, 17,234,244,156, 16, 98,247,162,199,123,211, 62, 65,138,177,221, 26, 83,167,185,222,191,193,206, +124,109,241,252,245,254, 40, 70,214,158,221,206,115, 0, 71, 80, 47, 89,142,166, 87, 27, 3,147, 47, 29, 12,248,195,191,192,152, + 32,215,211, 32,107,215, 96,169,158,163,152,172, 17,223,116, 84, 42, 59,221,249,246, 98,213,253,236, 48,107,121,168,155,159,108, + 32,122, 18, 53, 85, 93,139, 22,154,140,111, 69,103,187, 79, 45,196, 54,218,203,244,164,117, 52, 38,235,141,194,106, 54, 17,239, + 38,175,215,232,169,214,174,221,218, 99,244, 37,107,189,104, 66,157, 10, 75,214,214,179,126,176,104,164, 94, 86,252, 40,173, 73, + 71,122,197, 33,234,208, 89,205,234,218, 59,234,127,147, 21,199, 53,225,122,122,142,127,244,247,222,194,233, 27,255, 16,167,183, +159, 65,242, 9, 64, 37, 10, 38, 44,171, 4, 9, 1, 51,202, 80,169, 81,212, 9, 87,222,250, 62,170,253,155, 72, 71,132, 85, 62, +198,139,133,249, 68, 16, 50, 22,181,128,115, 13, 80,141, 74, 20,146, 5, 17, 25, 33, 2, 39,171,132,197, 23, 79,160,171, 83, 68, + 62,133,204, 74,104, 82, 20, 11, 83,223,172, 56,161,206, 37, 2, 1,165, 15, 57, 73,164,133,183,197,225, 77,226,224,242, 35,119, +232,112,146, 89, 86,139, 49,101,205,168, 83,134, 38,181, 16,150, 96, 50, 53, 33, 43,174,141,133,104,157,106, 32,148, 96, 46,144, +165,106, 53,206, 10,241,203,174, 32, 14, 40, 74,178,166,196,159,211,172,114, 35,152, 11, 80, 22,223,225, 43, 56, 24, 50, 32, 98, +146, 58, 79,137,105, 77, 99, 68, 58, 83, 20,115, 45, 15, 62, 17,215,214, 60,100, 2,229,132,192, 10,167,171, 25, 33,143, 12,244, +101, 16, 10, 39,112, 41,113, 87,144, 26, 54,184,159,160,236, 95,172, 44,228, 27, 95,115, 88,211, 4, 36,168,175, 2, 8,200, 17, +208,218,222,167, 24, 43,188, 89,193,154, 99,155,161, 23, 81, 45, 58, 46,187,172,178, 73, 25,203,222, 4,204, 35,240, 98,119, 6, +156, 30,130,242, 18,202,231,111,103,167,172,140,231, 65, 81, 94, 56,192,243,231, 11, 60,253, 87,255, 7,246,175,191,134, 75, 55, + 94,197,193,225, 1,202,121, 13,206, 43,112,157, 64, 41, 97,166, 0,212, 66,122,200,210,129,252,181,217,234,131, 85,221,215,192, +120, 25,230,234, 23, 81,146,189,139,228,239,177,145,154, 57, 87,221,223,191,182,205,158,186, 79,124, 82,147, 70, 24, 82,196, 29, + 78, 77, 93, 3,145,155,251,199,104,141,222, 92,135,174,241,242,236, 15,130, 34,158, 30, 31,217, 19,162, 31,121,217,201,142, 24, +100,230,242, 61, 3, 11,106,237, 46,125, 15,184,129,120, 70, 24, 74,205, 20, 67, 63,235,241, 70, 81, 39,119,174, 91,201,193, 3, +182,115, 55, 37, 81,159,132, 61, 36, 61,141,206,234,241,238, 99,235, 68,189,173, 94,107,223, 5,124,187, 2,126,227,195,232, 8, + 70,237,225, 29,131,131,158,186,235,222,213, 73, 90, 91,209,158, 69,121, 26,248,183,227,140, 78,103,195,131,245, 37,133,212,211, +169,247,127,105,205,206,100,171,158,125, 64,201, 26,225, 47,211, 70, 49,227,102, 64,135,174,233,131,102, 98,234, 83,104,238,147, +129, 29,190, 78,223, 0, 83, 6, 70,180, 81, 62,176, 65,127, 63,209, 12,109,190, 47, 70, 13,200,100,255,168,231, 58,238,198, 97, + 59,170,253,216, 89, 29, 4,198, 52,141,145,246,201,145, 77,147, 39,195,126,160,223, 61, 42, 1,207,143, 18,254,233, 59, 25,223, +255,247,254, 1, 62,126,241, 18,168,250, 37, 34, 17, 88,106,132, 50, 98,167, 94, 33,167,132,196,115,204,192,184,118,152,145,246, + 94,198, 98, 53, 71,157,158,226,197, 2, 88,157,156, 64,171, 5,132, 25,105,181,194, 42,213,168,181,128,164, 37, 72, 18, 18, 25, +207, 89,115, 5,172, 30,131,164, 70,230,128,144, 92, 58, 21, 2,160,133,153,161, 84, 43,132,130, 33, 5,131, 97,196,182, 36, 22, + 62,162,217,164,223, 45,210,162, 98,250,111, 16,130, 50,148,205, 37, 45, 48, 67, 56,123, 50, 91, 70,134, 21, 89,115,125,244, 9, +152,205, 81, 12, 41,249,245, 35,104, 45, 8,133,145,171,224,103,106,206, 48, 7,178, 88, 26, 42,160, 86,112,115,114, 93, 58,119, + 97, 58,129,129,204,198,108, 71, 54,127,114, 91,209,119,187,104, 17, 69,136,193, 24,211, 73, 16,124,154,180, 29,183,193,195, 77, + 78,186, 37, 47,139, 65,249,158, 86, 70, 33, 27,195, 30,236,170, 20,241,111,156, 39,230,145,177,212,133, 1, 13, 77,194, 91,110, +139, 14,137, 37,227,105, 38,168,154,125, 46, 40,185,174,223, 33,125,113, 15,116,233,216,253,228,102, 58,236,250,251, 6,148, 15, + 66, 40, 1,196, 25,144,139,125, 32, 63,105, 87, 7, 95,127, 82, 26,158, 14,179,157, 29, 64, 51, 86,143,110,227,238,163, 7,224, +253, 27, 40, 14,175, 33,238,238, 33,150, 59,136, 92, 32, 80,133, 8,215,213,179,229,212, 71,223,137,131, 2, 2, 4, 59, 0,246, +189, 41,204, 78,109, 11,161,176, 44, 0,207, 50,208,156,123, 48,188, 15,173,212, 44,238,173,176, 55,200, 64, 99, 23,107,146,181, +108, 46,115,182, 28, 66,240,181, 75,114,200,156,180,161,148,187,143, 60, 53, 5, 95,113,114,122,130,248,210, 75, 47,225,248,248, +196,161,117, 26,144,207,122, 36,214, 65, 79,174,189, 73,185, 63, 13,245,127,167, 97, 81, 82,175,224,201,196, 94,123, 19,137,110, +147,223, 47,141, 38,212, 53, 68, 90,135,214,182, 4, 29,189,135,126, 86,252,111, 16,119, 73,219,183,227,180, 17,143, 56, 31, 12, + 63, 32,152,235,246,215, 49,197,174,166, 65,241, 28,221,218,132, 54,144, 96, 51, 62, 79, 95,139,148,194,189,151, 42,235,139,241, + 45,184,216, 54,136,121,186, 72,210, 70,168,190,185,247,134, 77, 38,157,177, 42, 56,251, 51,162, 45,171,160,142,177,190,246,105, + 79,134,226,208, 25,239, 67,207,127, 63,142,134,108, 58,243, 90,247, 17, 7, 26,166, 39,110, 33,167,110,138, 45,222,246, 28,167, + 9,248,238,197, 35,252,253, 63,255, 99, 44,110,254, 93,240,189,167,216,157, 7, 4, 42, 28, 98, 44,177,207,140,186, 94,161,202, + 1, 23,119, 8,179, 43, 47,227, 56, 31, 32, 85,199,168, 4,208,106,137,168, 21,168, 96,172,132, 81, 6, 66,102, 70, 94, 38,148, +129, 64,243,153,219, 55, 51, 80, 42, 32,115, 72,142, 8,129, 17,162,249,160, 71,142, 40, 96, 86,174,169,180, 9, 48,112, 64, 17, + 24,202, 1,203, 42, 33,186,223,124,118,195, 31,114,253,189,128,157, 84, 38, 72, 82,162, 78,166, 99, 46,102, 51,115,152,115, 8, +181, 74, 10,145,100,187,112, 6,152, 13,134,237,252,240,103,144, 92,155, 38, 57, 70,247,135,177,199, 21,145,246,188,148, 44,200, + 0,230, 89, 77,159,237,210,178, 2, 22,217, 90, 83, 68,204,190,139,206, 25,129,157,160, 40,141,127,131,128, 3,129,185,240,221, +170, 77,249, 51, 16,114,118,163, 26, 82, 79,246,130,229,151,155,129, 60,130,102, 16, 11, 40,148, 72,106, 50, 42,242,166,192,108, +120,221,112,198, 17,133, 54, 23,168,225, 28,180, 8,156,231,139, 39, 69,148, 0, 14, 37,196,167, 89,101,194, 12, 1, 57, 41, 84, +106,219,187,171,192,178,107, 76,235,157, 52,155,156,207,165, 94, 12, 96,197,132,101,125, 17,124,124, 2,224,180,211,116,235,121, +166,116, 61,227,142,189, 96,141, 81,125, 4, 28,157, 64,143,119,161,197, 62,114,220, 65,142, 17,171, 16,109, 61, 17,187, 51,141, +160,110,159, 11, 20,100, 69,253,229, 25,225, 96, 22, 33, 28,145, 41, 32,105, 68,149, 9, 85,149,144,234, 57,144, 42, 16, 58, 14, + 65,243,189, 85,209,150,104, 40,232,165,191,137, 66,145, 91,152,116, 48, 48,252,127, 99,130, 92, 25, 3, 89,227, 0, 91, 8, 12, + 57,109,238, 63,116,213, 62, 23, 23, 55, 3, 0, 74, 93, 38,154, 21, 95, 60,149, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0};